ó
—™xTc           @   sC  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l 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 m Z m Z m Z d  d
 l m Z d  d l Z d  d l Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z e  d k r?e ƒ  n  d S(   iÿÿÿÿ(   t   divisionN(   t
   sdb_reader(   t   miller(   t   crystal(   t   sgtbx(   t   random_structure(   t   flex(   t   Exception_expectedt   approx_equalt	   show_diff(   t   StringIOc          C   s  t  j j j }  t  j j j } t j d d  d d  ƒ } |  d | ƒ } | d k sW t ‚ | d | ƒ } t	 d j
 | ƒ d ƒ s… t ‚ t j d d d d  ƒ } |  d | ƒ } | d k s¾ t ‚ | d | ƒ } t	 d j
 | ƒ d ƒ sì t ‚ t j d d  d d ƒ } |  d | ƒ } | d k s%t ‚ | d | ƒ } t	 d j
 | ƒ d ƒ sSt ‚ xt j ƒ  D] } t j d t j | ƒ ƒ j d d ƒ } |  d | ƒ } t j t  j j j | ƒ } | d  k	 sÉt ‚ t  j j j d | ƒ } | j | ƒ söt ‚ | d | ƒ } t ƒ  } | d j
 | ƒ IJt | j ƒ  ƒ } t  j j j d | ƒ } | j | ƒ s`t ‚ q`Wd }	 t j t  j j j |	 ƒ } t  j j j d | d d d d ƒ }
 |
 d  k	 s»t ‚ t |
 j ƒ  ƒ d k sÙt ‚ t |
 j ƒ  j ƒ  ƒ d k sýt ‚ d  S(    Nt	   unit_cellt   space_group_infot   crystal_symmetrys<   sg=None a=None b=None c=None alpha=None beta=None gamma=Nones   
sv   {===>} sg="None";
{===>} a=None;
{===>} b=None;
{===>} c=None;
{===>} alpha=None;
{===>} beta=None;
{===>} gamma=None;i   i   i   iY   iW   i]   s-   sg=None a=3 b=4 c=5 alpha=89 beta=87 gamma=93sg   {===>} sg="None";
{===>} a=3;
{===>} b=4;
{===>} c=5;
{===>} alpha=89;
{===>} beta=87;
{===>} gamma=93;t   space_group_symboli   sE   sg=P2(1)2(1)2(1) a=None b=None c=None alpha=None beta=None gamma=Nones   {===>} sg="P2(1)2(1)2(1)";
{===>} a=None;
{===>} b=None;
{===>} c=None;
{===>} alpha=None;
{===>} beta=None;
{===>} gamma=None;t   groupt   volumeiè  t   mt   filesH   a= 82.901 b= 82.901 c= 364.175 alpha= 90 beta= 90 gamma= 120 sg= P6(5)22t   i_uci   t   i_sgi   s&   (82.901, 82.901, 364.175, 90, 90, 120)s   P 65 2 2(   i   i   i   iY   iW   i]   (   t   iotbxt   cnst   crystal_symmetry_utilst   crystal_symmetry_as_sg_uct#   crystal_symmetry_as_cns_inp_definesR   t   symmetryt   Nonet   AssertionErrorR	   t   joinR   t   space_group_symbol_iteratorR   t   space_groupt   any_compatible_crystal_symmetryt   ret   matcht   re_sg_uct   crystal_symmetry_from_re_matcht   is_similar_symmetryR
   t   getvaluet   crystal_symmetry_from_inpt   extract_fromt   re_uc_sgt   strR   t   info(   t   as_remt   as_inpR   t   sg_uct   symbolst   cs1R   t   cs2t   siot   uc_sgt   cs(    (    s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt   exercise_crystal_symmetry_utils   s^    							i    c         C   sÈ  t  j d t j d ƒ d d d d d g d d d	 d
 d d t d t ƒ } t | j d t d d d d ƒ j ƒ  ƒ } | j	 d d d d d d d g d d ƒ } d s© |  r¼ t
 j j | ƒ n  t j t | ƒ ƒ } t | ƒ d k sé t ‚ | d j d t j d | j ƒ  d d  ƒ ƒ } t | j d | d d ƒ j ƒ  ƒ } t j | j ƒ  | j ƒ  ƒ } | j ƒ  skt ‚ d sw|  r„| j ƒ  n  t | j ƒ  d ƒ d  k  s¦t ‚ t | j ƒ  ƒ d! k  sÄt ‚ d  S("   NR   s   P 31t   elementst   Nt   Ct   Oi   t   volume_per_atomiô  t   min_distanceg       @t   general_positions_onlyt   random_u_isot   anomalous_flagt   d_mint	   algorithmt   directR   s   foo.sdbt   descriptionR   t   commentt   anyt   thingR   t   besti    i   R   R   t   xray_structureg-Cëâ6?gü©ñÒMbP?(   R   RG   R   R   t   Falset   Truet   abst   structure_factorst   f_calct   as_cns_sdb_filet   syst   stdoutt   writeR   t   multi_sdb_parserR
   t   lenR   t   as_xray_structureR   R   R   R   t!   structure_factors_from_scatterersR   t   linear_regressiont   datat   is_well_definedt   show_summaryt   slopet   y_intercept(   t   verboset	   structuret   f_abst   sdb_outt	   sdb_filest   structure_readt   f_readt
   regression(    (    s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt   exercise_sdb[   s<    					"c             s»   t  j j j ‰  y ˆ  d t d ƒ ƒ Wn4 t  j j j k
 r\ }  t |  ƒ d k sc t ‚ n Xt ‚ ‡  ‡ f d †  } t d ƒ ‰ | d ƒ t d ƒ ‰ | d ƒ t d	 ƒ ‰ | d
 ƒ d  S(   Nt   file_handles   }{s   premature end-of-filec            sN   ˆ  d ˆ ƒ } t  ƒ  } | j ƒ  j d | ƒ t | j ƒ  |  ƒ sJ t ‚ d  S(   NRd   t   f(   R
   R   RX   R	   R&   R   (   t   expectedt   ct   so(   t   crft   si(    s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt   check…   s    	s"  remark a= 40.000 b= 50.000 c=  60.000 alpha= 90 beta= 90 gamma= 90 sg= P2
 remark symop (X,Y,Z)
remark symop (-X,-Y,Z)
CRYST1   10.000   20.000   30.000  90.00  90.00  90.00 P 1 21 1
DECLare NAME=FOBS                   DOMAin=RECIprocal   TYPE=REAL END
INDE     1    2    3 FOBS=   380.500
sA   Unit cell: (40, 50, 60, 90, 90, 90)
Space group: P 1 1 2 (No. 3)
sö    remark a= 40.000 b= 50.000 c=  60.000 alpha= 90 beta= 90 gamma= 90 sg= P2
CRYST1   10.000   20.000   30.000  90.00  90.00  90.00 P 1 21 1
DECLare NAME=FOBS                   DOMAin=RECIprocal   TYPE=REAL END
INDE     1    2    3 FOBS=   380.500
sA   Unit cell: (40, 50, 60, 90, 90, 90)
Space group: P 1 2 1 (No. 3)
s«   CRYST1   10.000   20.000   30.000  90.00  90.00  90.00 P 1 21 1
DECLare NAME=FOBS                   DOMAin=RECIprocal   TYPE=REAL END
INDE     1    2    3 FOBS=   380.500
sB   Unit cell: (10, 20, 30, 90, 90, 90)
Space group: P 1 21 1 (No. 4)
(	   R   R   t   reflection_readert   cns_reflection_fileR
   t   CNS_input_ErrorR*   R   R   (   t   eRk   (    (   Ri   Rj   s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt   exercise_reflection_reader{   s&    			c          C   s5  t  ƒ  }  t j ƒ  } xý t t g D]ï } t j d | d t j d d g ƒ d	 | ƒ } x¹ t j	 t t f ƒ t j
 d ƒ t j d ƒ t j d ƒ t j d d f ƒ g D]i } | j d | ƒ } | j d |  ƒ t | t j ƒ r¤ | j d | d | d ƒ } | j d |  ƒ q¤ q¤ Wq" Wt |  j ƒ  d ƒ s1t ‚ d  S(   NR   t   indicesi   i   i   iýÿÿÿi   iùÿÿÿR>   i   i
   i   i    i   i   RV   t   file_objectt   sigmasg      $@sl  NREFlections=2
ANOMalous=FALSe
DECLare NAME=DATA  DOMAin=RECIprocal TYPE=INTEger END
INDEx 1 2 3 DATA= 0
INDEx -3 5 -7 DATA= 1
NREFlections=2
ANOMalous=FALSe
DECLare NAME=DATA  DOMAin=RECIprocal TYPE=INTEger END
INDEx 1 2 3 DATA= -3
INDEx -3 5 -7 DATA= 4
NREFlections=2
ANOMalous=FALSe
DECLare NAME=DATA  DOMAin=RECIprocal TYPE=REAL END
INDEx 1 2 3 DATA= 10
INDEx -3 5 -7 DATA= 13
NREFlections=2
ANOMalous=FALSe
DECLare NAME=FOBS DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=SIGMA DOMAin=RECIprocal TYPE=REAL END
INDEx 1 2 3 FOBS= 10 SIGMA= 1
INDEx -3 5 -7 FOBS= 13 SIGMA= 1.3
NREFlections=2
ANOMalous=FALSe
DECLare NAME=F  DOMAin=RECIprocal TYPE=COMPLEX END
INDEx 1 2 3 F= 10 0
INDEx -3 5 -7 F= 13 0
NREFlections=2
ANOMalous=FALSe
DECLare NAME=PA  DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=PB  DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=PC  DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=PD  DOMAin=RECIprocal TYPE=REAL END
GROUp  TYPE=HL
     OBJEct=PA
     OBJEct=PB
     OBJEct=PC
     OBJEct=PD
END
INDEx 1 2 3 PA= 0 PB= 1 PC= 2 PD= 3
INDEx -3 5 -7 PA= 4 PB= 5 PC= 6 PD= 7
NREFlections=2
ANOMalous=TRUE
DECLare NAME=DATA  DOMAin=RECIprocal TYPE=INTEger END
INDEx 1 2 3 DATA= 0
INDEx -3 5 -7 DATA= 1
NREFlections=2
ANOMalous=TRUE
DECLare NAME=DATA  DOMAin=RECIprocal TYPE=INTEger END
INDEx 1 2 3 DATA= -3
INDEx -3 5 -7 DATA= 4
NREFlections=2
ANOMalous=TRUE
DECLare NAME=DATA  DOMAin=RECIprocal TYPE=REAL END
INDEx 1 2 3 DATA= 10
INDEx -3 5 -7 DATA= 13
NREFlections=2
ANOMalous=TRUE
DECLare NAME=FOBS DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=SIGMA DOMAin=RECIprocal TYPE=REAL END
INDEx 1 2 3 FOBS= 10 SIGMA= 1
INDEx -3 5 -7 FOBS= 13 SIGMA= 1.3
NREFlections=2
ANOMalous=TRUE
DECLare NAME=F  DOMAin=RECIprocal TYPE=COMPLEX END
INDEx 1 2 3 F= 10 0
INDEx -3 5 -7 F= 13 0
NREFlections=2
ANOMalous=TRUE
DECLare NAME=PA  DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=PB  DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=PC  DOMAin=RECIprocal TYPE=REAL END
DECLare NAME=PD  DOMAin=RECIprocal TYPE=REAL END
GROUp  TYPE=HL
     OBJEct=PA
     OBJEct=PB
     OBJEct=PC
     OBJEct=PD
END
INDEx 1 2 3 PA= 0 PB= 1 PC= 2 PD= 3
INDEx -3 5 -7 PA= 4 PB= 5 PC= 6 PD= 7
(   i   i   i   (   iýÿÿÿi   iùÿÿÿ(   iýÿÿÿi   (   i
   i   (   i
   i   (   i    i   i   i   (   i   i   i   i   (   R
   R   R   RH   RI   R   t   setR   t   miller_indext   boolt   intt   doublet   complex_doublet   hendrickson_lattmant   arrayt   export_as_cns_hklt
   isinstanceR	   R&   R   (   t   sR   R>   t
   miller_setRV   t   miller_array(    (    s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt    exercise_miller_array_as_cns_hklª   s&    			Qc    	   
   C   s´  d }  d } t  j d d0 d	 d
 ƒ } g  |  | f | d  f g D]6 \ } } t j j j d t | ƒ ƒ j d | ƒ ^ q= } x4| D],} x#| D]} | j	 ƒ  j
 d | d d d d ƒ s½ t ‚ | j ƒ  sÐ t ‚ t | j ƒ  ƒ d1 d2 d3 g k s÷ t ‚ | j ƒ  j ƒ  } | d k r~t | j ƒ  ƒ d k s3t ‚ t | j ƒ  d d d g ƒ sWt ‚ t | j ƒ  d d d g ƒ s¨t ‚ q� | j ƒ  d  k s–t ‚ | d k rÌt | j ƒ  ƒ d d d g k s¨t ‚ q� | d k rÿt | j ƒ  d d d g ƒ s¨t ‚ q� | d  k ro| j ƒ  d d k  rHt | j ƒ  d! d! d! g ƒ slt ‚ q¨t | j ƒ  d" d# d$ g ƒ s¨t ‚ q� | d% k r¢t | j ƒ  d4 d5 d6 g ƒ s¨t ‚ q� t ‚ q� Wq€ Wd  S(7   NsÏ   NREFlection=         3
 ANOMalous=FALSe { equiv. to HERMitian=TRUE}
 DECLare NAME=FOBS         DOMAin=RECIprocal   TYPE=COMP END
 DECLare NAME=PHASE        DOMAin=RECIprocal   TYPE=REAL END
 DECLare NAME=SIGMA        DOMAin=RECIprocal   TYPE=REAL END
 DECLare NAME=TEST         DOMAin=RECIprocal   TYPE=INTE END
 DECLare NAME=FOM          DOMAin=RECIprocal   TYPE=REAL END
 INDE     1    1    2 FOBS=   713.650 PHASE=     0.000 SIGMA=     3.280
                   TEST=  0 FOM=    -1.000
 INDE    -2    0    3 FOBS=   539.520 PHASE=     0.000 SIGMA=     4.140
                   TEST=  1 FOM=    -1.000
 INDE     0    2    1 FOBS=   268.140 PHASE=     0.000 SIGMA=     1.690
                   TEST=  0 FOM=    -1.000
s÷   { sg=C2 a=97.37 b=46.64 c=65.47 alpha=90 beta=115.4 gamma=90 }
 NREFlection=         3
 ANOMalous=FALSe { equiv. to HERMitian=TRUE}
 DECLare NAME=FOBS         DOMAin=RECIprocal   TYPE=COMP END
 DECLare NAME=SIGMA        DOMAin=RECIprocal   TYPE=REAL END
 DECLare NAME=TEST         DOMAin=RECIprocal   TYPE=INTE END
 DECLare NAME=FOM          DOMAin=RECIprocal   TYPE=REAL END
 DECLare NAME=PA           DOMAin=RECIprocal   TYPE=REAL END
 DECLare NAME=PB           DOMAin=RECIprocal   TYPE=REAL END
 DECLare NAME=PC           DOMAin=RECIprocal   TYPE=REAL END
 DECLare NAME=PD           DOMAin=RECIprocal   TYPE=REAL END
 GROUp TYPE=HL
     OBJEct=PA
     OBJEct=PB
     OBJEct=PC
     OBJEct=PD
 END
 INDE     1    1    2 FOBS=   713.650    44.854 SIGMA=     3.280 TEST=         0
                   FOM=     0.044 PA=     0.066 PB=     0.065 PC=    -0.001
                   PD=    -0.099
 INDE    -2    0    3 FOBS=   539.520     0.000 SIGMA=     4.140 TEST=         1
                   FOM=     0.994 PA=     2.893 PB=     0.000 PC=     0.000
                   PD=     0.000
 INDE     0    2    1 FOBS=   268.140   184.247 SIGMA=     1.690 TEST=         0
                   FOM=     0.890 PA=   -46.660 PB=    -3.465 PC=   -12.988
                   PD=    -1.940
R   gHáz®WX@gR¸…ëQG@g®Gáz^P@iZ   gš™™™™Ù\@R   s   C 1 2 1Rd   R   t   othert   relative_length_toleranceg»½×Ùß|Û=t   absolute_angle_tolerancei   i   iþÿÿÿi    i   s
   FOBS,SIGMAs   xray.amplitudeg33333M†@g\�Âõ(Ü€@g
×£p=Âp@g=
×£p=
@g�Âõ(\�@g
×£p=
û?t   TESTt   PHASEt   FOMiÿÿÿÿgºI+‡¦?g+‡ÙÎï?g{®Gázì?s   PA,PB,PC,PDgL7‰A`å°?g¤p=
×£°?gü©ñÒMbP¿gòÒMbX¹¿g¾Ÿ/Ý$@g        g®GázTGÀg¸…ëQ¸Àg`åÐ"Ûù)Àg
×£p=
ÿ¿(   gHáz®WX@gR¸…ëQG@g®Gáz^P@iZ   gš™™™™Ù\@iZ   (   i   i   i   (   iþÿÿÿi    i   (   i    i   i   (   gL7‰A`å°?g¤p=
×£°?gü©ñÒMbP¿gòÒMbX¹¿(   g¾Ÿ/Ý$@g        g        g        (   g®GázTGÀg¸…ëQ¸Àg`åÐ"Ûù)Àg
×£p=
ÿ¿(   R   R   R   R   R   Rl   Rm   R
   t   as_miller_arraysR   R%   R   R>   t   listRq   R+   t   label_stringR*   t   observation_typeR   RV   Rs   t   RuntimeError(	   t   refl_1t   refl_2R   t   reflR4   t
   all_arrayst   miller_arraysR€   t   lbl(    (    s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt(   exercise_reflection_file_as_miller_array  sF    		R'$'*'''c          C   sB   d t  j d k }  t ƒ  t |  ƒ t ƒ  t ƒ  t ƒ  d GHd  S(   Ns	   --Verbosei   t   OK(   RN   t   argvR5   Rc   Rp   R“   R�   (   R[   (    (    s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt   runb  s    
t   __main__(!   t
   __future__R    t   iotbx.cns.xray_structureR   t   iotbx.cns.miller_arrayt   iotbx.cns.reflection_readert    iotbx.cns.crystal_symmetry_utilst#   iotbx.cns.crystal_symmetry_from_inpt	   iotbx.cnsR   t   cctbxR   R   R   t   cctbx.developmentR   t   cctbx.array_familyR   t   libtbx.test_utilsR   R   R	   t	   cStringIOR
   R!   RN   R5   Rc   Rp   R�   R“   R–   t   __name__(    (    (    s?   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/tst_cns.pyt   <module>   s.   	I 	/	e	S		