ó
‡™xTc           @   s�  d  d l  m Z d  d l Z e j j d ƒ rA d  d l m Z n d 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 m Z m Z m Z d  d l Z d  d l Z d  d l Z e j Z d d „ Z d d d „ Z d d „ Z d d d 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   divisionNt   ccp4io(   t   mtz(   t   debug_utils(   t   miller(   t   crystal(   t   flex(   t   generate_random_hl(   t   random_f_calc(   t   Exception_expectedt   approx_equalt   eps_eqc         C   sÉ   t  j ƒ  } | j d ƒ | j d d ƒ | j |  j ƒ  ƒ | j |  j ƒ  ƒ | j d d d d d |  j ƒ  ƒ } | j	 d d	 d
 d ƒ } | j
 d |  d | d | ƒ | k sµ t ‚ | j d d ƒ | S(   Ns   mtz writer testt   linet   startt   namet   test_crystalt   project_namet   test_projectt	   unit_cellt   test_datasett
   wavelengthi   t   miller_arrayt   column_root_labelt   column_typest   done(   R   t   objectt	   set_titlet   add_historyt   set_space_group_infot   space_group_infot   set_hkl_baseR   t   add_crystalt   add_datasett   add_miller_arrayt   AssertionError(   R   R   R   t
   mtz_objectR   t   dataset(    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   to_mtz   s$    				i    c         C   s[
  t  |  | | ƒ } t j ƒ  } | j ƒ  } d s6 | rC | j ƒ  n  | j ƒ  j d d ƒ t j d d ƒ } d sw | r„ | j ƒ  n  | j ƒ  | j ƒ  k s¢ t ‚ g  | j	 ƒ  D] } | j
 ƒ  ^ q¯ t | j	 ƒ  ƒ k sß t ‚ | j ƒ  | j ƒ  k sý t ‚ | j ƒ  | j ƒ  k st ‚ | j ƒ  | j ƒ  k s9t ‚ | j ƒ  | j ƒ  k sWt ‚ | j ƒ  | j ƒ  k sut ‚ | j ƒ  | j ƒ  k s“t ‚ | j ƒ  | j ƒ  k s±t ‚ t | j ƒ  | j ƒ  d d ƒsØt ‚ | j ƒ  | j ƒ  k söt ‚ | j ƒ  | j ƒ  k st ‚ | j ƒ  d k s,t ‚ x*t | j ƒ  | j ƒ  ƒ D]\ }	 }
 |	 j ƒ  |
 j ƒ  k srt ‚ |	 j ƒ  |
 j ƒ  k s�t ‚ |	 j ƒ  j |
 j ƒ  ƒ s±t ‚ |	 j ƒ  |
 j ƒ  k sÏt ‚ xƒ t |	 j ƒ  |
 j ƒ  ƒ D]f \ } } | j ƒ  | j ƒ  k st ‚ | j ƒ  | j ƒ  k s3t ‚ | j  ƒ  | j  ƒ  k sët ‚ qëWqHW| j ƒ  d j! ƒ  } | j" ƒ  j# ƒ  | j ƒ  k s“t ‚ | j ƒ  d j$ ƒ  } | j ƒ  d j ƒ  d } |  j% ƒ  s|  j& ƒ  d  k r|  j( ƒ  r)| j  ƒ  d1 k st ‚ | j) d	 | d
 | j* | ƒ ƒ } n¢ |  j+ ƒ  r¡| j  ƒ  d2 k sMt ‚ | j, } | j- d | | d ƒ d | | d ƒ d | | d ƒ d | | d ƒ ƒ } n* | j  ƒ  d3 k s¹t ‚ | j. d | ƒ } t/ j0 d t/ j1 d | d | j" d t2 ƒ d | j3 ƒ } q| j  ƒ  d4 k st ‚ | j4 d | d | j& | ƒ ƒ } t/ j0 d t/ j1 d | d | j" d t2 ƒ d | j3 d | j& ƒ } n…|  j& ƒ  d  k rY|  j( ƒ  r| j  ƒ  d5 k sµt ‚ | j5 d | j6 | d ƒ d | j* | d ƒ d | j6 | d ƒ d | j* | d ƒ ƒ } n|  j+ ƒ  rØ| j  ƒ  d6 k s0t ‚ | j, } | j7 d  | | d d ƒ d! | | d d ƒ d" | | d d ƒ d# | | d d ƒ d$ | | d d ƒ d% | | d d ƒ d& | | d d ƒ d' | | d d ƒ ƒ } nH | j  ƒ  d7 k sðt ‚ | j8 d( | j6 | d ƒ d) | j6 | d ƒ ƒ } t/ j0 d t/ j1 d | d | j" d t9 ƒ d | j3 ƒ } n« | j  ƒ  d8 k sqt ‚ | j: d* | j6 | d ƒ d+ | j& | d ƒ d, | j6 | d ƒ d- | j& | d ƒ ƒ } t/ j0 d t/ j1 d | d | j" d t9 ƒ d | j3 d | j& ƒ } t; |  | ƒ | j< ƒ  } t= | ƒ d k s5t ‚ | d j> ƒ  j? } | d  k	 sZt ‚ |  j+ ƒ  | d. k k sxt ‚ t; |  | d ƒ |  j@ d/ | ƒ j ƒ  } | j< ƒ  } t= | ƒ d k sÅt ‚ t; |  | d ƒ |  jA ƒ  sú|  jB ƒ  sú|  jC ƒ  rW
|  jD ƒ  } | jE d0 | ƒ |  jF d0 | ƒ } | j ƒ  | j ƒ  k sF	t ‚ x5 | j ƒ  D]' } | j ƒ  j | j ƒ  ƒ sS	t ‚ qS	W| j< ƒ  } t= | ƒ d k s¢	t ‚ t; | | d ƒ | jE d0 | jG ƒ  ƒ | j ƒ  |  j ƒ  k sç	t ‚ x5 | j ƒ  D]' } | j ƒ  j |  j ƒ  ƒ sô	t ‚ qô	W| j< ƒ  } t= | ƒ d k sC
t ‚ t; |  | d ƒ n  d  S(9   Ni    t	   file_names   tmp_iotbx_mtz.mtzt   epsgñhãˆµøä>i   i   i   t   column_label_amplt   column_label_phii   t   column_label_at   column_label_bt   column_label_ct   column_label_dt   column_labelt
   miller_sett   crystal_symmetryt   indicest   anomalous_flagt   datat   column_label_datat   column_label_sigmast   sigmast   column_label_ampl_plust   +t   column_label_phi_plust   column_label_ampl_minust   -t   column_label_phi_minusi   t   column_label_a_plust   column_label_b_plust   column_label_c_plust   column_label_d_plust   column_label_a_minust   column_label_b_minust   column_label_c_minust   column_label_d_minust   column_label_plust   column_label_minust   column_label_data_plust   column_label_sigmas_plust   column_label_data_minust   column_label_sigmas_minust   hendrickson_lattmanR   t   cb_opi   i   i   i   i   i   i   i   (H   R%   R   t   label_decoratorR#   t   show_summaryt   writeR   t   titleR"   t   historyt   rstript   listt   space_group_namet   space_group_numbert   space_groupt   point_group_namet   lattice_centring_typet	   n_batchest   n_reflectionsR   t   max_min_resolutiont
   n_crystalst   n_active_crystalst   zipt   crystalsR   R   R   t   is_similar_tot
   n_datasetst   datasetsR   t	   n_columnsR/   R1   t   sizeR0   R2   R6   t   Nonet   is_complex_arrayt   extract_complext   phasest   is_hendrickson_lattman_arrayRK   t   extract_hendrickson_lattmant   extract_realsR   t   arrayt   sett   FalseR3   t   extract_observationst   extract_complex_anomaloust	   anomaloust%   extract_hendrickson_lattman_anomaloust   extract_reals_anomaloust   Truet   extract_observations_anomaloust   verify_miller_arrayst   as_miller_arrayst   lent   infot   type_hints_from_filet   as_mtz_datasett   is_bool_arrayt   is_integer_arrayt   is_real_arrayt!   change_of_basis_op_to_niggli_cellt   change_basis_in_placet   change_basist   inverse(   R   R   R   t   verboset   original_datasetRM   t   writtent   restoredR   t   rxt   wxt   rdt   wdR/   R0   t   restored_datasett   groupt   decot   rt   restored_miller_arrayst   thffR#   RL   t   cb_arrayt   mtz_crystal(    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   recycle'   s6   "$(!(&$																															%%gñhãˆµøä>c         C   sŽ  | j  |  ƒ } |  j ƒ  r¡ | j ƒ  rd t j t j |  j ƒ  j ƒ  | j ƒ  ƒ ƒ d k sž t ‚ qAt j t j |  j ƒ  j	 ƒ  | j ƒ  ƒ ƒ | k  sAt ‚ n  |  j
 ƒ  rx‘ t d ƒ D]L } t j t j |  j ƒ  j | ƒ | j ƒ  j | ƒ ƒ ƒ | k  sº t ‚ qº Wn4 t j t j |  j ƒ  | j ƒ  ƒ ƒ | k  sAt ‚ | j ƒ  d  k	 rŠt j t j |  j ƒ  | j ƒ  ƒ ƒ | k  sŠt ‚ n  d  S(   Ni    i   (   t	   adopt_setR|   R}   R   t   maxt   absR3   t   as_intR"   t	   as_doubleRi   t   xranget   sliceR6   Re   (   t   a1t   a2R'   t   vt   i(    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyRv   É   s    ==M4i   g      @c         C   s“  t  d |  d | d | d | d | ƒ } | d  k r7 d  St | d d | ƒxW d d g D]I \ } } | r{ | d	 k r{ qW n  t d
 t | ƒ d | d | d | ƒ qW W| sÌ t t | ƒ d d d d | ƒn  x‹ d d g D]} \ } } | rý | d k rý qÙ n  t d
 t j d | d t j | j ƒ  ƒ d t j | j ƒ  ƒ d ƒ d | d | d | ƒ qÙ Wt | j ƒ  d d | ƒt t	 d | ƒ d d | ƒd  S(   NR   t   n_scattererst   d_minR2   Rƒ   t   f_calct   f_obst   Eworkt   ER   R   R   t   Rt   EQR/   R3   R6   i
   t   centt   prob(   s   f_obsN(   R£   R¤   (   s   f_obsN(   R£   R¦   (
   R   Re   R“   R–   R   Rl   R   R3   t   centric_flagsR   (   R   R2   RŸ   R    Rƒ   R¡   R   R   (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   exercise_recycleØ   sH    	  " 	c         C   sD   x0 t  t g D]" } t d | d | d |  j ƒ q Wt d | ƒ d  S(   NR   R2   Rƒ   (   Rn   Rt   Rª   t   Verboset   exercise_unmerged(   t   flagsR   R2   (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   run_call_backý   s    c          C   sJ  t  j d d d d ƒ j d t j d d g ƒ d t ƒ }  x
t j t t g ƒ t j d d g ƒ t j	 d d g ƒ t j
 d d g ƒ t j d d g ƒ g D]¨} |  j d | ƒ } t j d ƒ rÑ t j d ƒ n  t j d ƒ sç t ‚ | j d d ƒ j ƒ  j d d ƒ t j d ƒ st ‚ t j d d ƒ } | j ƒ  } t | ƒ d k sTt ‚ | d } | j ƒ  j | j ƒ  ƒ st ‚ | j ƒ  s—| j ƒ  rÄ| j ƒ  j t j d d g ƒ ƒ sBt ‚ qš | j ƒ  rý| j ƒ  j t j
 d d g ƒ ƒ sBt ‚ qš | j ƒ  r6| j ƒ  j t j d d g ƒ ƒ sBt ‚ qš t  d ƒ ‚ qš Wd  S(   NR   i
   iZ   t   space_group_symbolt   P1R1   i   i   i   i   i   i   R2   i    R3   s   tmp_iotbx_mtz.mtzR   t   DATAR&   s   Programming error.(   i
   i
   i
   iZ   iZ   iZ   (   i   i   i   (   i   i   i   (!   R   t   symmetryR/   R   t   miller_indexRn   t   boolRt   t   intt   size_tt   doublet   complex_doubleRl   t   opt   isfilet   ost   removeR"   R{   R#   RO   R   R   Rw   Rx   R1   t   all_eqR}   R|   R3   R~   Rf   t   RuntimeError(   R/   R3   R   t   mtz_objt   miller_arrays_read_backt   miller_array_read_back(    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt    exercise_miller_array_data_types  s<    		 
!---c       
   C   sƒ  t  j d t j d d# d d ƒ d t j d$ d% g ƒ d t ƒ j d t j d
 d g ƒ d t j d d g ƒ ƒ }  |  j	 d d ƒ } | j
 ƒ  } | j d d ƒ j ƒ  d } | j d d ƒ j ƒ  d } | j d d ƒ j ƒ  d } | j d d ƒ j ƒ  d } d | | } | | } t j | d	 | d	 ƒ }	 d |	 }
 | j d d d d ƒ j d t j d g ƒ d t j | g ƒ ƒ | j d d d d ƒ j d t j d g ƒ d t j |
 g ƒ ƒ | j d d  d d  ƒ j d t j d g ƒ d t j | g ƒ ƒ | j d d! d d ƒ j d t j d g ƒ d t j |	 g ƒ ƒ | j ƒ  } t | ƒ d	 k s^t ‚ | d } t | j ƒ  ƒ d& d' g k sŒt ‚ t | j ƒ  d
 d g ƒ s­t ‚ t | j ƒ  d d g ƒ sÎt ‚ | d } t | j ƒ  ƒ d( d) g k süt ‚ | d | } | d | } t | | g | j ƒ  ƒ s9t ‚ t j |
 d	 d" |	 d	 ƒ } | } t | | g | j ƒ  ƒ st ‚ d  S(*   NR0   R   i
   iZ   R¯   R°   R1   i   i   i   iÿÿÿÿiþÿÿÿiýÿÿÿR2   R3   i   R6   g333333Ó?g      à?R   t   Ft   labels   F(+)i    s   F(-)s   SIGF(+)s   SIGF(-)t   typet   mtz_reflection_indicest   SIGFt   Qt   Dt   SIGDg      Ð?(   i
   i
   i
   iZ   iZ   iZ   (   i   i   i   (   iÿÿÿÿiþÿÿÿiýÿÿÿ(   i   i   i   (   iÿÿÿÿiþÿÿÿiýÿÿÿ(   i   i   i   (   iÿÿÿÿiþÿÿÿiýÿÿÿ(   R   Rm   R   R²   R   R³   Rt   Rl   R·   R{   R#   t
   get_columnt   extract_valuest   matht   sqrtt
   add_columnt	   set_realsRµ   Rw   Rx   R"   RS   R1   R
   R3   R6   (   t   miller_array_startt   mtz_datasetR#   t   fpt   fmt   spt   smt   ft   dt   sigdt   sigft   miller_arraysR   (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt    exercise_extract_delta_anomalous%  sP    			

%%%%
$!!
$!c    	      C   sÖ  t  j d t j d d$ d d ƒ d t j d% d& d' d( g ƒ d t ƒ j d t j d
 d d d g ƒ d t j d d d d g ƒ ƒ }  |  j	 d d ƒ } | j
 ƒ  } t j t t g ƒ } xn d d g D]` } xP d | d | g D]: } | j d  | ƒ } | j ƒ  } | j d! | d" | ƒ qÜ W| } qÁ W| j ƒ  } t | ƒ d k sIt ‚ | d# j ƒ  s`t ‚ t | d# j ƒ  ƒ d) d* g k sˆt ‚ t | d# j ƒ  d d g ƒ s­t ‚ t | d# j ƒ  d d g ƒ sÒt ‚ d  S(+   NR0   R   i
   iZ   R¯   R°   R1   i   i   i   iÿÿÿÿiþÿÿÿiýÿÿÿi   iüÿÿÿR2   R3   i   i   i   R6   g333333Ó?g      à?g333333ã?gffffffæ?R   RÃ   R8   R;   s   F(%s)s   SIGF(%s)RÄ   t   valuest   selection_validi    (   i
   i
   i
   iZ   iZ   iZ   (   i   i   i   (   iÿÿÿÿiþÿÿÿiýÿÿÿ(   i   i   i   (   iÿÿÿÿiþÿÿÿiüÿÿÿ(   iÿÿÿÿiþÿÿÿiýÿÿÿ(   i   i   i   (   R   Rm   R   R²   R   R³   Rt   Rl   R·   R{   R#   R´   Rn   RË   RÌ   t
   set_valuesRw   Rx   R"   R2   RS   R1   R
   R3   R6   (	   RÑ   RÒ   R#   RÞ   t   signRÄ   t   columnRÝ   RÛ   (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt(   exercise_repair_ccp4i_import_merged_dataX  s.    			(%c         C   sØ  t  j d d> d d	 ƒ } |  s? d? d@ dA dB dC dD dE dF g } n6 dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV g } t j d | d t j | ƒ d |  ƒ } | j d t j | j ƒ  j	 ƒ  ƒ j
 ƒ  d ƒ } | j d d ƒ } | j ƒ  } |  s‚| j	 ƒ  d k s	t ‚ | d } | j ƒ  d k s+t ‚ | j d ƒ | j ƒ  } | j ƒ  }	 | j d d d d ƒ } | j d | d |	 ƒ nî | j	 ƒ  d k sšt ‚ xe dW dX g D]W \ } }
 | | } | j ƒ  |
 k sÕt ‚ | d k rñ| j d  ƒ n  | j d ƒ q§Wxk dY dZ g D]] \ } }
 | | } | j ƒ  } | j ƒ  }	 | j d |
 d d ƒ } | j d | d |	 ƒ qW| j ƒ  } | j ƒ  } t | ƒ d k s t ‚ t | d j ƒ  | j ƒ  ƒ sÅt ‚ |  st | d j ƒ  d[ d\ d] d^ d_ d` da db g ƒ sTt ‚ nO t | d j ƒ  dc dd de df dg dh di dj dk dl dm dn do dp dq dr g ƒ sTt ‚ | j ƒ  } | d
 j d; ƒ y | j ƒ  WnL t k
 rÍ} |  s²t | ƒ d< k sÊt ‚ qÔt | ƒ d= k sÔt ‚ n Xt ‚ d  S(s   NR   gÁnØ¶¨@g£¼”@g·Ñ Þé@iS   im   i�   R¯   R°   iÿÿÿÿi    i   i   iþÿÿÿR0   R1   R2   R3   R   t   HAi   i   t   ARÄ   t   HBRÅ   RÝ   RÞ   i   s   HA(+)s   HA(-)s   HB(+)s   HB(-)iýÿÿÿiüÿÿÿiûÿÿÿi   iúÿÿÿi   iùÿÿÿi   iøÿÿÿi	   i
   i÷ÿÿÿiöÿÿÿi   i   iõÿÿÿiôÿÿÿi   i   ióÿÿÿiòÿÿÿi   i   iñÿÿÿiðÿÿÿRÃ   sw   Invalid MTZ column combination (incomplete Hendrickson-Lattman array), column labels: "HA", "HB" column types: "A", "F"s}   Invalid MTZ column combination (incomplete Hendrickson-Lattman array), column labels: "HA(-)", "HB(-)" column types: "A", "F"(   gÁnØ¶¨@g£¼”@g·Ñ Þé@iS   im   i�   (   iÿÿÿÿi    i   (   iÿÿÿÿi   i   (   i    iÿÿÿÿi   (   i    i    i   (   i    i    i   (   i    i   i    (   i    i   i   (   i   iÿÿÿÿi    (   iÿÿÿÿi    i   (   i   i    iÿÿÿÿ(   iÿÿÿÿi   i   (   i   iÿÿÿÿiÿÿÿÿ(   i    iÿÿÿÿi   (   i    i   iÿÿÿÿ(   i    i    i   (   i    i    iÿÿÿÿ(   i    i    i   (   i    i    iþÿÿÿ(   i    i   i    (   i    iÿÿÿÿi    (   i    i   i   (   i    iÿÿÿÿiÿÿÿÿ(   i   iÿÿÿÿi    (   iÿÿÿÿi   i    (   i   s   HA(+)(   i   s   HA(-)(   i   s   HA(-)(   i   s   HB(-)(   i   iÿÿÿÿi    i    (   i   iþÿÿÿi    i    (   i   iýÿÿÿi    i    (   i   iüÿÿÿi    i    (   i   iûÿÿÿi    i    (   i   iúÿÿÿi    i    (   i   iùÿÿÿi    i    (   i   iøÿÿÿi    i    (   i   i   i    i    (   iÿÿÿÿiþÿÿÿi    i    (   i   i   i    i    (   iýÿÿÿiüÿÿÿi    i    (   i   i   i    i    (   iûÿÿÿiúÿÿÿi    i    (   i   i   i    i    (   iùÿÿÿiøÿÿÿi    i    (   i	   i
   i    i    (   i÷ÿÿÿiöÿÿÿi    i    (   i   i   i    i    (   iõÿÿÿiôÿÿÿi    i    (   i   i   i    i    (   ióÿÿÿiòÿÿÿi    i    (   i   i   i    i    (   iñÿÿÿiðÿÿÿi    i    (   R   R²   R   Rm   R   R³   Rl   t   size_t_rangeR1   Rd   R˜   R{   t   columnsR"   RÄ   t   set_typeRÌ   RÞ   RÏ   Rß   t	   set_labelR#   Rw   Rx   R
   R3   R¾   t   strR	   (   R2   t   csRž   t   mst   maRÒ   Rç   t   cRÝ   RÞ   t   lR¿   t   mast   e(    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   exercise_hl_ab_onlyq  sz    				1


%c          C   sä   t  j d d d d ƒ j d t j d d g ƒ d t ƒ }  t j d d g ƒ } t j d d ƒ } |  j	 d | ƒ j
 | ƒ } | j d d ƒ } | j ƒ  j d ƒ t j d d ƒ } | j ƒ  d } t | j ƒ  j d ƒ sà t ‚ d  S(   NR   i
   iZ   R¯   R°   R1   i   i   i   i   i   i   R2   R   gKÈ=›Uï?R3   R   RÃ   s   tst_iotbx_mtz_wavelength.mtzR&   i    (   i
   i
   i
   iZ   iZ   iZ   (   i   i   i   (   i   i   i   (   R   R²   R/   R   R³   Rn   R·   R   t
   array_infoRl   t   set_infoR{   R#   RO   R   R   Rw   R
   Ry   R   R"   (   R/   R3   Ry   R   RÒ   R#   (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   exercise_wavelength»  s    		c         C   s§  d d  l  } d d l m } | j d d t ƒ} t t t |  j ƒ  ƒ ƒ ƒ } | j	 | ƒ x% | D] } | j
 |  j ƒ  | ƒ qc W|  j d d ƒ } x
d  | j ƒ  j ƒ  | j ƒ  f D]ç} t j d | d | ƒ j d	 d
 d t ƒ } | j ƒ  j d | j ƒ  ƒ } | d  k	 r$| j | ƒ } n  t j ƒ  }	 |	 j d ƒ |	 j | j ƒ  ƒ |	 j d d | j ƒ  j ƒ  ƒ }
 |
 j d d
 ƒ } | j ƒ  } | j  ƒ  } t! j" |	 j ƒ  j# ƒ  t$ | ƒ g  | j% ƒ  j& ƒ  D] } | j' ƒ  ^ qÍ\ } } } |	 j( t | ƒ ƒ |	 j) t | ƒ ƒ | j* d d ƒ j+ | j, ƒ  j- ƒ  ƒ | j* d d ƒ j+ | j, ƒ  j- ƒ  ƒ | j* d d ƒ j+ | j, ƒ  j- ƒ  ƒ | j* d d ƒ j+ t. j/ t | ƒ ƒ ƒ |	 j0 | ƒ |	 j1 ƒ  | k j2 t$ ƒ d k sßt3 ‚ |	 j4 ƒ  } t! j" |	 j ƒ  j# ƒ  t$ | ƒ | |	 j4 ƒ  k j2 t$ ƒ d k s1t3 ‚ d d  l5 } | j ƒ  } t j j | j6 ƒ  d | ƒ} | j7 j | j ƒ  d d ƒ} | j8 | j9 d ƒ ƒ | j: ƒ  | j; j< d | d | j= d t ƒ j ƒ  j> ƒ  j: ƒ  ƒ } | j? d | j@ ƒ  d t d t ƒ } xš | D]’ } | jA | jB ƒ  ƒ } |	 jC | ƒ |	 j1 ƒ  | jD | ƒ k j2 t$ ƒ d k sat3 ‚ |	 jC | j@ ƒ  ƒ |	 j1 ƒ  | k j2 t$ ƒ d k s	t3 ‚ q	Wq¸ Wd  S(   Niÿÿÿÿ(   t   sgtbxs   P 1t	   no_expandt   volumeiè  R   RV   R    i   R2   R   s   This is a titlet   XTALt   CCTBXt   TESTt   Ht   Kt   Lt   M_ISYMt   Yi    RL   t	   max_deltag      @t   gt   ht   omit_first_partitiont   omit_negative_determinants(   i    i    i    (E   t   randomt   cctbxRö   RV   Rt   RS   t   rangeRx   RŒ   t   shufflet
   expand_smxt   any_compatible_unit_cellRe   Ry   t'   change_of_basis_op_to_primitive_settingR   R   R²   t   build_miller_sett   expand_to_p1t   customized_copyR   R�   R   R   R   R   R   R   t
   parametersR    R1   t	   deep_copyR   t
   map_to_asuRÅ   Rn   t   as_vec3_doublet   partst   iroundt   adjust_column_array_sizest   set_n_reflectionsRÏ   Rß   R˜   t   as_floatR   t   floatt%   replace_original_index_miller_indicest%   extract_original_index_miller_indicest   countR"   t   extract_miller_indicest   cctbx.sgtbx.cosetsR0   t   lattice_symmetryt
   expand_invt   tr_vect	   make_tidyt   cosetst$   left_decomposition_point_groups_onlyt   reflection_intensity_symmetryt   build_derived_acentric_groupt   best_partition_representativesR‚   t   change_of_basis_opt   as_xyzR€   t   apply(   R   R  Rö   RV   t   permRž   R   RL   R/   t   mt   xRØ   R1   t   original_indicesR  t   kRï   t   extracted_indicesR  t   cb_op_to_niggli_cellt   minimum_cell_symmetryt   lattice_groupR#  t   possible_twin_lawst   twin_law(    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyR¬   Ê  s‚    	!4%%%(''				
			c       	   C   sþ   t  j t j d d d d ƒ d d d t ƒ}  |  j d	 t j |  j ƒ  d
 ƒ d t j |  j ƒ  d ƒ ƒ } | j	 ƒ  } | j
 d d ƒ } | j | d d ƒ| j ƒ  j d ƒ t j d d ƒ t j d d ƒ } | j ƒ  } t | d j ƒ  d ƒ sú t ‚ d  S(   NR   i
   iZ   R¯   R°   R    g      ø?R2   R3   g      ð?R6   gš™™™™™¹?R   RÃ   t
   FreeR_flags   tst_mtz_cutoff.mtzg      @R&   i    (   i
   i
   i
   iZ   iZ   iZ   (   R   t	   build_setR   R²   Rt   Rl   R   R·   Rd   t   generate_r_free_flagsR{   R!   R#   RO   R   t   cutoff_dataR   Rw   R
   R    R"   (   R/   R¢   R­   RÒ   t   mtz_inRí   (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   exercise_util1  s     			!c          C   sš   t  d  k r d GHd  Sd d l m }  t |  j d ƒ ƒ t ƒ  t ƒ  t ƒ  t	 ƒ  x! t
 t g D] } t d | ƒ qa Wt ƒ  t j t j d t ƒ d  S(   Ns/   Skipping iotbx/mtz/tst.py: ccp4io not availableiÿÿÿÿ(   Rö   t   I23R2   i   (   R   Re   R  Rö   R¬   R   Rõ   RÜ   Râ   RÂ   Rn   Rt   Rò   R;  R   t   parse_options_loop_space_groupst   syst   argvR®   (   Rö   R2   (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   exerciseC  s    c           C   s   t  ƒ  d GHd  S(   Nt   OK(   R@  (    (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   runR  s    t   __main__(,   t
   __future__R    t   libtbx.load_envt   libtbxt   envt
   has_modulet   iotbxR   Re   t   cctbx.developmentR   R  R   R   t   cctbx.array_familyR   t   cctbx.regression.tst_millerR   t   iotbx.regression.utilsR   t   libtbx.test_utilsR	   R
   R   RÍ   R>  R»   t   pathR¹   R%   R“   Rv   Rª   R®   RÂ   RÜ   Râ   Rò   Rõ   R¬   R;  R@  RB  t   __name__(    (    (    s;   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/mtz/tst.pyt   <module>   s>   	¢#		 	3		J		g			