ó
Ó™xTc           @   s‚  d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d e d e e ƒ g d	 ƒ Z d
 e d e e ƒ g d	 ƒ Z d
 e d e e ƒ g d	 ƒ Z d e d e e ƒ g d	 ƒ Z d „  Z d „  Z e d e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" e# d k r~e" ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   flex(   t   approx_equalt	   show_diff(   t   format_cpu_times(   t   refinement_flags(   t   StringIOs‹  Refinement flags and selection counts:
  individual_sites       = %s (9 atoms)
  torsion_angles         = %s (9 atoms)
  rigid_body             = %s (9 atoms in 6 groups)
  individual_adp         = %s (iso = 9 aniso = 9)
  group_adp              = %s (9 atoms in 6 groups)
  tls                    = %s (9 atoms in 6 groups)
  occupancies            = %s (9 atoms)
  group_anomalous        = %s
s   %5si   s‹  Refinement flags and selection counts:
  individual_sites       = %s (0 atoms)
  torsion_angles         = %s (0 atoms)
  rigid_body             = %s (0 atoms in 0 groups)
  individual_adp         = %s (iso = 0 aniso = 0)
  group_adp              = %s (0 atoms in 0 groups)
  tls                    = %s (0 atoms in 0 groups)
  occupancies            = %s (0 atoms)
  group_anomalous        = %s
s‹  Refinement flags and selection counts:
  individual_sites       = %s (4 atoms)
  torsion_angles         = %s (4 atoms)
  rigid_body             = %s (4 atoms in 3 groups)
  individual_adp         = %s (iso = 4 aniso = 4)
  group_adp              = %s (4 atoms in 3 groups)
  tls                    = %s (4 atoms in 3 groups)
  occupancies            = %s (4 atoms)
  group_anomalous        = %s
c       #   C   s“  t  j d d d d d d d d d d d d d d d d g ƒ j ƒ  }  t  j d g ƒ t  j d g ƒ t  j d d g ƒ t  j d d g ƒ t  j d g ƒ t  j d	 d
 g ƒ g } t  j d g ƒ t  j d g ƒ g t  j d d g ƒ t  j d d g ƒ g t  j d g ƒ g t  j d	 d
 g ƒ g g } t j d t d t d t d t d t d t d t d t d |  d |  d | d |  d |  d | d | d | d | ƒ S(   Ni    i   i   i   i   i   i   i
   i   i   t   individual_sitest   torsion_anglest
   rigid_bodyt   individual_adpt	   group_adpt   tlst   occupanciest   group_anomaloust   sites_individualt   sites_torsion_anglest   sites_rigid_bodyt   adp_individual_isot   adp_individual_anisot	   adp_groupt   group_ht   adp_tlst   s_occupancies(   R   t   intt   as_boolt   size_tR   t   managert   True(   t   barrt   iarrt   oarr(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   all_defined5   s:    E!'	c       #   C   s™  t  j d d d d d d d d d d d d d d d d g ƒ j ƒ  }  t  j d g ƒ t  j d d g ƒ t  j d d g ƒ t  j d g ƒ t  j d d d	 g ƒ t  j d
 g ƒ g } t  j d g ƒ t  j d d g ƒ g t  j d d g ƒ g t  j d g ƒ g t  j d d d	 g ƒ t  j d
 g ƒ g g } t j d t d t d t d t d t d t d t d t d |  d |  d | d |  d |  d | d | d | d | ƒ S(   Ni   i    i   i   i   i   i   i   i   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   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   all_defined_1U   s:    E$-	c         C   s²   | | g j  t ƒ d k s! t ‚ | r6 |  j ƒ  }  n! | d  k	 rW |  j d | ƒ }  n  t ƒ  } |  j d | ƒ | r’ d d GH| j ƒ  GH| GHn  t	 | j ƒ  | ƒ s® t ‚ d  S(   Ni   t	   selectiont   logt   -iP   (
   t   countR   t   AssertionErrort	   deep_copyt   Nonet   selectR   t   showt   getvalueR   (   t   rmt   expected_resultR'   R"   R*   t   out(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   compareu   s    !		c          C   sþ  t  j d d d d d d d d d d d d d d d d g ƒ j ƒ  }  t  j d d d d d d d d d d d d d d d d g ƒ j ƒ  } t  j d d d d d d d d d d d d d d d d g ƒ j ƒ  } t  j d d d d d d d d d d d d d d d d g ƒ j ƒ  } t  j d d d d d d d d d d d d d d d d g ƒ j ƒ  } t d t ƒ  d t ƒ t d t ƒ  d t d t ƒ t d t ƒ  d t d |  ƒ t d t ƒ  d t d | ƒ t d t ƒ  d t d | ƒ t d t ƒ  d t d | ƒ t d t ƒ  d t d | ƒ t d t	 j
 ƒ  d t ƒ t d t	 j
 ƒ  d t d t ƒ t d t	 j
 ƒ  d t d |  ƒ t d t	 j
 ƒ  d t d | ƒ t d t	 j
 ƒ  d t d | ƒ t d t	 j
 ƒ  d t d | ƒ t d t	 j
 ƒ  d t d | ƒ t ƒ  } | j ƒ  } t | _ t | _ t | _ t | _ t | _ t | _ t | _ t | _ d  | _ d  | _ d  | _ d  | _ d  | _ d  | _ d  | _ d  | _ d  | _ t  ƒ  } | j! d | ƒ | j" ƒ  t k sÉt# ‚ t  ƒ  } | j! d | ƒ | j" ƒ  t k sút# ‚ d  S(   Ni   i    R,   R-   R'   R"   R#   ($   R   R   R   R/   R    t   expected_result_allR   t   expected_result_none_truet   expected_result_mixR   R   t   expected_result_none_falseR'   t   FalseR   R   R	   R
   R   R   R   R   R(   R   R   R   R   R   R   R   R   R   R   R*   R+   R&   (   t   sel_allt   sel_nonet   sel_all_truet   sel_all_falset   sel_mixR,   t   rm_dcR.   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exercise_deepcopy_show_selectƒ   sX    EEEEE																				c          C   sw  t  ƒ  }  t j d d d d d d d d d d d d d d d d g ƒ j ƒ  } |  j d | ƒ } | j so t ‚ | j s~ t ‚ | j s� t ‚ | j	 sœ t ‚ | j
 s« t ‚ | j sº t ‚ | j sÉ t ‚ | j sØ t ‚ t j d d d d d d d d d g	 ƒ j ƒ  } t j d g ƒ t j d d g ƒ t j d g ƒ t j d g ƒ g } t j d g ƒ g t j d d g ƒ t j d g ƒ g t j d g ƒ g g } t | j | ƒ s³t ‚ t | j | ƒ sËt ‚ t | j | ƒ sãt ‚ t | j | ƒ sût ‚ t | j | ƒ st ‚ t | j | ƒ s+t ‚ t | j | ƒ sCt ‚ t | j | ƒ s[t ‚ t | j | ƒ sst ‚ d  S(   Ni   i    R"   i   i   i   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,   R9   t   rm_selt   barr_sel_mixt   iarr_sel_mixt   oarr_sel_mix(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt,   exercise_deepcopy_show_select_compare_arrays´   s8    	E0$c          C   s«  t  ƒ  }  t j d d d d d d g ƒ j ƒ  } t j d g ƒ t j d d g ƒ t j d g ƒ g } t j d g ƒ t j d d g ƒ g t j d g ƒ g g } |  j d | d | d	 | d
 | d | d | d | d | d | ƒ 	}  t ƒ  } |  j d | ƒ t | j	 ƒ  d t
 d t t ƒ g d ƒ ƒ s4t ‚ t j d d d d d d d d d d d d d d d d d d d d d d g ƒ j ƒ  } t j d g ƒ t j d g ƒ t j d d g ƒ t j d d g ƒ t j d g ƒ t j d d g ƒ t j d g ƒ t j d d g ƒ t j d g ƒ g	 } t j d g ƒ t j d g ƒ g t j d d g ƒ t j d d g ƒ g t j d g ƒ g t j d d g ƒ g t j d g ƒ t j d d g ƒ g t j d g ƒ g g } t |  j | ƒ sçt ‚ t |  j | ƒ sÿt ‚ t |  j | ƒ st ‚ t |  j | ƒ s/t ‚ t |  j | ƒ sGt ‚ t |  j | ƒ s_t ‚ t |  j | ƒ swt ‚ t |  j | ƒ s�t ‚ t |  j | ƒ s§t ‚ d  S(   Ni   i    i   i   i   i   R   R   R   R   R   R   R   R   R   R#   s“  Refinement flags and selection counts:
  individual_sites       = %s (13 atoms)
  torsion_angles         = %s (13 atoms)
  rigid_body             = %s (13 atoms in 9 groups)
  individual_adp         = %s (iso = 13 aniso = 13)
  group_adp              = %s (13 atoms in 9 groups)
  tls                    = %s (13 atoms in 9 groups)
  occupancies            = %s (13 atoms)
  group_anomalous        = %s
s   %5si   i   i   i   i   i
   i   i   (   R    R   R   R   R   t   inflateR   R*   R   R+   t   tuplet   strR   R&   R   R   R   R   R   R   R   R   R   R   (   R,   R   R   R   R.   t   barr_resultt   iarr_resultt   oarr_result(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exercise_inflateÒ   sP    	'6<			
+W6!'<c          C   sÛ   t  ƒ  }  |  j d t j g  ƒ ƒ }  t ƒ  } |  j d | ƒ | j ƒ  t k sU t ‚ |  j d t j g  ƒ d t	 d t	 d t	 d t	 d t	 d t	 d	 t	 d
 t	 d t	 ƒ 
}  t ƒ  } |  j d | ƒ | j ƒ  t k s× t ‚ d  S(   Nt   next_to_i_seqsR#   R   R   R   R   R   R   R   R   R   (
   R    t   addR   R   R   R*   R+   R0   R&   R   (   R,   R.   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exercise_add_1a	  s&    					c          C   s”  t  ƒ  }  |  j d t j d d d g ƒ d t d t d t d t d	 t d
 t d t d t d t ƒ 
}  t ƒ  } |  j d | ƒ | j ƒ  t k s” t	 ‚ t j
 d d d d d d d d d d d d d d d d d d d g ƒ j ƒ  } t j d g ƒ t j d g ƒ t j d d g ƒ t j d d g ƒ t j d g ƒ t j d d g ƒ g } t j d g ƒ t j d g ƒ g t j d d g ƒ t j d d g ƒ g t j d g ƒ g t j d d g ƒ g g } t |  j | ƒ sØt	 ‚ t |  j | ƒ sðt	 ‚ t |  j | ƒ st	 ‚ t |  j | ƒ s t	 ‚ t |  j | ƒ s8t	 ‚ t |  j | ƒ sPt	 ‚ t |  j | ƒ sht	 ‚ t |  j | ƒ s€t	 ‚ t |  j | ƒ d  S(   NRH   i   i   i   R   R   R   R   R   R   R   R   R   R#   i    i   i   i   i   i	   i
   i   i   i   (   R    RI   R   R   R4   R   R*   R+   R0   R&   R   R   R   R   R   R   R   R   R   R   R   t   compare_selectionsR   (   R,   R.   RD   RE   RF   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exercise_add_1b   s:    					N093Bc          C   sþ  t  ƒ  }  |  j d t j d d d g ƒ d t d t d t d t d	 t d
 t d t d t d t ƒ 
}  t ƒ  } |  j d | ƒ t | j ƒ  d t	 d t
 t ƒ g d ƒ ƒ s³ t ‚ t j d d d d d d d d d d d d d d d d d d d g ƒ j ƒ  } t j d g ƒ t j d g ƒ t j d d d g ƒ t j d d d g ƒ t j d g ƒ t j d d g ƒ t j d g ƒ g } t j d g ƒ t j d g ƒ g t j d d g ƒ t j d d g ƒ g t j d g ƒ g t j d d g ƒ g t j d g ƒ g t j d g ƒ g t j d g ƒ g g } t |  j | ƒ sBt ‚ t |  j | ƒ sZt ‚ t |  j | ƒ srt ‚ t |  j | ƒ sŠt ‚ t |  j | ƒ s¢t ‚ t |  j | ƒ sºt ‚ t |  j | ƒ sÒt ‚ t |  j | ƒ sêt ‚ t |  j | ƒ d  S(   NRH   i   i   i   R   R   R   R   R   R   R   R   R   R#   s“  Refinement flags and selection counts:
  individual_sites       = %s (12 atoms)
  torsion_angles         = %s (12 atoms)
  rigid_body             = %s (12 atoms in 7 groups)
  individual_adp         = %s (iso = 12 aniso = 12)
  group_adp              = %s (12 atoms in 7 groups)
  tls                    = %s (12 atoms in 7 groups)
  occupancies            = %s (12 atoms)
  group_anomalous        = %s
s   %5si    i   i   i   i   i   i	   i
   i   i   i   i   (   R    RI   R   R   R   R   R*   R   R+   RB   RC   R&   R   R   R   R   R   R   R   R   R   R   R   RK   R   (   R,   R.   RD   RE   RF   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exercise_add_1cG  s@    	
			
+N9'3<<c          C   s¿  t  ƒ  }  |  j d t j d d d d g ƒ d t d t d t d	 t d
 t d t d t d t d t ƒ 
}  t ƒ  } |  j d | ƒ t | j ƒ  d t	 d t
 t ƒ g d ƒ ƒ s¶ t ‚ t j d d d d d d d d d d d d d d d d d d d d g ƒ j ƒ  } t j d g ƒ t j d d g ƒ t j d d g ƒ t j d g ƒ t j d d d g ƒ t j d g ƒ g } t j d g ƒ t j d d g ƒ g t j d d g ƒ g t j d g ƒ g t j d d d g ƒ t j d g ƒ g g } t |  j | ƒ st ‚ t |  j | ƒ st ‚ t |  j | ƒ s3t ‚ t |  j | ƒ sKt ‚ t |  j | ƒ sct ‚ t |  j | ƒ s{t ‚ t |  j | ƒ s“t ‚ t |  j | ƒ s«t ‚ t |  j | ƒ d  S(   NRH   i    i
   i   i   R   R   R   R   R   R   R   R   R   R#   s“  Refinement flags and selection counts:
  individual_sites       = %s (10 atoms)
  torsion_angles         = %s (10 atoms)
  rigid_body             = %s (10 atoms in 6 groups)
  individual_adp         = %s (iso = 10 aniso = 10)
  group_adp              = %s (10 atoms in 6 groups)
  tls                    = %s (10 atoms in 6 groups)
  occupancies            = %s (10 atoms)
  group_anomalous        = %s
s   %5si   i   i   i   i   i   i	   i   i   (   R!   RI   R   R   R4   R   R*   R   R+   RB   RC   R   R&   R   R   R   R   R   R   R   R   R   R   R   RK   R   (   R,   R.   RD   RE   RF   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exercise_add_2b|  s<    	
			
+Q399?c          C   s7  t  ƒ  }  |  j d t j d d d d g ƒ d t d t d t d	 t d
 t d t d t d t d t ƒ 
}  t ƒ  } |  j d | ƒ t | j ƒ  d t	 d t
 t ƒ g d ƒ ƒ s¶ t ‚ t j d d d d d d d d d d d d d d d d d d d d g ƒ j ƒ  } t j d g ƒ t j d g ƒ t j d d g ƒ t j d d g ƒ t j d g ƒ t j d d d d g ƒ t j d g ƒ t j d g ƒ t j d g ƒ g	 } t j d g ƒ t j d d g ƒ g t j d d g ƒ g t j d g ƒ g t j d d d g ƒ t j d g ƒ g t j d g ƒ g t j d g ƒ g t j d g ƒ g t j d g ƒ g g } t |  j | ƒ s{t ‚ t |  j | ƒ s“t ‚ t |  j | ƒ s«t ‚ t |  j | ƒ sÃt ‚ t |  j | ƒ sÛt ‚ t |  j | ƒ sót ‚ t |  j | ƒ st ‚ t |  j | ƒ s#t ‚ t |  j | ƒ d  S(   NRH   i    i
   i   i   R   R   R   R   R   R   R   R   R   R#   s“  Refinement flags and selection counts:
  individual_sites       = %s (14 atoms)
  torsion_angles         = %s (14 atoms)
  rigid_body             = %s (14 atoms in 9 groups)
  individual_adp         = %s (iso = 14 aniso = 14)
  group_adp              = %s (14 atoms in 9 groups)
  tls                    = %s (14 atoms in 9 groups)
  occupancies            = %s (14 atoms)
  group_anomalous        = %s
s   %5si   i   i   i   i   i   i	   i   i   i   i   i   (   R!   RI   R   R   R   R   R*   R   R+   RB   RC   R&   R   R   R   R   R   R   R   R   R   R   R   RK   R   (   R,   R.   RD   RE   RF   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exercise_add_2c®  sB    	
			
+Q093996c         C   s“   g  |  D]% } g  | D] } t  | ƒ ^ q ^ q }  g  | D]% } g  | D] } t  | ƒ ^ qG ^ q: } |  j ƒ  | j ƒ  t |  | ƒ s� t ‚ d  S(   N(   t   listt   sortR   R&   (   t   xt   yt   it   k(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyRK   ã  s
    33

c           C   sD   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  GHd  S(   N(	   R;   R@   RG   RJ   RL   RM   RN   RO   R   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   exerciseë  s    t   __main__N($   t
   __future__R    t   cctbx.array_familyR   t   libtbx.test_utilsR   R   t   libtbx.utilsR   t   mmtbx.refinementR   t	   cStringIOR   RB   RC   R   R0   R4   R3   R1   R2   R    R!   R(   R/   R;   R@   RG   RJ   RL   RM   RN   RO   RK   RV   t   __name__(    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_refinement_flags.pyt   <module>   s0   !!!!	 	 	1		7		'	5	2	5		