ó
ò™xTc           @   s­  d  d l  m Z d  d l Z 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 m Z d  d l Z d  d l Z d  d	 l m Z d  d l Z d  d
 l m Z m Z m Z d  d l m Z d  d l m Z y e j d ƒ WnB e k
 rAZ e e ƒ j d ƒ r2e  Z! d GHqHe e ƒ ‚ n Xe" Z! d e# f d „  ƒ  YZ$ d e$ f d „  ƒ  YZ% d „  Z& d „  Z' e( d k r©e j) j* ƒ  e' ƒ  n  d S(   iÿÿÿÿ(   t   divisionN(   t   random(   t   random_structure(   t   debug_utils(   t   adptbx(   t   flex(   t	   csv_utils(   t   approx_equal(   t   variatet   normal_distributiont   gamma_distribution(   t   distributions(   t   absolute_structurei   s+   Implementation not available in this build.sA   Skipping exercise_hooft_analysis() with Student's t distribution.t	   test_casec           B   s#   e  Z d  Z e Z d Z d „  Z RS(   i   t   Nt   Ct   Si   c         K   sQ  t  j |  | ƒ | |  _ t j | d |  j d d d d d t d t d t j	 d	 ƒ ƒ|  _
 |  j
 j d
 d ƒ d d	 t j ƒ  |  _ |  j
 j d t d |  j d d ƒ j ƒ  } | j ƒ  } | j ƒ  |  j r:t j d d	 ƒ } t t ƒ  ƒ } t t d | d ƒ ƒ } | | j ƒ  ƒ t j d | | j ƒ  ƒ ƒ } n! t t ƒ  ƒ }	 |	 | j ƒ  ƒ } | j ƒ  }
 |
 j d |
 j ƒ  | |  j d t j | j ƒ  d ƒ ƒ |  _  | |  _! |  j
 j" ƒ  } | j d t d |  j d d ƒ j ƒ  |  _# |  j! j d |  j! j ƒ  |  j# j ƒ  ƒ j ƒ  } | j d | | j ƒ  |  j d |  j  j$ ƒ  ƒ |  _% d  S(   Nt   elementst   volume_per_atomg      4@t   min_distanceg      ø?t   general_positions_onlyt   use_u_anisot   u_isoi
   g¤p=
×£ø?t   sasakigš™™™™™©?t   anomalous_flagt   d_mint	   algorithmt   directi   g      à?i   t   datat   sigmas(&   t   libtbxt   adopt_optional_init_argst   space_group_infoR   t   xray_structureR   t   Truet   FalseR   t   b_as_ut	   structuret   set_inelastic_form_factorsR   t   random_doublet   scale_factort   structure_factorsR   t   f_calct   as_amplitude_arrayt#   set_observation_type_xray_amplitudet   use_students_t_errorsR   t   uniformR   R	   R
   t   sizet   sqrtt   as_intensity_arrayt   customized_copyR   t   doublet   fo2t   fct   inverse_handt   fc_iR   t   fo2_twin(   t   selfR    t   kwdsR5   t   fot   nut   normal_gt   gamma_gt   errorst   gR4   t   xs_iR8   (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/absolute_structure/tests/tst_absolute_structure.pyt   __init__)   sH    		
	2			!%	(   R   R   R   R   (   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (   t   __name__t
   __module__R   R#   R-   R   RB   (    (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/absolute_structure/tests/tst_absolute_structure.pyR   #   s   t   hooft_analysis_test_casec           B   s   e  Z e d  „ Z RS(   c         C   s  | rŠ t  j ƒ  } |  j j ƒ  |  j |  j j ƒ  j ƒ  } | j t j	 | ƒ ƒ } | j
 | j ƒ  ƒ } t j t d d ƒ | | f ƒ n  t j |  j |  j ƒ } | g } t j | ƒ } |  j rrt j | j d d d d ƒ} t j |  j |  j | d | j j ƒ  ƒ}	 | j | ƒ t j |	 d t d	 | ƒ}
 |
 j j ƒ  d
 k  r“|
 j j ƒ  | j j ƒ  k sot ‚ q“n! t | j j ƒ  d d ƒ s“t ‚ x¡ | D]™ } t | j  d d ƒ s»t ‚ t | j! d ƒ sÓt ‚ t | j" d ƒ sët ‚ t | j# d ƒ st ‚ t | j$ d ƒ st ‚ t | j% d ƒ sšt ‚ qšW| r–t j t d d ƒ | j& | j f ƒ |  j r–t j t d d ƒ |
 j& |
 j f ƒ q–n  t | j j' ƒ  d ƒ s´t ‚ t j |  j |  j( ƒ } | g } t j | ƒ } |  j r–t j | j d d d d ƒ} t j |  j |  j( | d | j j ƒ  ƒ}	 | j | ƒ t j |	 d t ƒ}
 |
 j j ƒ  d
 k  rÕ|
 j j ƒ  | j j ƒ  k s“t ‚ qÕn? t | j j ƒ  d d ƒ s·t ‚ t | j j' ƒ  d ƒ sÕt ‚ x¡ | D]™ } t | j  d d ƒ sýt ‚ t | j! d ƒ st ‚ t | j" d ƒ s-t ‚ t | j# d ƒ sEt ‚ t | j$ d ƒ s]t ‚ t | j% d ƒ sÜt ‚ qÜWt j |  j) |  j ƒ } | g } t j | ƒ } |  j rNt j | j d d d d ƒ} t j |  j) |  j | d | j j ƒ  ƒ}	 t j |	 d t ƒ}
 |
 j j ƒ  d
 k  r�|
 j j ƒ  | j j ƒ  k sKt ‚ q�n? t | j j ƒ  d d ƒ sot ‚ t | j j' ƒ  d ƒ s�t ‚ xq | D]i } t | j  d d ƒ sµt ‚ t | j# d ƒ sÍt ‚ t | j$ d ƒ såt ‚ t | j% d ƒ s”t ‚ q”Wd  S(   Ns   delta_F_npp.csvt   wbt   min_nui   t   max_nuiÈ   t   probability_plot_slopet   use_students_t_distributiont   students_t_nuid   g{®Gázt?i    g{®Gáz„?s   npp.csvs   tpp.csvgü©ñÒMb`?g      à?(*   R   R	   R4   R   R(   R5   R1   t   selectR   t   sort_permutationt	   quantilesR/   R   t   writert   openR   t   hooft_analysist$   bijvoet_differences_probability_plotR-   t+   maximise_students_t_correlation_coefficientt   yt   students_t_hooft_analysist   fitt   slopet   appendR"   t   distributiont   degrees_of_freedomt   correlationt   coefficientt   AssertionErrorR   t   hooft_yt   p2_truet   p2_falset   p3_truet   p3_falset   p3_racemic_twint   xt   y_interceptR7   R8   (   R9   t   debugRY   t   observed_deviationst   expected_deviationst   gaussiant   analysest   NPPt   nu_calct
   t_analysist   tPPt   analysis(    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/absolute_structure/tests/tst_absolute_structure.pyt   exerciseU   s–    )		$*!%	+		$*!		$*!(   RC   RD   R#   Rp   (    (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/absolute_structure/tests/tst_absolute_structure.pyRE   S   s   c         C   s–   | j  ƒ  j ƒ  s’ |  j rH t j d ƒ t j d ƒ t j j d ƒ n  t | d t	 ƒj
 d |  j ƒ t r’ t | d t ƒj
 d |  j ƒ q’ n  d  S(   Ni   R-   Rf   (   t   groupt
   is_centrict   fix_random_seedsR   t   seedR   t   set_random_seedt   scitbxRE   R#   Rp   t   Debugt   students_t_availableR"   (   t   flagsR    (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/absolute_structure/tests/tst_absolute_structure.pyt   run_call_backª   s    	c           C   s!   t  j t j d t d d ƒd  S(   Ni   t   keywordsRs   (   s   fix_random_seeds(   R   t   parse_options_loop_space_groupst   syst   argvRz   (    (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/absolute_structure/tests/tst_absolute_structure.pyt   run¶   s    
t   __main__(+   t
   __future__R    R}   t   stdlibR   t   cctbx.developmentR   R   t   cctbxR   t   cctbx.array_familyR   t   iotbxR   R   t   libtbx.utilst   libtbx.test_utilsR   t   scitbx.randomRv   R   R	   R
   t   scitbx.mathR   t   smtbxR   t   students_t_distributiont   RuntimeErrort   et   strt
   startswithR#   Rx   R"   t   objectR   RE   Rz   R   RC   t   utilst   show_times_at_exit(    (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/absolute_structure/tests/tst_absolute_structure.pyt   <module>   s:   0W		