ó
3™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 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  d l Z d  d l Z e e d d
 d d „ Z d „  Z d „  Z e d k rð e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   itvc_section61_io(   t   rez_rez_grant(   t
   identifier(   t   xray_scatteringN(   t   OptionParser(   t   user_plus_sys_time(   t   easy_picklet   itvc_fits_plotsi    c	         C   s)  t  j |  ƒ }	 d }
 d } t | ƒ d k r‹ t | d j d ƒ ƒ d k r‹ g  | d j d ƒ D] } t | ƒ ^ q` \ }
 } | d } n  | rá | rá t j j | ƒ s½ d | GHd  } n  |
 d k rá | d  k	 sÞ t	 ‚ qá n  t
 j j j } | | d k } | j | ƒ } d } x|	 j d d g D]ø} t | ƒ d k rS| | k rSq)n  | |
 | k } | d 7} | syq)n  i  } | | d	 <| d k rK| } d
 d l m } | ƒ  } | j | d k } t j j j | j j | ƒ | j j | ƒ | j j | ƒ t j d t ƒ ƒ } t j j j | j | j | j t j d t ƒ ƒ } nft j | t ƒ } | d k r|	 j | } t j j j | | j | j ƒ   | j  | j ƒ   t j d t ƒ ƒ } t j j j | | j | j ƒ   | j  | j ƒ   t j d t ƒ ƒ } n° t! j" } | | d k } | j | ƒ } t j j j | t! j# | j ƒ   t! j$ | j ƒ   t j d t ƒ ƒ } t j j j | t! j# | j ƒ   t! j$ | j ƒ   t j d t ƒ ƒ } | rèt
 j j j% d | d | d | d | ƒ | | <n| d  k	 r[t | j& | ƒ d k st	 ‚ t
 j j j' d | d | d | j& | d d | d | d | ƒ | | <n™ | s˜t
 j j j( d | d | d | d | d | ƒ | | <n\ t j j j) d | d | d | d | ƒ } | j* } t j+ d | j, ƒ  d
 d | ƒ g | | <t- j. j/ ƒ  d t0 | ƒ } t1 j2 | | ƒ q)Wd  S(   Ni   i    t   ,i   s<   No plots because target directory does not exist (mkdir %s).g�íµ ÷Æ°>s   O2-t   SDSt   fit_parametersiÿÿÿÿ(   t	   fit_inputt   labelt   null_fitt   null_fit_moret   paramst   full_fitt	   plots_dirt   verboset   stolt   gaussian_sums   %s_fits.pickle(3   R   t   read_table6111t   lent   splitt   intt   ost   patht   isdirt   Nonet   AssertionErrort   cctbxt   eltbxt   gaussian_fitt   international_tables_stolst   selectt   elementst&   cctbx.eltbx.development.hydrogen_plotsR   t   stolst   scitbxt   matht   gaussiant   fitt   datat   sigmasR   t   Falset   wk1995t   Truet   entriest   table_yt   sizet   table_sigmasR   t   table_2_stolt   table_2_o2minust   table_2_sigmast   zig_zag_fitst   allt   decremental_fitst   incremental_fitst   fit_with_golay_startst   final_gaussian_fitt   fitted_gaussiant   table_xt   syst   stdoutt   flushR   R   t   dump(   t	   file_namet   argst   cutoffR   t   zig_zagt   six_termt	   full_fitsR   R   t   tabt   chunk_nt   chunk_it   it
   stols_moret   selR&   t   i_chunkt   elementt   flagt   resultst   wrk_lblR   t   fiR   R   t   entryt   rrg_stols_moret	   rrg_stolst   best_mint   gt   pickle_file_name(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/itvc_fits.pyt   run   sÈ    12	 

					 c          O   s1   t  ƒ  } z t |  | Ž  Wd  d | j ƒ  GHXd  S(   Ns   CPU time: %.2f seconds(   R   R[   t   elapsed(   RD   t   kwt   timer(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/itvc_fits.pyt   run_and_timew   s    	c          C   s?  t  d d ƒ }  |  j d d d d d d 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 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) ƒ|  j ƒ  \ } } t | ƒ d* k  r]|  j ƒ  d  S| j | j | j g j t	 ƒ d+ k  sŠt
 ‚ | j d  k	 r®t j | j ƒ } n d  } t j j j d, | j d- | j ƒ } | j rð| j ƒ  } n  t d. | d d/ | d* d0 | j d1 | d2 | j d3 | j d4 | d5 | j ƒ d  S(6   Nt   usages?   usage: python %prog file_name [n_chunks,i_chunk] [scatterer...]s   -vs	   --verboset   actiont
   store_truet   defaulti    t   helps&   show comparison table for each elements   -cs   --cutofft   typet   floati   t   metavart   FLOATs   maximum sin(theta)/lambdas   -qs   --quicks   quick mode for debuggings   -ns   --max_n_termsR   i   t   INTs    maximum number of Gaussian termss   -es   --max_max_errorg{®Gáz„?s   max acceptable max_errors   -ss
   --six_terms/   fit six-term Gaussians using Golay based startss   -zs	   --zig_zags-   zig-zag fits starting from six-term Gaussianss   -rs   --full_fitst   stores   pickled six-term Gaussian fitsi   i   t   max_n_termst   max_max_errorRC   RD   RE   R   RF   RG   RH   R   (   R   t
   add_optiont
   parse_argsR   t
   print_helpRG   RF   RH   t   countR/   R   R   R   t   loadR   R    R!   R   Rk   Rl   t   quickR_   RE   R   (   t   parsert   optionsRD   RH   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/itvc_fits.pyt   main~   s`    	
-		

			t   __main__(   t
   __future__R    t   cctbx.eltbx.developmentR   R   t1   cctbx.eltbx.development.create_n_gaussian_raw_cppR   t   cctbx.eltbxR   t   scitbx.math.gaussian_fitR'   t   cctbx.eltbx.gaussian_fitR   t   libtbx.option_parserR   t   libtbx.utilsR   t   libtbxR   R?   R   R-   R   R[   R_   Ru   t   __name__(    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/itvc_fits.pyt   <module>   s    	h		3