ó
4™xTc           @   sÊ   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l Z d  d l	 Z
 d  d l m Z d  d l m Z d  d l m Z d	 e f d
 „  ƒ  YZ d „  Z d „  Z e d k rÆ e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   xray_scattering(   t   tiny_pse(   t   flexN(   t   line_feeder(   t   OptionParser(   t   adopt_init_argst   tablec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s,   t  |  t ƒ  ƒ t j | ƒ j ƒ  |  _ d  S(   N(   R   t   localsR   R   t   symbolt   element(   t   selft   atomic_numbert   xt   yt   sigmas(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/kissel_io.pyt   __init__   s    c         C   s  t  j j j } |  j } t j | j ƒ  t ƒ } d } xÞ t	 | j ƒ  ƒ D]Ê } x" | | | | k  rs | d 7} qR W| | | | k r• t
 | | <qI | d k rI | | d | | k  oÈ | | k  n rI | | | | d | | | | k  rt
 | | d <qt
 | | <qI qI W| S(   Ni    i   (   t   cctbxt   eltbxt   gaussian_fitt   international_tables_stolsR   R   t   boolt   sizet   Falset   xranget   True(   R   t   xit   xkt	   selectiont   i_kisselt   i_itvc(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/kissel_io.pyt   itvc_sampling_selection   s    	8((   t   __name__t
   __module__R   R   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/kissel_io.pyR      s   	c   
      C   sÿ  d  } d  } t j ƒ  } t j ƒ  } t j ƒ  } t t |  ƒ ƒ } x�| j ƒ  } | j r^ Pn  | j d ƒ r¡ t | j	 d ƒ d ƒ } t
 | ƒ | k sßt ‚ qE | j d ƒ rä t | j	 d ƒ d ƒ } t
 | ƒ | k sßt ‚ qE | j d ƒ rE | | k st ‚ x× | j ƒ  } | j s$t ‚ | d k r=t | _ Pn  | j	 ƒ  } x& | D] }	 t |	 ƒ d k sPt ‚ qPW| j t | d ƒ ƒ | j t | d ƒ ƒ | d d	 d
 k sºt ‚ | j t d | d d	 ƒ ƒ qqE qE t t
 | ƒ | | | | ƒ S(   Ns      FORM: ATOMIC NUMBER=t   =i   s      FORM: # ELECTRONS=s           X (1/A)s    *** END OF DATA ***i   i    iüÿÿÿt   Es
   0.00000005(   t   NoneR   t   doubleR   t   opent   nextt   eoft
   startswitht   floatt   splitt   intt   AssertionErrorR   t   lent   appendR   (
   t	   file_nameR   t   number_of_electronsR   R   R   t   lft   linet   vals_strt   val_str(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/kissel_io.pyt
   read_table"   s@    	 	 (c          C   sÚ  t  d d ƒ }  |  j d d d d d d d	 d
 d d ƒ|  j ƒ  \ } } t | ƒ d k  ri |  j ƒ  d  S| j } xa| D]Y} t | ƒ } | j d k r  qy n  t j	 | j t
 ƒ j ƒ  } | j | k } | j j | ƒ } | j j | ƒ }	 t j | j ƒ  d ƒ }
 | j | ƒ } t j | |	 ƒ } t j j j | |	 |
 | ƒ } | j d ƒ } | j G| j Gd | t j | ƒ t j | ƒ f GHxG t | |	 | | | ƒ D]- \ } } } } } d | | | | | f GHq WHqy Wd  S(   Nt   usages+   usage: python %prog [options] file_name ...s   -cs   --cutofft   typeR*   t   defaultg333333@t   metavart   FLOATt   helps   maximum sin(theta)/lambdai   t   Esgü©ñÒMb@?g�íµ ÷Æ°>s)   max error < %.1fA-1 abs, rel: %7.4f %7.4fs   %7.4f %7.4f %7.4f %7.4f %7.4f(   R   t
   add_optiont
   parse_argsR.   t
   print_helpt   cutoffR6   R
   R   t   wk1995R   t   fetchR   t   selectR   R   R%   R   t   at_xt   abst   scitbxt   matht   gaussiant   fitt   significant_relative_errorsR   t   maxt   zip(   t   parsert   optionst   argsRA   R0   t   tabt   wkt   selt   tab_xt   tab_yR   t   wkyt
   errors_absRJ   t
   errors_relR   R   t   ft   eat   er(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/kissel_io.pyt   mainB   s:    	
	 !.t   __main__(   t
   __future__R    t   cctbx.eltbxR   R   t   cctbx.array_familyR   t   cctbx.eltbx.gaussian_fitR   t   scitbx.math.gaussianRG   t   libtbx.str_utilsR   t   libtbx.option_parserR   t   libtbxR   t   objectR   R6   R\   R    (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/kissel_io.pyt   <module>   s   	 	