ó
,™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
 m Z d  d l m Z d  d l Z e d	 d
 d „ Z d „  Z d „  Z e d k rÌ e e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   xray(   t   eltbx(   t   miller(   t   flexN(   t   user_plus_sys_time(   t   easy_pickleg�íµ ÷Æ°>gü©ñÒMbP?c      	   C   sE  |  j  ƒ  } |  j  ƒ  } |  j  ƒ  } |  j  ƒ  } |  j  ƒ  }	 | j d | d d ƒ | j d d ƒ | j d d ƒ i  }
 |
 j t j j j ƒ | j d |
 ƒ |
 j t j j j ƒ |	 j d |
 ƒ t j	 d |  d | d t
 ƒ } | j ƒ  d	 G| GH| r^t ƒ  } t j j d
 | d | d d ƒ d |  d
 | d d ƒ j ƒ  j ƒ  } d | | j ƒ  f GHnW t ƒ  } t j | j ƒ  | j ƒ  | j ƒ  | j ƒ  | j ƒ  ƒ j ƒ  } d | j ƒ  GHt j | ƒ } d | GHxp| | | | |	 f D]Y}  |  j ƒ  j ƒ  | s™x— d t
 f d t f f D]z \ } } t ƒ  } | j d |  d d d | ƒ j ƒ  } d | | j ƒ  f Gt j | | j ƒ  t
 d ƒ } d | j ƒ  GHqWn  x  d d f D]’ \ } } t ƒ  } t j j d
 | d | d | ƒ d |  d
 | d d ƒ j ƒ  } d | | j ƒ  f Gt j | | j ƒ  t
 d ƒ } d | j ƒ  GHq¦WqãWHd  S(    Nt   d_mint   tablet
   n_gaussiant   wk1995t   it1992t   custom_dictt   crystal_symmetryt   anomalous_flags   d_min:t
   miller_sett   wing_cutofft   exp_table_one_over_step_sizei    t   xray_structuret	   algorithmt   ffts0   fft exp function wing_cutoff=%3.1e: %.2f secondss   direct simple: %.2f secondss1   wing_cutoff for following fft calculations: %3.1es   direct cos+sin function:s   direct cos+sin table:t   directt   cos_sin_tables     %-24s %.2f seconds,i   s   r-factor: %.6fs   fft exp function:s   fft exp table:iœÿÿÿ(   s   fft exp function:i    (   s   fft exp table:iœÿÿÿ(   t   deep_copy_scattererst   scattering_type_registryt   updateR   t   xray_scatteringt   two_gaussian_agarwal_isaacsR   t   one_gaussian_agarwal_1978R   t	   build_sett   Falset   show_summaryR   R   t   structure_factorst   from_scattererst   f_calct   datat   elapsedt   structure_factors_simplet	   unit_cellt   space_groupt   indicest
   scatterersR   t   abst   Truet!   structure_factors_from_scattererst   targets_least_squares_residualt   target(   t	   structureR   t   fft_onlyt   wing_cutoff_referencet   wing_cutoff_otherst   structure_ngt   structure_5gt   structure_4gt   structure_2gt   structure_1gR   R   t   timert   f_calc_referencet	   calc_typet   cos_sin_flagR"   t   lsR   (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/command_line/structure_factor_timings.pyt   timings   sŒ    		
													c         C   sÁ   y t  j |  ƒ SWn$ t k
 r' ‚  n t k
 r7 n XyN |  j d ƒ sY |  j d ƒ rl t j j d |  ƒ St j	 j
 d |  ƒ j ƒ  SWn$ t k
 rœ ‚  n t k
 r¬ n Xt d |  ƒ ‚ d  S(   Ns   .ress   .inst   filenamet	   file_names   Unknown file format: %s(   R   t   loadt   KeyboardInterruptt	   Exceptiont   endswithR   R/   t
   from_shelxt   iotbxt   pdbt   inputt   xray_structure_simplet   RuntimeError(   R?   (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/command_line/structure_factor_timings.pyt   read_structureV   s         c         C   s+  d d y |  j  d ƒ } Wn t k
 r4 t } n Xt } |  }  |  | =t |  ƒ d k ro t j t j IJd  S|  d } y' g  |  d D] } t	 | ƒ ^ q‡ } Wn" t k
 rÄ t j t j IJd  SX| g  k ræ d d d d g } n  t
 | ƒ } | j ƒ  Hx' | D] } t d	 | d
 | d | ƒ qWd  S(   Ns%   usage: cctbx.structure_factor_timingss-    [--fft_only] coordinate_file [d-spacing ...]s
   --fft_onlyi    i   i   i   i   R/   R   R0   (   t   indexRB   R   R+   t   lent   syst   stderrt   runt   __doc__t   floatRJ   R   R=   (   t   argst   iR0   R?   t   argt
   d_spacingsR/   R   (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/command_line/structure_factor_timings.pyRO   c   s2      

'
t   __main__i   (   t
   __future__R    t   cctbxR   R   R   t   cctbx.array_familyR   t	   iotbx.pdbRE   t   libtbx.utilsR   t   libtbxR   RM   R   R=   RJ   RO   t   __name__t   argv(    (    (    sY   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/command_line/structure_factor_timings.pyt   <module>   s   I		