ó
¾™xTc           @   sm  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
 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 Z d  d l Z e j d	 ƒ e j d	 ƒ d
 d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d d „ Z d d d „ Z d d „ Z d d „ Z d „  Z  e! d k rie  ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   flexN(   t   random_structure(   t   sgtbx(   t   approx_equal(   t   format_cpu_times(   t   adptbxi    g      @c         C   s|  t  j j j ƒ  } xct t g D]U} xLt t g D]>} x5d d g D]'} xd d g D]} | | _ xþt t g D]ð} xçt t g D]Ù} | | _ t |  j	 d | d | d | d | ƒ j
 ƒ  ƒ }	 |	 j d	 |  d | d | ƒ j
 ƒ  }
 t |
 ƒ }	 |	 j d
 d d d ƒ } |	 j ƒ  |	 j d t j |	 j ƒ  j ƒ  d ƒ ƒ } x|  d  d  f d  |
 | f g D]û} | \ } } } d  } | r¦|	 j d t j |	 j ƒ  ƒ ƒ } n  t  j j d	 | d | d | d | d |	 d | d | d | ƒ } | rú| j ƒ  } n  | j ƒ  } t | j d ƒ st ‚ t | j d ƒ s6t ‚ t | j d ƒ sNt ‚ t | j d ƒ sf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 ‚ t | j$ d ƒ söt ‚ t | j% d ƒ st ‚ t | j& d ƒ s&t ‚ t | j' d ƒ s>t ‚ t | j( d ƒ sVt ‚ t | j) |	 j ƒ  ƒ stt ‚ | j* |	 j ƒ  j+ ƒ  j ƒ  j ƒ  k s¡t ‚ | j, | j ƒ  j- t ƒ k sÅt ‚ | j. | j ƒ  j- t ƒ k sét ‚ t | j/ d ƒ st ‚ t | j0 d ƒ st ‚ t | j1 d ƒ s1t ‚ t | j2 d ƒ sIt ‚ t | j3 d ƒ sat ‚ t | j4 d ƒ syt ‚ t | j5 d ƒ s‘t ‚ t | j6 d ƒ s©t ‚ t | j7 d ƒ sÁt ‚ t | j8 d ƒ sÙt ‚ | j9 | k sît ‚ | j: | k st ‚ t | j; d ƒ st ‚ t | j< d ƒ s3t ‚ | j= d  k sHt ‚ | j> d  k s]t ‚ | rv| j? ƒ  d  k	 n | j? ƒ  d  k | j@ ƒ  j ƒ  j ƒ  | j ƒ  j- t ƒ k s¹t ‚ | jA ƒ  j ƒ  j ƒ  | j ƒ  j- t ƒ k sìt ‚ | jB ƒ  j ƒ  jC |	 j ƒ  ƒ st ‚ t | j
 ƒ  ƒ j ƒ  jC |	 j ƒ  ƒ s@t ‚ t | j ƒ  ƒ j ƒ  jC |	 j ƒ  ƒ smt ‚ t | j8 ƒ  d d ƒ s‹t ‚ t | j7 ƒ  d d ƒ s©t ‚ t | j6 ƒ  d d ƒ sÇt ‚ | jD ƒ  jC d ƒ sât ‚ | jE ƒ  jC d ƒ sýt ‚ | jF ƒ  jC d ƒ st ‚ t | jG ƒ  ƒ d k  s6t ‚ t | jH ƒ  ƒ d k  sTt ‚ tI | jJ ƒ  ƒ d k srt ‚ | jJ ƒ  d jC d ƒ s‘t ‚ | jK ƒ  jC d ƒ s¬t ‚ | jL ƒ  j ƒ  jC |	 jM | j ƒ  ƒ j ƒ  ƒ sãt ‚ | jN ƒ  j ƒ  jC |	 jM | j ƒ  ƒ j ƒ  ƒ st ‚ t | jO ƒ  ƒ j ƒ  jC |	 jM | j ƒ  ƒ j ƒ  ƒ sVt ‚ t | jP ƒ  ƒ j ƒ  jC |	 jM | j ƒ  ƒ j ƒ  ƒ s’t ‚ t | jA ƒ  ƒ j ƒ  jC |	 jM | j ƒ  ƒ j ƒ  ƒ sÏt ‚ t | j@ ƒ  ƒ j ƒ  jC |	 jM | j ƒ  ƒ j ƒ  ƒ s	t ‚ t | jQ ƒ  ƒ j ƒ  jC d ƒ s2	t ‚ t | jR ƒ  ƒ j ƒ  jC d ƒ sY	t ‚ | j ƒ  j ƒ  jC | j
 ƒ  j ƒ  ƒ s†	t ‚ | jS ƒ  j ƒ  jC | j
 ƒ  j ƒ  ƒ s³	t ‚ t | jT ƒ  d d ƒ sÑ	t ‚ t | jU ƒ  d d ƒ sï	t ‚ t | jV ƒ  d d ƒ s
t ‚ t | jW ƒ  d d ƒ s+
t ‚ t | jX ƒ  d d ƒ sI
t ‚ t | jY ƒ  d d ƒ sg
t ‚ t | jZ ƒ  d d ƒ s…
t ‚ | j[ ƒ  j\ d d ƒ s£
t ‚ | j] ƒ  j\ d d ƒ sÁ
t ‚ | j^ ƒ  j\ d d ƒ sß
t ‚ | j_ ƒ  j\ d d ƒ sý
t ‚ | j` ƒ  \ } } | j ƒ  j\ d d ƒ s-t ‚ | j ƒ  j\ d d ƒ sKt ‚ | ja ƒ  \ } } | j ƒ  j\ d d ƒ s{t ‚ | j ƒ  j\ d d ƒ s™t ‚ | jb ƒ  \ } } | j ƒ  j\ d d ƒ sÉt ‚ | j ƒ  j\ d d ƒ sçt ‚ t | jc ƒ  d ƒ st ‚ | jd d t je |	 j ƒ  j ƒ  d# ƒ d t je |	 j ƒ  j ƒ  d$ ƒ ƒ t | j8 ƒ  d ƒ sct ‚ t | jT ƒ  d  ƒ s~t ‚ | j ƒ  } t | j8 ƒ  d ƒ s¥t ‚ t | jT ƒ  d  ƒ sÀt ‚ | jf d | jB ƒ  jg ƒ  d! ƒ } | jB ƒ  j ƒ  | jB ƒ  j ƒ  k  st ‚ | jf d" | jB ƒ  jh ƒ  d d ƒ } | jB ƒ  j ƒ  | jB ƒ  j ƒ  k  sat ‚ qaWq‡ Wqt WqX WqE Wq2 Wq Wd  S(%   Nt   ls_wunit_k1t   mlt   directt   fftt   d_mint   anomalous_flagt   cos_sin_tablet	   algorithmt   xray_structuret   fractiongš™™™™™¹?t   max_freeiÿàõt   datai    t   abcdt   f_calct   f_maskt   f_obst   r_free_flagst   target_namet   sf_and_grads_accuracy_paramsg      ð?g        g•Ö&è.>i   g�íµ ÷Æ°>t   k_isotropici   t   k_anisotropici   g      @g      à?t   d_maxg      à?gUUUUUUÕ?(i   t   mmtbxt   f_modelt#   sf_and_grads_accuracy_master_paramst   extractt   Truet   FalseR   R   t   abst   structure_factorsR   t!   structure_factors_from_scattererst   generate_r_free_flagst#   set_observation_type_xray_amplitudet   arrayR   t   complex_doubleR   t   sizet   Nonet   customized_copyt   hendrickson_lattmant   managert	   deep_copyt   infoR   t   alpha_work_maxt   AssertionErrort   alpha_work_meant   alpha_work_mint   beta_work_maxt   beta_work_meant   beta_work_mint   completeness_6_inft   completeness_d_min_inft   completeness_in_ranget   fom_work_maxt   fom_work_meant   fom_work_mint   ml_coordinate_errort   ml_phase_errort   number_of_reflectionst   number_of_reflections_mergedt   average_bijvoet_matest   number_of_test_reflectionst   countt   number_of_work_reflectionst   overall_scale_k1t   pher_free_maxt   pher_free_meant   pher_free_mint   pher_work_maxt   pher_work_meant   pher_work_mint   r_allt   r_freet   r_workt   sf_algorithmR   t   target_freet   target_workt   twin_fractiont   twin_lawt	   hl_coeffst   f_model_freet   f_model_workR   t   all_eqR   t   k_anisotropic_workt   k_anisotropic_testt   target_wt   target_tt   lent   k_masksR   t
   f_obs_workt   selectt
   f_obs_freet   f_calc_wt   f_calc_tt   f_bulk_wt   f_bulk_tt   f_model_scaled_with_k1t   scale_k1t
   scale_k1_wt
   scale_k1_tt
   scale_k2_wt
   scale_k2_tt
   scale_k3_wt
   scale_k3_tt   figures_of_meritt   all_approx_equalt   phase_errorst   phase_errors_workt   phase_errors_testt
   alpha_betat   alpha_beta_wt   alpha_beta_tt   model_error_mlt   update_coret   doublet   resolution_filterR   t	   d_max_min(   R   R   t
   sfg_paramsR/   t   hlR   R   R   R   R   t   fct   flagst   fmt   xfft   xrsR   R   RU   t   fmodelt   fit   at   bt   fmodel_(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   t_1   s   				
*%$	 -$$ 33'--76=<=<''--	"*&c         C   s²  | j  ƒ  j | j  ƒ  ƒ s" t ‚ x‰d d d g D]x} d G| GHt j j d |  d | d | d | ƒ } | j ƒ  } | d k r° t j j d |  d | d	 | d | d | ƒ }	 nx | d k rÛ | j ƒ  }	 |	 j d	 | ƒ nM | d k r(| j ƒ  }	 |	 j d	 | ƒ |	 j ƒ  }	 |	 j	 d |  d
 t
 ƒ n  |	 j ƒ  j  ƒ  j | j  ƒ  ƒ sOt ‚ |	 j ƒ  }
 | d k r—t j j d |  d | d | d | d | ƒ } nr | d k rÂ| j ƒ  } | j d | ƒ nG | d k r	| j ƒ  } | j d | ƒ | j ƒ  } | j	 d
 t
 ƒ n  | j ƒ  j  ƒ  j | j  ƒ  ƒ s0t ‚ | j ƒ  } | d k r~t j j d |  d | d	 | d | d | d | ƒ } n„ | d k r¯| j ƒ  } | j d	 | d | ƒ nS | d k r| j ƒ  } | j d	 | d | ƒ | j ƒ  } |	 j	 d |  d
 t
 ƒ n  | j ƒ  j  ƒ  j | j  ƒ  ƒ s)t ‚ | j ƒ  j  ƒ  j | j  ƒ  ƒ sPt ‚ | j ƒ  } | d k snt ‚ t |
 | ƒ sƒt ‚ |
 | k  s•t ‚ t | d ƒ s2 t ‚ q2 Wd  S(   Ni   i   i   s   case:R   R   R   R   t   f_part1t   update_f_calct   f_part2g333333Ó?i    (   R   RX   R2   R   R   R.   RO   R/   Rw   t   update_xray_structureR!   Rˆ   RŠ   R   (   t   xR   t   fc1t   fc2R   R{   t   caseR‚   t   r1t   fmodel2t   r2t   fmodel3t   r3t   fmodel4t   r4(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   t_exercise_3_1£   s„    "		''''c    
      C   sý  t  j d t j d ƒ d d d d d	 d
 d d t d t d t ƒ }  |  j d d ƒ |  j d d d d ƒ j ƒ  } t  j d t j d ƒ d |  j	 ƒ  d d  d d	 d
 d d t d t d t ƒ } | j d d ƒ | j d d d d ƒ j ƒ  } t  j d t j d ƒ d |  j	 ƒ  d d! d d	 d
 d d t d t d t ƒ } | j d d ƒ | j d d d d ƒ j ƒ  } | j
 d | j ƒ  | j ƒ  | j ƒ  ƒ } t | j ƒ  ƒ } | j d d ƒ } t j j j ƒ  }	 d |	 _ t d |  d | d | d | d | d |	 ƒ d  S("   Nt   space_group_infos   P 4t   elementst   Ot   Nt   Ci
   t   volume_per_atomiÈ   t   min_distanceg      ø?t   general_positions_onlyt   random_u_isot   random_occupancyt   tablet   wk1995R   g       @R   R	   t	   unit_cellR   R   gš™™™™™¹?RŒ   R   R�   RŽ   R   R{   (   Rš   R›   Rœ   t
   CCCCCCCCCCR¥   (   R   R   R   R˜   R!   R"   t   scattering_type_registryR$   R   R¤   R,   R   R#   R/   R&   R   R   R   R    R   R—   (
   RŒ   R}   t   x1R�   t   x2RŽ   t   fc_allR   R   R{   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   exercise_3_f_part1_and_f_part2í   sN    	
					,	$c    
      C   s!  t  j d t j d ƒ d d% d& d	 d
 d d d d t d t d t ƒ }  |  j d d ƒ |  j d d d |  j ƒ  ƒ |  j	 d d d d ƒ j
 ƒ  } t | ƒ } |  j ƒ  }  |  j d d d |  j ƒ  ƒ t j j j ƒ  } d | _ | j d d ƒ } t j j d |  d | d | d  | ƒ } | j ƒ  } | j ƒ  d! k s=t ‚ t | j ƒ  | j ƒ  ƒ s^t ‚ | j ƒ  t | j d ƒ s€t ‚ t | j d" ƒ s˜t ‚ t | j ƒ  d" ƒ s³t ‚ | j ƒ  | j ƒ  d# k  sÕt ‚ | j ƒ  } | j ƒ  } | j ƒ  }	 d  | | g k r|	 d  k st ‚ d  S('   NR˜   s   P 4R™   Rš   R›   Rœ   i   t   Hi_   R�   iÈ   Rž   g      ø?RŸ   R    R¡   R¢   R£   t   valuegÍÌÌÌÌÌì?t	   selectionR   g      @R   R	   g        R   gš™™™™™¹?R   R   R   R   g333333Ã?i    gü©ñÒMb`?(   Rš   R›   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   set_occupanciest   hd_selectionR$   R   R#   t   deep_copy_scatterersR   R   R   R    R   R&   R.   R/   RO   R2   R   t   update_f_hydrogens_grid_searcht   k_ht   b_ht   update_f_hydrogenst   two_fofc_mapt   fofc_mapt   anomalous_mapR+   (
   RŒ   R}   R   R{   R   R‚   t	   fmodel_dct   map1t   map2t   map3(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   exercise_4_f_hydrogens  sF    				!

c          C   s›   d }  d d d g } x | D]w } | GHt  j d t j | ƒ d d |  d
 d |   d d d d d t d t d t ƒ } | j d d ƒ t d | ƒ q Wd  S(   NiF   s   P 1s   P 4s	   C 1 2/c 1R˜   R™   Rš   R›   Rœ   i   i   R�   id   Rž   g      ø?RŸ   R    R¡   R¢   R£   R   (   Rš   R›   Rœ   (   R   R   R   R˜   R!   R"   R¦   R‡   (   t
   n_elementst   sgst   sgR   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt
   exercise_1@  s    		c    	      C   sS  t  j d t j d ƒ d d d d d	 d
 d d t d t d t ƒ }  |  j d d ƒ t |  j d d ƒ j ƒ  ƒ } t	 j
 j j ƒ  } xÉ d d g D]» } | j d d d d ƒ } t	 j
 j d |  d | d | d | ƒ } t | j ƒ  ƒ j ƒ  } t | j d |  d | j ƒ j ƒ  ƒ j ƒ  } t j | | ƒ } t t j | ƒ d ƒ s� t ‚ q� Wd  S(    NR˜   s	   C 1 2/c 1R™   Rš   R›   Rœ   i2   R�   id   Rž   g      ø?RŸ   R    R¡   R¢   R£   R   g       @R
   R	   R   gš™™™™™¹?R   iÿàõR   R   R   R   R   g        (   Rš   R›   Rœ   (   R   R   R   R˜   R!   R¦   R#   R$   R   R   R   R   R    R&   R.   R   R%   R   R   R   t   sumR2   (	   R   R   R{   R   R~   R‚   t   f_calc_1t   f_calc_2t   delta(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt
   exercise_2P  s.    	
		s   C 2c         C   sÙ  t  j d t j d |  ƒ d d3 d d d	 d
 d d t d t d t ƒ } | j d d ƒ | j d d d d ƒ j ƒ  } t	 j
 j d | ƒ } | j d | ƒ d } t j t | ƒ j ƒ  ƒ d k sÆ t ‚ d d d d d d g } t j | j ƒ  t j | ƒ ƒ } t	 j j j | j ƒ  | ƒ } d t j | j ƒ  j ƒ  ƒ d } t	 j j j | d d ƒ }	 d  }
 t j | j ƒ  j ƒ  |
 ƒ } |
 | | j ƒ  |	 | j ƒ  } | j d! | ƒ } t | ƒ } | j  d" t ƒ } t	 j j! j" ƒ  } d | _# g  } | j$ d# d$ ƒ x< | j% ƒ  j& ƒ  D]( } | j% ƒ  j' | ƒ } | j( | ƒ qWx d  | g D]} t	 j j d | d% | d& |	 d' | d( | d) | d* | d+ | ƒ } t* | j+ ƒ  d ƒ s®t ‚ t* | j, ƒ  d ƒ sÉt ‚ t* | j- ƒ  d ƒ sät ‚ t* | j. ƒ  d |	 ƒ st ‚ t* | j ƒ  | ƒ st ‚ t* | j/ ƒ  j ƒ  | ƒ s?t ‚ t* | j ƒ  j ƒ  | ƒ sNt ‚ qNWt	 j j d, | d- | d% | d& |	 d' | d( | d) | d* | d+ | ƒ 	} t* | j+ ƒ  d ƒ sÄt ‚ t* | j, ƒ  d ƒ sßt ‚ t* | j- ƒ  d ƒ sút ‚ t* | j. ƒ  d |	 ƒ st ‚ t* | j ƒ  | ƒ s4t ‚ t* | j/ ƒ  j ƒ  | ƒ sUt ‚ t* | j ƒ  j ƒ  | ƒ svt ‚ | j ƒ  j ƒ  j0 | j ƒ  ƒ s�t ‚ | j1 ƒ  d j ƒ  j0 | j ƒ  ƒ sÈt ‚ t	 j j d, | d- | d% | d) | d* | d+ | ƒ } | j+ ƒ  d. k st ‚ | j2 d/ t ƒ t* | j+ ƒ  d ƒ s>t ‚ t* | j, ƒ  d ƒ sYt ‚ t* | j. ƒ  d |	 d0 ƒ s{t ‚ t* | j ƒ  | d0 ƒ s™t ‚ t	 j j d, | d- | d% | d) | d* | d+ | ƒ } | j+ ƒ  d. k sät ‚ | j2 d/ t ƒ | j+ ƒ  d1 k  st | j+ ƒ  ƒ ‚ | j3 ƒ  | j ƒ  | j ƒ  | j. ƒ  d | j ƒ  } t	 j j d, | d- | d% t | j d! | ƒ ƒ d) | d* | d+ | ƒ } | j+ ƒ  d. k s­t ‚ | j2 d/ t ƒ | j+ ƒ  d2 k  sÕt ‚ d  S(4   NR˜   t   symbolR™   Rš   R›   Rœ   i–   R�   iÈ   Rž   g      ø?RŸ   R    R¡   R¢   R£   R   g      @R   R	   t   miller_arrayR   i    iñÿÿÿiûÿÿÿi   i   g      ð?g      @g®Gáz®×?g      P@g      1@R   t   use_lattice_symmetryt   reflections_per_binid   R   t   k_maskR   R   R   t   bin_selectionsR   R   R   g333333Ó?t   fastg-Cëâ6?gaÃÓ+ei?ga2U0*©C?(   Rš   R›   Rœ   (4   R   R   R   R˜   R!   R"   R¦   R$   R   R   t   masksR.   t   shell_f_masksR   t   meanR#   R   R2   R   t   u_cart_as_u_starR¤   t   b_as_uR   t   extR   t   indicest   pow2t
   d_spacingsRÊ   Rx   R*   R,   R&   R   R    R   t   setup_binnert   binnert
   range_usedR­   t   appendR+   R   RO   RN   R[   R^   Rf   RX   t   f_maskst   update_solvent_and_scaleR   (   RÆ   RŒ   R   t   mask_managerR   t   b_cartt   u_starR   t   ssRÊ   t   scaleR   t   f_model_dataR   R   R   R{   RË   t   i_bint   selt   k_isotropic_R‚   t   d(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   exercise_5_bulk_sol_and_scalingi  sÌ    	
	'!#"		!%	!!'+	"	$%	c         C   s,  t  j d ƒ t j d ƒ t j d t j d |  ƒ d d@ dB d d d d d t d t d t	 ƒ } | j
 d d ƒ | j d d d | j ƒ  ƒ | j d d d d ƒ j ƒ  } t j j d | ƒ } | j d | ƒ d } t j t | ƒ j ƒ  ƒ d k sü t ‚ t j d | j ƒ  ƒ } t j | j ƒ  t j | ƒ ƒ } t j j j | j  ƒ  | ƒ } d t j! | j" ƒ  j ƒ  ƒ d } t j j j# | d d  ƒ }	 d! }
 t j$ | j ƒ  j% ƒ  |
 ƒ } |
 | | j ƒ  |	 | j ƒ  } | j& d" | ƒ } t | ƒ } | j' ƒ  } t j j( j) ƒ  } d | _* xÏdC dD dE dF g D]»} | \ } } | j d | d | j ƒ  ƒ t j j d | d) | d* |	 d+ | d, | d- | d. | ƒ } | j+ ƒ  } | j, ƒ  d/ k sÆt | j, ƒ  ƒ ‚ | j- ƒ  t. | j/ | ƒ s t | | j/ | j, ƒ  g ƒ ‚ t. | j0 d ƒ st ‚ t. | j, ƒ  d ƒ s3t ‚ | j1 ƒ  | j, ƒ  d0 k  sUt ‚ t j j d | d) | d- | d. | ƒ } | j+ ƒ  } | j, ƒ  d1 k s t ‚ | j2 d2 d3 d4 t	 d5 t	 d6 d7 ƒ t. | j/ | ƒ sÚt ‚ t. | j0 d ƒ sòt ‚ t. | j, ƒ  d ƒ st ‚ | j2 d5 t	 d6 d4 ƒ | j, ƒ  d8 k  s;t ‚ t j j d | d) | d- | d. | ƒ } | j, ƒ  d1 k szt ‚ | j2 d2 d3 d4 t d9 t	 d5 t	 d6 d7 ƒ t. | j/ | ƒ sºt ‚ t. | j0 d ƒ sÒt ‚ | j, ƒ  d: k  s/t ‚ q/W| j3 d; d< ƒ } | j4 d= d> ƒ t5 j6 j7 d> ƒ s(t ‚ d  S(G   Ni    R˜   RÆ   R™   Rš   R›   Rœ   i   R«   i
   R�   iÈ   Rž   g      ø?RŸ   R    R¡   R¢   R£   R¬   g333333ã?R­   R   R   R	   RÇ   R   t   crystal_symmetryg      ð?g      @g®Gáz®×?g      P@g      1@R   i   gš™™™™™Ù¿gš™™™™™É?gš™™™™™Ù?gš™™™™™É¿gš™™™™™é?R   RÊ   R   R   R   R   g{®Gáz”?g{®Gáz„?g      Ð?t   cyclesi   RÌ   t   update_f_part1t   refine_hd_scattering_methodt   slowgš™™™™™©?t   showgš™™™™™™?t   map_types   2mFo-DFct	   file_names   tmp_tst_fmodel.mtz(   Rš   R›   Rœ   (   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   (   R«   (
   R«   R«   R«   R«   R«   R«   R«   R«   R«   R«   (   i    g333333ã?(   i   gš™™™™™Ù¿(   gš™™™™™É?gš™™™™™Ù?(   gš™™™™™É¿gš™™™™™é?(8   t   randomt   seedR   t   set_random_seedR   R   R   R˜   R!   R"   R¦   R®   R¯   R$   R   R   RÍ   R.   RÎ   RÏ   R#   R   R2   R   t,   random_traceless_symmetry_constrained_b_cartRç   RÐ   R¤   RÑ   R   RÒ   R   RÓ   RÔ   RÕ   RÊ   Rx   R*   R,   R&   R   R    R   R/   RO   R±   R   R²   R³   R´   t   update_all_scalest   map_coefficientst   export_f_obs_flags_as_mtzt   ost   patht   isfile(   RÆ   RŒ   R   RÜ   R   RÝ   RÞ   R   Rß   RÊ   Rà   R   Rá   R   R   R   R{   t   itR¬   t   k_h_R‚   R¸   t
   map_coeffs(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt%   exercise_5_bulk_sol_and_scaling_and_HÖ  sš    	
	'!#"		$
0
		i
   c         C   s  t  j d ƒ t j d ƒ t j d t j d | ƒ d d d  d d d d d t d t d t	 ƒ } t
 | j d d d d ƒ j ƒ  ƒ } | j d d ƒ t j j d | d | ƒ } | j d t	 ƒ | j d |  ƒ \ } } | | k j t ƒ d | j ƒ  } t |  | d ƒ st ‚ d  S(!   Ni    R˜   RÆ   R™   Rš   R›   Rœ   i   R«   i
   R�   iÈ   Rž   g      ø?RŸ   R    R¡   R   R   R
   t   mean_distancei   R   R   Ré   t   threshold_percentg      Y@g      à?(   Rš   R›   Rœ   (   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   (   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   shake_sites_in_placeR   R   R.   Ró   t%   top_largest_f_obs_f_model_differencesRD   R*   R   R2   (   Rþ   RÆ   RŒ   R   R‚   t   vRå   t   n(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt.   exercise_top_largest_f_obs_f_model_differences'  s(    	
	$		#c   	      C   s‡  t  j d ƒ t j d ƒ t j d t j d |  ƒ d d d! d d d d d t d t d t	 ƒ } t
 | j d d d d ƒ j ƒ  ƒ } | j d d ƒ t j | j ƒ  j ƒ  d ƒ } t j | j ƒ  j ƒ  d ƒ } t j j d | d | d | d | ƒ } t
 | j ƒ  ƒ j ƒ  } t
 | j ƒ  ƒ j ƒ  } t
 | j ƒ  ƒ j ƒ  } t t j | | ƒ d ƒ sat ‚ t t j | | ƒ d ƒ sƒt ‚ d  S("   Ni    R˜   RÆ   R™   Rš   R›   Rœ   i   R«   i
   R�   iÈ   Rž   g      ø?RŸ   R    R¡   R   R   R
   Rý   i   i   i   R   R   R   R   i   (   Rš   R›   Rœ   (   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   (   R«   (
   R«   R«   R«   R«   R«   R«   R«   R«   R«   R«   (   Rï   Rð   R   Rñ   R   R   R   R˜   R!   R"   R#   R$   R   Rÿ   Rx   R   R*   R   R   R.   t   f_model_no_scalesR   RÏ   R2   (	   RÆ   RŒ   R   t   k_isot   k_anisoR‚   R}   R   t   fmns(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   exercise_f_model_no_scales>  s0    	
	$	"c         C   s¥  t  j d ƒ t j d ƒ x„d d d g D]s} xjd d g D]\} xSd d g D]E} x<t t g D].} x%t t g D]} xd d g D] } t j d	 t j	 d
 |  ƒ d d3 d5 d d d d d t d t d t ƒ } | j
 d d ƒ | j d d d | j ƒ  ƒ | j d d ƒ j ƒ  } | j ƒ  j ƒ  GHt j j d | ƒ }	 |	 j d | ƒ d }
 t j t |
 ƒ j ƒ  ƒ d k s|t ‚ t j d  | j ƒ  ƒ } t j | j ƒ  t j | ƒ ƒ } t j j j  | j! ƒ  | ƒ } d t j" | j# ƒ  j ƒ  ƒ d! } t j j j$ | | | ƒ } | d k r>t j% | j ƒ  j ƒ  | ƒ } n t j% | j ƒ  j ƒ  d" ƒ } | | | j ƒ  | |
 j ƒ  } | j& d# | ƒ } t | ƒ } | d k rÇ| j& d# | j ƒ  | ƒ } n  | j' ƒ  } | rø| j d d$ d | j ƒ  ƒ n  | j( d% d& ƒ | j) d' d ƒ } | j* | ƒ } t j j d | d | d( | ƒ } | j+ d) t d* t d+ | ƒ | j ƒ  j ƒ  t j, | j ƒ  j ƒ  j ƒ  ƒ } | j ƒ  j& d# | ƒ } | j- d, | ƒ | j. ƒ  } | j ƒ  j& d# | j ƒ  j ƒ  d ƒ } t j j d | j/ ƒ  d( | j0 ƒ  d- | j1 ƒ  d. | j  ƒ  d/ | j2 ƒ  d, | j3 ƒ  d0 | j4 ƒ  d1 | ƒ } | j. ƒ  } t5 | | ƒ s‰ t | | g ƒ ‚ q‰ Wqv Wqc WqP Wq= Wq* Wd  S(6   Ni    g-Cëâ6?g      ð?g     ˆÃ@g333333Ó?i2   R   R   R˜   RÆ   R™   Rš   R›   Rœ   i   R«   i
   R�   Rž   RŸ   R    R¡   R¢   R£   R¬   gš™™™™™é?R­   R   g       @RÇ   R   Rç   g      @i   R   g        Rý   i   R   R   RÌ   Rì   Ré   Rˆ   R   R   R   RŠ   R   (   Rš   R›   Rœ   (	   Rš   R›   Rœ   Rš   R›   Rœ   Rš   R›   Rœ   (   R«   (
   R«   R«   R«   R«   R«   R«   R«   R«   R«   R«   (6   Rï   Rð   R   Rñ   R!   R"   R   R   R   R˜   R¦   R®   R¯   R$   R   R   R*   R   RÍ   R.   RÎ   RÏ   R#   R2   R   Rò   Rç   RÐ   R¤   RÑ   R   RÒ   R   RÓ   RÔ   RÕ   RÊ   Rx   R,   R&   Rÿ   t   random_remove_sites_selectionR`   Ró   t   random_doublet   updateRO   R   R   R   R  Rˆ   RŠ   R   (   RÆ   Rà   t   k_solt   b_solt   set_h_occ_to_zeroRé   t   apply_scale_toRŒ   R   RÜ   R   RÝ   RÞ   R   Rß   RÊ   R   Rá   R   R   R   Rã   R‚   t   f_part1_dataRˆ   R�   t   zeroR¸   R’   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt"   exercise_6_instantiate_consistencyX  s„    	
	'	!#!"	(	c           C   sK   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  GHd  S(   N(
   Ræ   R  R  R  Rü   RÀ   RÅ   Rª   R¼   R   (    (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   run§  s    t   __main__("   t
   __future__R    t   cctbx.array_familyR   t   mmtbx.f_modelR   t   cctbx.developmentR   t   cctbxR   t   libtbx.test_utilsR   t   libtbx.utilsR   Rï   R   t   mmtbx.maskst   os.pathRö   Rð   Rñ   R‡   R—   Rª   R¼   RÀ   RÅ   Ræ   Rü   R  R  R  R  t   __name__(    (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/regression/tst_fmodel.pyt   <module>   s:   ‘	J	-	&		mQO	