ó
3™xTc           @   s¾   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 Z d  d l Z e e e d d d d „ Z d	 „  Z e d
 k rº e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   itvc_section61_io(   t   xray_scatteringN(   t   flex(   t   OptionParseri    c	   %   	   C   s  | o	 | s t  ‚ t j |  ƒ }	 x; t j ƒ  D]- }
 |
 j ƒ  } | |	 j k r/ d G| GHq/ q/ Wt j j	 j
 } | | d k } | j | ƒ } | rÊ | d k } | j | ƒ } | j ƒ  d k st  ‚ n< | r| d k } | j | ƒ } | j ƒ  d k st  ‚ n  t j t d ƒ ƒ } t j ƒ  } g  } t j ƒ  } t j ƒ  } t j ƒ  } xì|	 j D]á} |	 j | } | | d ƒ }
 | j j ƒ  d k s˜t  ‚ t j d | j d	 t ƒ j | ƒ s$d
 | | j f GH| j d } x7 | j D], } | | k rd G| Gd G| GHn  | } qåWt d ƒ ‚ n  | r_t j j j | | j d  | j d  |
 j ƒ  ƒ } n| ršt j j j | | j d | j d |
 j ƒ  ƒ } nß | j | j  k r;| j d j d ƒ r;|	 j | j  } | j d  } | j! | j d ƒ | j d  } | j! | j d ƒ t j j j | | | |
 j ƒ  ƒ } n> t j j j | | j | j ƒ   | j | j ƒ   |
 j ƒ  ƒ } | j! | ƒ | j! | j" ƒ  ƒ | j! t j# | d ƒ ƒ | j! t j$ | j ƒ  | j% ƒ  ƒ j& ƒ  ƒ | d  k	 r[t( j) j* | ƒ sd | GHd  } q<| j! t j j	 j+ d | d | d | ƒ ƒ q[q[Wt j d | d	 t ƒ } | j | ƒ } t j | | ƒ } | j | ƒ } | d  k rªd  g t, | ƒ } n | j | ƒ } x\t- | | | | ƒ D]E\ } } } }  |	 j | } | j } t j d | d	 t ƒ d  } g  }! x„ | D]| }" | r@| |" d k  r@Pn  | |" }# d }$ | rt|# d k  rtd | |" }$ n  |! j! d | |" |# |$ f ƒ | r Pq q W| s¸t, |! ƒ d k rÝd | | j | f Gd j. |! ƒ GHn  | rÏ|  d  k	 rÏ|  GHt/ j0 j1 t2 |  ƒ j3 ƒ  ƒ HqÏqÏWd  S(   Ns   Warning: missing scatterer:g�íµ ÷Æ°>i   i8   i   i>   i   t   datat   reverses   Increasing: %s (%d)i    s   higher:s   before:s   Data values are not increasing.iúÿÿÿiÿÿÿÿs1   No plots because the directory %s does not exist.t	   plots_dirt   labelt   gaussian_fiti   g{®Gáz„?t    gÍÌÌÌÌÌ @s   @%.3fs   %7.4f %4.2f%ss   Element %-5s(%2d) cc=%.4f:s   , (4   t   AssertionErrorR   t   read_table6111R   t   wk1995_iteratorR   t   entriest   cctbxt   eltbxR	   t   international_tables_stolst   selectt   sizeR   t   size_tt   xranget
   std_stringt   doublet   elementst   table_yt   sort_permutationt   Truet   all_eqt   atomic_numbert   RuntimeErrort   scitbxt   matht   gaussiant   fitt   table_sigmast   fetcht   elementt   atomic_symbolt   appendt   significant_relative_errorst   maxt   linear_correlationt   fitted_valuest   coefficientt   Nonet   ost   patht   isdirt   write_plotst   lent   zipt   joint   syst   stdoutt   writet   opent   read(%   t	   file_namet   table_of_gaussianst   cutofft   low_resolution_onlyt   high_resolution_onlyt   significant_errors_onlyR   t   quiett   verboset   tabt   wkR   t   stolst   selt   range_62t   labelst   errorst   correlationst
   max_errorst	   cmp_plotsR%   t   entryt   prev_yt   yR	   t
   atom_entryt   patched_table_yt   patched_table_sigmast   permt   lt   et   cct   pt   hight   it   st   a(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/itvc_approx.pyt   run
   sÖ    	




		(	 
  "c          C   sä  t  d d ƒ }  |  j d d d d d d d	 d
 d d ƒ|  j d d d d d d d d ƒ|  j d d d d d d d d ƒ|  j d d d d d d d d ƒ|  j d d d d d d d d ƒ|  j d d d d d d d d ƒ|  j ƒ  \ } } t | ƒ d k r|  j ƒ  d  S| j d- k s(t ‚ | j d k rOt j } d  } d! } n5 t j	 } d" } d# } | j
 stt ‚ | j s„t ‚ d$ G| j GHt d% | d d
 | d& | d' | j
 d( | j d) | j d* | d+ | j d, | j ƒ 	d  S(.   Nt   usages'   usage: python %prog [options] file_names   -ts   --tablet   defaultt   wk1995t   actiont   storet   destR;   t   helps   wk1995 or it1992s   -qs   --quiett
   store_truei    s.   do not show values for large errors, only stols   -vs	   --verboses&   show comparison table for each elements   -ls   --low_resolution_onlys0   analyze points up to sin(theta)/lambda=2A-1 onlys   -gs   --high_resolution_onlys1   analyze points beyond sin(theta)/lambda=2A-1 onlys   -ss   --significant_errors_onlys    show errors greater than 1% onlyi   t   it1992t   itvc_wk1995_plotsi   t   itvc_it1992_plotsi   s   table_of_gaussians:R:   R<   R=   R>   R?   R   R@   RA   (   s   wk1995s   it1992(   R   t
   add_optiont
   parse_argsR2   t
   print_helpR;   R   R   R^   Rd   R=   R>   R[   R?   R@   RA   (   t   parsert   optionst   argsR;   R   R<   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/itvc_approx.pyt   main}   sZ    	
			
				t   __main__(   t
   __future__R    t   cctbx.eltbx.developmentR   t   cctbx.eltbxR   t   scitbx.math.gaussian_fitR   t   cctbx.eltbx.gaussian_fitR   t   cctbx.array_familyR   t   libtbx.option_parserR   R5   R.   t   FalseR-   R[   Rm   t   __name__(    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/itvc_approx.pyt   <module>   s    m	0