ó
’™xTc           @   s¾  d  d l  m Z d  d l m Z d  d l m Z m Z m Z 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 m Z d  d
 l m Z d  d l Z d „  Z d „  Z d „  Z d Z d Z d Z d Z  d Z! d Z" d Z# d Z$ d Z% d Z& d Z' d Z( d Z) d „  Z* d „  Z+ d „  Z, d „  Z- d  „  Z. d! Z/ d" Z0 d# Z1 d$ Z2 d% Z3 d& „  Z4 d' „  Z5 d( „  Z6 e7 d) k rºe6 ƒ  d* GHn  d S(+   iÿÿÿÿ(   t   division(   t   flex(   t   crystalt   millert   sgtbxt   uctbx(   t   cif(   t   CifParserError(   t   CifBuilderError(   t   crystal_symmetry_from_any(   t   any_reflection_file(   t   approx_equalt	   show_difft   Exception_expectedt   open_tmp_file(   t   StringIONc       
   C   sc  d d l  m }  |  d t d t j j ƒ  ƒ j ƒ  } t j j | d ƒ } | j ƒ  d } t j	 | d d ƒ} | j
 | j d	 t j d@ g | j ƒ  ƒ ƒ d d ƒ| j
 | j d	 t j dA g | j ƒ  ƒ ƒ d d d g ƒx) dB D]! } | | j j ƒ  k sæ t ‚ qæ Wt j	 | d d d d ƒ} | j
 | j d	 t j dC g | j ƒ  ƒ ƒ d d ƒx) dD D]! } | | j j ƒ  k sbt ‚ qbWt j	 | d d d g d d  ƒ} | j
 | j d	 t j | j ƒ  d! ƒ ƒ d" d# ƒx) dE D]! } | | j j ƒ  k sàt ‚ qàWy |  d t ƒ Wn t k
 r+} n Xt ‚ |  d t d$ t ƒ j ƒ  } t t | ƒ d% ƒ sit ‚ t j d& t j dF ƒ d) t j d* d+ ƒ ƒ } t j dG dH dI f ƒ } t  j! | | ƒ }	 t  j |	 d	 t j" dJ ƒ ƒ} t j	 | d" d0 ƒ} t  j! | | d-  ƒ }
 t  j |
 d	 t j dK g |
 j ƒ  ƒ ƒ} | j
 | d dL ƒf t  j! | t j dM dN dO f ƒ ƒ } t  j | d	 t j" dP ƒ ƒ} | j
 | d" d ƒt  j! | t j dQ dR dS dT dU f ƒ ƒ } | j# ƒ  } | j
 | d" d5 ƒt j j | j ƒ j ƒ  } | d0 | d1 | d | d5 f } x¼ t$ | | | | f | ƒ D]Ÿ \ } } | j ƒ  | j ƒ  k skt ‚ | j% d6 | j& ƒ  ƒ } | j' | ƒ \ } } | j( ƒ  j) | j( ƒ  ƒ s¹t ‚ t* | j+ ƒ  | j+ ƒ  d7 d8 ƒsAt ‚ qAW|  d t, d t j j ƒ  ƒ j ƒ  } t j j- | d9 ƒ j. } t j j | d: d; t  j/ d< | ƒ ƒ} | j ƒ  j0 ƒ  } t1 | ƒ d/ k sst ‚ t j	 | d, j2 ƒ  d | d, j3 ƒ  j4 ƒ} x‹ | d
 D] } | j3 ƒ  j4 } t1 | ƒ d
 k rx0 | D]% } | j5 d= ƒ rØ| j6 | ƒ qØqØWn  | j
 d> | j2 ƒ  d | j3 ƒ  j4 ƒ qªWt7 ƒ  } | | j8 IJt | j9 ƒ  d? ƒ s_t ‚ d  S(V   Niÿÿÿÿ(   t   readert   input_stringt   buildert   globalt   _refln_F_squared_meast
   array_typet   meast   datai   y              ð?t   calcy               @t   column_namest   _refln_A_calct   _refln_B_calct   _refln_F_squared_sigmat   _refln_F_calct   _refln_phase_calct   formatt   mmcifs   _refln.F_squared_meass   _refln.F_squared_sigmas   _refln.F_calcs   _refln.phase_calcs    _space_group_symop.operation_xyzs   _cell.length_as   _refln.index_ht   _diffrn_refln_intensity_nett   _diffrn_refln_intensity_sigmat   miller_index_prefixt   _diffrn_reflnt   omt   column_namet   _diffrn_refln_intensity_ut   strictsO   data_1
_c                                3
_d                                4
t	   unit_celli
   iZ   t   space_group_infot   symbolt   P1i    i   i   i   s   _refln.F_meas_aus   _refln.F_calc_aui   i   i   s   _refln.d_spacingt   anomalous_flagt   epsgñhãˆµøä>t   r3adrsft   r3adrAsft   base_array_infot   crystal_symmetry_from_filet   wavelength_idt   arrays!  loop_
  _refln_index_h
  _refln_index_k
  _refln_index_l
  _refln.crystal_id
  _refln.scale_group_code
  _refln.wavelength_id
  _refln.pdbx_I_plus
  _refln.pdbx_I_plus_sigma
  _refln.pdbx_I_minus
  _refln.pdbx_I_minus_sigma
  -87  5  46  1  1  3   40.2  40.4    6.7  63.9
  -87  5  45  1  1  3   47.8  29.7   35.1  30.5
  -87  5  44  1  1  3   18.1  33.2    0.5  34.6
  -87  5  43  1  1  3    6.1  45.4   12.9  51.6
  -87  5  42  1  1  3   -6.6  45.6  -15.5  55.8
  -87  7  37  1  1  3    6.3  43.4      ?     ?
  -87  7  36  1  1  3  -67.2  55.4      ?     ?
  -88  2  44  1  1  3      0    -1     35  38.5
  -88  2  43  1  1  3      0    -1   57.4  41.5
  -88  4  45  1  1  3     -1  46.1   -9.1  45.6
  -88  4  44  1  1  3  -19.8  49.2    0.3  34.7
  -88  6  44  1  1  3   -1.8  34.8      ?     ?

y      ð?      ð¿y      ð?       À(   R   R   R   R   R   R   y      ð?      ð¿(   s   _refln.F_squared_meass   _refln.F_squared_sigmas   _refln.F_calcs   _refln.phase_calcs    _space_group_symop.operation_xyzs   _cell.length_as   _refln.index_h(   R!   R"   R'   (   i
   i
   i
   iZ   iZ   iZ   (   i   i    i    (   i   i   i   (   i   i   i   (   i   i   i   y      ð?       À(   s   _refln.F_calc_aus   _refln.phase_calc(   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   (:   t	   iotbx.cifR   t   cif_miller_arrayR   t   builderst   cif_model_buildert   modelt   miller_array_buildert   arrayst   miller_arrays_as_cif_blockt   add_miller_arrayR4   R   t   complex_doublet   sizet	   cif_blockt   keyst   AssertionErrort
   std_stringt
   cif_globalR   R   t   FalseR   t   strR   t   symmetryR   R)   R   R*   t   miller_indexR   t   sett   doublet
   d_spacingst   zipt   customized_copyR-   t   common_setst   indicest   all_eqR   R   R/   t   crystal_symmetry_buildert   crystal_symmetryt
   array_infot   valuest   lent
   map_to_asut   infot   labelst
   startswitht   removeR   t
   refln_loopt   getvalue(   R   t	   cif_modelt
   ma_buildert   ma1t   mas_as_cif_blockt   keyt   et   cst   mit   ms1t   ms2t   ma2t   ms3t   ma3t   ms4t   ma4R;   t   recycled_arrayst   origt   recycledt   miller_arraysR4   RX   t   labelt   s(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt#   exercise_miller_arrays_as_cif_block   sº    /( 
/  
			$
  +$*(!+	
&	 	c          C   sŽ  t  t j t j j ƒ t j d t ƒ j ƒ  }  |  d d d k sH t ‚ |  d d d k sb t ‚ t j	 } t
 ƒ  } | t _	 y t j d t ƒ Wn t k
 r¤ n Xt ‚ t j d t d t ƒ } | j ƒ  d k sÛ t ‚ y t j d t ƒ Wn t k
 rn Xt ‚ t j d t ƒ } | j ƒ  d	 k s3t ‚ y t j d t ƒ Wn t k
 rZn Xt ‚ t j d t ƒ } | j ƒ  d	 k s‹t ‚ | j ƒ  d
 d d k s«t ‚ t j d t ƒ } t t | j ƒ  ƒ d ƒ sßt ‚ d } d } t j d | ƒ j ƒ  }  |  j ƒ  d
 g k st ‚ t j d | d |  ƒ j ƒ  |  j ƒ  d
 d g k sXt ‚ y t j d t ƒ j ƒ  }  Wn t k
 r‡n Xt ‚ y t j d t ƒ j ƒ  }  Wn t k
 r½n Xt ‚ | t _	 t j j d t
 t d$ ƒ d d ƒ }	 t |	 j ƒ  ƒ d d g k st ‚ |	 d j ƒ  d  k s2t ‚ t! |	 d j ƒ  t" j# ƒ sTt ‚ t j j d t
 t d% ƒ d d ƒ }	 t |	 j ƒ  ƒ d d g k s�t ‚ |	 d j$ ƒ  s³t ‚ t j j d t
 t d& ƒ d d ƒ }	 t |	 j ƒ  ƒ d d g k süt ‚ |	 d j$ ƒ  st ‚ t j j d t
 t d' ƒ d d ƒ }	 t |	 j ƒ  ƒ d d g k s[t ‚ t j j d t
 t d( ƒ d d ƒ }	 t |	 j ƒ  ƒ d g k s¡t ‚ |	 d j$ ƒ  s·t ‚ xv d) D]n }
 t j d t
 t d* ƒ ƒ j% d |
 ƒ } d j& t g  | D] } t | j' ƒ  ƒ ^ qüƒ ƒ d k s¾t ‚ q¾Wt( d  d! ƒ } | j) t d+ ƒ | j* ƒ  t+ d" | j, ƒ j% ƒ  } t- | ƒ d# k sŠt ‚ d  S(,   NR   R   t   _as   a"bt   _bs   a dog's lifet   raise_if_errorsi   i    t   1s   
1
st   data_1
_a                                ;1
_b                                ;
_c                                2
s   data_1
_a 1
s   data_2
_b 2
t
   cif_objectt   2t   file_objectR   t   _refln_F_meast   _refln_F_sigmat   data_block_nameR   R   t   _refln_A_meast   _refln_B_meast   _refln_intensity_calct   _refln_intensity_meast   _refln_intensity_sigmaR   t    s@   cif:global,_refln_F_calc cif:global,_refln_F_meas,_refln_F_sigmat   suffixR   t	   file_namei   (   s   _refln_F_calcRz   R{   (   s   _refln_A_calcs   _refln_B_calcRz   (   R}   R~   Rz   (   R   R€   R�   (   s   _refln_F_calcs   _refln_phase_calcR{   (   Ns   global(   s   _refln_F_calcRz   R{   (   s   _refln_F_calcRz   R{   (.   t   exercise_parserR   R   R7   R8   t   cif_quoted_stringR9   RB   t   syst   stdoutR   t   cif_invalid_missing_valueR   R   RE   t   error_countt   cif_invalid_stringt   cif_codt    cif_invalid_semicolon_text_fieldt   cif_valid_semicolon_text_fieldt   cif_unquoted_string_semicolonR   RF   RA   t   cif_invalid_loopt   cif_invalid_loop_2R   R4   t   from_cift   cif_miller_array_templatet   sortedt   sigmast   Nonet
   isinstanceR   RJ   t   is_complex_arrayt   as_miller_arrayst   joinRW   R   t   writet   closeR
   t   nameRU   (   t   cmRˆ   Rq   t   rt   at   dRb   t	   cif_str_1t	   cif_str_2R;   R|   Ro   t   mat   f(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   exercise_lex_parse_build‘   sÄ    			  	         	
	$"
	$
	$ 
	
	!  1	  
c      
   C   s;  |  d t  d | ƒ  ƒ j ƒ  } t j j | d ƒ } | j } | j ƒ  } t j j | ƒ j } t ƒ  } | j d | ƒ |  d | j	 ƒ  ƒ j
 d d ƒ } | j ƒ  }	 |	 j ƒ  t j j |	 j ƒ  ƒ j }
 x4| | | f D]#} | j ƒ  } t | j ƒ  ƒ d d g k st ‚ t | j ƒ  ƒ d d	 g k s3t ‚ t | j ƒ  d ƒ sNt ‚ t | j ƒ  d d  f ƒ sot ‚ t | j ƒ  d! d d d" d d d f g ƒ s¢t ‚ t | j ƒ  d# ƒ s½t ‚ t | j ƒ  j ƒ  d$ ƒ sÞt ‚ t | j ƒ  ƒ d k sÙ t ‚ qÙ W|  d t d | ƒ  ƒ j ƒ  } t j j | d ƒ } | j ƒ  d } t | t j j ƒ r”| j ƒ  d j ƒ  t  j! d g | j" ƒ  ƒ k s”t ‚ n  t j j | j d d ƒ ƒ j ƒ  d } xx | | f D]j } t ƒ  } | j# | ƒ t$ | j	 ƒ  d ƒ st ‚ t ƒ  } | j% | ƒ t$ | j	 ƒ  d ƒ sÉt ‚ qÉWd  S(%   NR   R   R   t   outR|   t   ot   ct   Ot   Cgš™™™™™é?i   g      à?i    iÿÿÿÿgü©ñÒMbP?gü©ñÒMb@?i   gš™™™™™¹?i
   i   i   iZ   s	   C 1 2/m 1R   t   _refln_observed_statusR   R   s  (1, 0, 0) 748.71 13.87
(2, 0, 0) 1318.51 24.29
(3, 0, 0) 1333.51 33.75
(4, 0, 0) 196.58 10.85
(5, 0, 0) 3019.71 55.29
(6, 0, 0) 1134.38 23.94
(7, 0, 0) 124.01 15.16
(8, 0, 0) -1.22 10.49
(9, 0, 0) 189.09 20.3
(10, 0, 0) 564.68 35.61
(-10, 1, 0) 170.23 22.26
s*  Miller array info: cif:_refln_F_squared_meas,_refln_F_squared_sigma
Observation type: xray.intensity
Type of data: double, size=11
Type of sigmas: double, size=11
Number of Miller indices: 11
Anomalous flag: False
Unit cell: (7.999, 9.372, 14.736, 82.625, 81.527, 81.726)
Space group: P -1 (No. 2)
(   gš™™™™™é?i   (   g      à?i    i    (   i    i    i    (   iÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿg¥âìÃgØ5?(   gš™™™™™¹?iÿÿÿÿ(   i
   i   i   iZ   iZ   iZ   (&   t   cif_xray_structureR9   R   R7   t   crystal_structure_buildert	   structuret   as_cif_blockR   t   as_cif_simpleR\   t   build_crystal_structurest   deep_copy_scattererst   convert_to_isotropict
   scattererst   listt   extract_labelsRB   t   extract_scattering_typesR   t   extract_occupanciest   extract_sitest   extract_u_start   extract_u_isoR)   t
   parametersRF   R*   R6   R:   R;   R—   R   R   RC   R?   t
   show_arrayR   t   show_summary(   R   R   R]   t
   xs_buildert   xs1t   xs_cif_blockt   xs2t   siot   xs3t   xs_isot   xs4t   xst   scR^   R_   Rg   R¤   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyR…   ø   sV    			
$$!'"(				s  data_global
loop_
    _symmetry_equiv_pos_as_xyz
    'x, y, z'
    '-x, y, -z'
    '-x, -y, -z'
    'x, -y, z'
    'x+1/2, y+1/2, z'
    '-x+1/2, y+1/2, -z'
    '-x+1/2, -y+1/2, -z'
    'x+1/2, -y+1/2, z'
_cell_length_a 10
_cell_length_b 20
_cell_length_c 30
_cell_angle_alpha 90
_cell_angle_beta 90
_cell_angle_gamma 90
loop_ # comment
    _atom_site_label # another comment
    _atom_site_fract_x
    _atom_site_fract_y
    _atom_site_fract_z
    _atom_site_U_iso_or_equiv
    _atom_site_occupancy
    _atom_site_type_symbol
    'o' 0.5 0 0 0.1 0.8 'O'
    'c' 0 0 0 0.2 1 'C'
loop_
    _atom_site_aniso_label
    _atom_site_aniso_U_11
    _atom_site_aniso_U_22
    _atom_site_aniso_U_33
    _atom_site_aniso_U_12
    _atom_site_aniso_U_13
    _atom_site_aniso_U_23
    'c' 0.1 0.2 0.3 0 0 0
s”  data_global
loop_
 _symmetry_equiv_pos_as_xyz
 'x, y, z'
 '-x, -y, -z'

_cell_length_a      7.999
_cell_length_b      9.372
_cell_length_c     14.736
_cell_angle_alpha  82.625
_cell_angle_beta   81.527
_cell_angle_gamma  81.726

loop_
 _refln_index_h
 _refln_index_k
 _refln_index_l
 _refln_F_squared_calc
 _refln_F_squared_meas
 _refln_F_squared_sigma
 _refln_observed_status
   1   0   0      756.07      748.71     13.87 o
   2   0   0     1266.94     1318.51     24.29 o
   3   0   0     1381.53     1333.51     33.75 o
   4   0   0      194.77      196.58     10.85 o
   5   0   0     3102.74     3019.71     55.29 o
   6   0   0     1145.05     1134.38     23.94 o
   7   0   0      103.98      124.01     15.16 o
   8   0   0       16.94       -1.22     10.49 o
   9   0   0      194.74      189.09     20.30 o
  10   0   0      581.30      564.68     35.61 o
 -10   1   0      148.83      170.23     22.26 o
s¡  data_global

loop_
 _symmetry_equiv_pos_as_xyz
 'x, y, z'
 '-x, -y, -z'

_cell_length_a     7.9999
_cell_length_b     9.3718
_cell_length_c    14.7362
_cell_angle_alpha  82.625
_cell_angle_beta   81.527
_cell_angle_gamma  81.726

loop_
 _refln_index_h
 _refln_index_k
 _refln_index_l
 %s
 %s
 %s
   1 0 0 1.2 1.3 0.1
   2 0 0 2.3 2.4 0.2
   3 0 0 3.4 3.5 0.3
   4 0 0 4.5 6.7 0.4

# comment with WS before and after

sL   data_global
_a 1
_[b] 2
_c e43
_d # comment
   # another comment
'1 2'
_e )
sL   data_global
# both of these are legal apparently
_a "a"b"
_b 'a dog's life'
s!   data_global
loop_
  _a
  _b
_c 1
s    data_1
loop_
_a _b _c
1 2 3 4 5
s   data_global
_a 1
_b
_c 3
s&   data_global
_a 'no closing quote
_b 1
s   data_1
_a ;
1
;
s   data_1
_a
;
1
;
s   data_1
_a ;1
_b ;
_c 2
s$   global_
_a 1
_b 2

data_1
_c 3
_d 4
c          C   sÊ   d d l  m }  t j d t ƒ j ƒ  } t j j | d ƒ j } | j	 d d d d ƒ t j
 d	 | d
 d ƒ } t ƒ  } | | IJt d j g  | j ƒ  j ƒ  D] } | j ƒ  ^ qž ƒ d ƒ sÆ t ‚ d  S(   Niÿÿÿÿ(   t   xrayR   R   t   photong‘'I×L¾æ?t   tablet   henket   xray_structureR   R    s   
s  loop_
  _atom_type.symbol
  _atom_type.scat_dispersion_real
  _atom_type.scat_dispersion_imag
  _atom_type.scat_Cromer_Mann_a1
  _atom_type.scat_Cromer_Mann_a2
  _atom_type.scat_Cromer_Mann_a3
  _atom_type.scat_Cromer_Mann_a4
  _atom_type.scat_Cromer_Mann_a5
  _atom_type.scat_Cromer_Mann_a6
  _atom_type.scat_Cromer_Mann_b1
  _atom_type.scat_Cromer_Mann_b2
  _atom_type.scat_Cromer_Mann_b3
  _atom_type.scat_Cromer_Mann_b4
  _atom_type.scat_Cromer_Mann_b5
  _atom_type.scat_Cromer_Mann_b6
  _atom_type.scat_Cromer_Mann_c
  _atom_type.scat_source
  _atom_type.scat_dispersion_source
  C  0.00347  0.00161  2.18189  1.77612  1.08772  0.64146  0.20789  0.10522  13.45337  32.57901  0.74729  0.25125  80.97993  0.05873  0.0
;
6-Gaussian fit: Grosse-Kunstleve RW, Sauter NK, Adams PD:
Newsletter of the IUCr Commission on Crystallographic Computing 2004, 3, 22-31.
;
  'Henke, Gullikson and Davis, At. Data and Nucl. Data Tables, 1993, 54, 2'
  O  0.01158  0.00611  2.91262  2.58808  0.98057  0.69663  0.68508  0.13677  14.48462   6.03818  0.42255  0.15446  35.53892  0.03841  0.0
;
6-Gaussian fit: Grosse-Kunstleve RW, Sauter NK, Adams PD:
Newsletter of the IUCr Commission on Crystallographic Computing 2004, 3, 22-31.
;
  'Henke, Gullikson and Davis, At. Data and Nucl. Data Tables, 1993, 54, 2'
(   t   cctbxRÊ   R   R   R­   R9   R7   R®   R¯   t   set_inelastic_form_factorst   atom_type_cif_loopR   R   Rš   R\   t
   splitlinest   rstripRB   (   RÊ   R]   RÈ   t   loopRq   t   li(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   exercise_atom_type_loopõ  s    	
1 c          C   sñ   d „  }  d „  } | |  t  t  ƒ ƒ } | j ƒ  d  k s? t ‚ | j ƒ  d  k sW t ‚ | |  t  t ƒ ƒ } | j ƒ  d  k s„ t ‚ t | j ƒ  ƒ d k s¢ t ‚ y | |  t t  ƒ ƒ Wn+ t k
 ræ } t | ƒ d k sí t ‚ n Xt ‚ d  S(   Nc         S   sB   d g } |  r | j  d ƒ n  | r5 | j  d ƒ n  d j | ƒ S(   Nt	   data_tests   _cell_length_a 12.605(3)s)   _symmetry_space_group_name_Hall  '-P 2yn's   
(   t   appendRš   (   t   uRq   t   result(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   get_inp!  s    	c         S   s2   t  j d |  ƒ j ƒ  } t  j j d | d ƒ j S(   NR   R@   t   test(   R   R   R9   R7   RQ   RR   (   R   R]   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   get_cs(  s    s
   P 1 21/n 1s6   Not all unit cell parameters are given in the cif file(	   RE   R)   R–   RB   R*   t   TrueRF   R   R   (   RÛ   RÝ   Rc   Rb   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt!   exercise_partial_crystal_symmetry   s    		c          C   s¬   t  j d t ƒ j ƒ  }  t  j j |  d ƒ } | j j ƒ  j ƒ  d k sO t	 ‚ t
 d d ƒ } | j t ƒ | j ƒ  t j d | j ƒ } | j ƒ  j ƒ  d k s¨ t	 ‚ d  S(   NR   t   r1e5xsfs   P 1 (No. 1)Rƒ   s   .cifR„   (   R   R   t
   p1_sym_opsR9   R7   RQ   RR   R*   t   symbol_and_numberRB   R   R›   Rœ   R	   t   extract_fromR�   (   Rž   t
   cs_builderRy   Rc   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   exercise_crystal_symmetry8  s    
c    
   
   C   sæ  t  j d t ƒ j ƒ  }  t |  ƒ d k s0 t ‚ t |  d j d d d d d d	 d
 g ƒ ƒ } | j ƒ  so t ‚ | j	 ƒ  d k s‡ t ‚ t  j
 | d d( ƒ} g  } xF d) D]> } | | j j ƒ  k sÊ t ‚ | j t j | j | ƒ ƒ q© Wt j | Œ  } t | j ƒ  | ƒ st ‚ t |  d j d d d d d g ƒ ƒ } | j ƒ  sNt ‚ | j	 ƒ  d k sft ‚ | j ƒ  d  k	 s~t ‚ | j ƒ  j ƒ  d k sœt ‚ t | j ƒ  j ƒ  d* ƒ s½t ‚ t |  d j d d d d g ƒ ƒ } | j ƒ  sót ‚ | j ƒ  st ‚ | j	 ƒ  d k st ‚ | j ƒ  d  k s5t ‚ | j ƒ  d  k sMt ‚ t  j d t ƒ j ƒ  }  t |  ƒ d k s}t ‚ t |  d j d d d d g ƒ ƒ } | j ƒ  s³t ‚ | j	 ƒ  d  k sËt ‚ t  j d t ƒ j ƒ  }  t |  ƒ d k sût ‚ t  |  d! j ƒ  t j ƒ st ‚ t  |  d! j ƒ  t j ƒ s?t ‚ t  j d t! ƒ j ƒ  }  t |  ƒ d k sot ‚ x  |  D] }	 |	 j ƒ  svt ‚ qvW|  d! j" ƒ  j# d" d# d$ g k sºt ‚ |  d% j" ƒ  j# d" d& d' g k sât ‚ d  S(+   NR   i   t   ,s   scale_group_code=1s   crystal_id=2s   wavelength_id=3s   _refln.pdbx_HL_A_isos   _refln.pdbx_HL_B_isos   _refln.pdbx_HL_C_isos   _refln.pdbx_HL_D_isoi   R   s   crystal_id=1s   wavelength_id=1s   _refln.F_meas_aus   _refln.F_meas_sigma_aui   s   C 1 2 1 (No. 5)g×£p=
d@g=
×£p�F@g)\�Âõ¸[@g     €V@g®Gázt`@s   _refln.pdbx_I_pluss   _refln.pdbx_I_plus_sigmas   _refln.pdbx_I_minuss   _refln.pdbx_I_minus_sigmai   i   s   _refln.F_calcs   _refln.phase_calci   i    t   r3v56sfs   _refln.pdbx_DELFWTs   _refln.pdbx_DELPHWTi   s   _refln.pdbx_FWTs   _refln.pdbx_PHWT(   s   _refln.pdbx_HL_A_isos   _refln.pdbx_HL_B_isos   _refln.pdbx_HL_C_isos   _refln.pdbx_HL_D_iso(   s   _refln.pdbx_HL_A_isos   _refln.pdbx_HL_B_isos   _refln.pdbx_HL_C_isos   _refln.pdbx_HL_D_iso(   g×£p=
d@g=
×£p�F@g)\�Âõ¸[@g     €V@g®Gázt`@g     €V@($   R   R   R/   R™   RU   RB   t   find_miller_array_from_labelsRš   t   is_hendrickson_lattman_arrayR?   R<   R@   RA   RØ   R   RJ   t   hendrickson_lattmanR   R   t   is_xray_amplitude_arrayR•   R–   R*   Râ   R)   R½   t   is_xray_intensity_arrayR-   t   space_groupt   r3ad7sfR˜   t   integer_observationsR—   Rç   RW   RX   (
   Ro   t	   hl_coeffsR`   t   abcdRa   t   hl_coeffs_from_cif_blockt	   f_meas_aut   pdbx_I_plus_minust   f_calcR¤   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt    exercise_mmcif_structure_factorsD  sr    			
!				"" c         C   sA   x* |  D]" } | t  | j ƒ  ƒ k r | Sq Wt d | ƒ ‚ d  S(   Ns*   Could not find miller array with labels %s(   RF   RW   t   RuntimeError(   Ro   RX   R¤   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyRè   ‚  s    s‚  
data_r3adrsf
_cell.length_a  163.970
_cell.length_b  45.230
_cell.length_c  110.890
_cell.angle_alpha  90.000
_cell.angle_beta  131.640
_cell.angle_gamma  90.000

#
_symmetry.entry_id    3adr
_symmetry.space_group_name_H-M 'C 1 2 1'

loop_
_refln.crystal_id
_refln.wavelength_id
_refln.scale_group_code
_refln.status
_refln.index_h
_refln.index_k
_refln.index_l
_refln.F_meas_au
_refln.F_meas_sigma_au
_refln.pdbx_HL_A_iso
_refln.pdbx_HL_B_iso
_refln.pdbx_HL_C_iso
_refln.pdbx_HL_D_iso
1 1 1 o    0    2    2   484.70  11.74  -3.168  -3.662   3.247   3.261
1 1 1 o    0    2    3   337.40   4.60   2.287  -3.629   0.053  -0.597
1 1 1 o    0    2    4   735.40   8.43   0.476  -8.605  -4.861   0.921
1 1 1 o    0    2    5   433.70   4.76   2.453  -1.663   0.000  -9.540
1 1 1 o    0    2    6   435.20   4.96  -9.081   3.661   1.511  -2.736
2 3 1 o    0    2    7   427.50   4.56   8.677  -0.013   2.307  -4.220
2 3 1 o    0    2    8   661.00   7.26  -6.468   5.112  -5.411  -6.731
2 3 4 o    0    2    9   211.90   2.64  -2.279   0.914   0.455  -6.038
2 3 4 f    0    2   10   466.80   5.01  -0.005   6.330  -1.916  -0.598
2 3 4 o    0    2   11   424.20   4.66  -0.938   7.011  -1.603   1.724
#END
data_r3adrAsf
#
#
#
loop_
_refln.crystal_id
_refln.wavelength_id
_refln.scale_group_code
_refln.index_h
_refln.index_k
_refln.index_l
_refln.pdbx_I_plus
_refln.pdbx_I_plus_sigma
_refln.pdbx_I_minus
_refln.pdbx_I_minus_sigma
1 3 1   87    5  -46       40.2     40.4        6.7     63.9
1 3 1   87    5  -45       47.8     29.7       35.1     30.5
1 3 1   87    5  -44       18.1     33.2        0.5     34.6
1 3 1   87    5  -43        6.1     45.4       12.9     51.6
1 3 1   87    5  -42       -6.6     45.6      -15.5     55.8
1 3 1   87    7  -37        6.3     43.4          ?        ?
1 3 1   87    7  -36      -67.2     55.4          ?        ?
1 3 1   88    2  -44          0       -1       35.0     38.5
1 3 1   88    2  -43          0       -1       57.4     41.5
1 3 1   88    4  -45       -1.0     46.1       -9.1     45.6
1 3 1   88    4  -44      -19.8     49.2        0.3     34.7
1 3 1   88    6  -44       -1.8     34.8          ?        ?
#END OF REFLECTIONS
sô  
data_r3ad7sf
_cell.length_a             198.9488
_cell.length_b             198.9488
_cell.length_c             196.7646
_cell.angle_alpha           90.0000
_cell.angle_beta            90.0000
_cell.angle_gamma          120.0000

loop_
_symmetry_equiv.id
_symmetry_equiv.pos_as_xyz
1 'X,  Y,  Z'
2 'X-Y,  X,  Z+5/6'
3 '-Y,  X-Y,  Z+2/3'
4 '-X,  -Y,  Z+1/2'
5 '-X+Y,  -X,  Z+1/3'
6 'Y,  -X+Y,  Z+1/6'
7 '-Y,  -X,  -Z+1/6'
8 'X-Y,  -Y,  -Z'
9 'X,  X-Y,  -Z+5/6'
10 'Y,  X,  -Z+2/3'
11 '-X+Y,  Y,  -Z+1/2'
12 '-X,  -X+Y,  -Z+1/3'

loop_
_refln.wavelength_id
_refln.crystal_id
_refln.scale_group_code
_refln.index_h
_refln.index_k
_refln.index_l
_refln.status
_refln.F_meas_au
_refln.F_meas_sigma_au
_refln.F_calc
_refln.phase_calc
_refln.fom
1 1 1       0    0    6 o     267.2   12.1    353.2   180.0  0.04
1 1 1       0    0   12 o    4700.0  113.0   3962.4   360.0  1.00
1 1 1       0    0   18 o   10214.0  222.9   8775.9   360.0  1.00
1 1 1       0    0   24 o    8268.9  192.9  11557.1   180.0  1.00
1 2 1       0    0   30 o    3274.6   77.5   2214.5     0.0  1.00
1 2 1       0    0   36 o     317.8   30.4   1993.3     0.0  0.05
1 2 1       0    0   42 o   12026.4  286.2   6514.5   180.0  1.00
1 2 1       0    0   48 o    1972.6   51.4   1357.9   180.0  0.91
sî  
data_r3v56sf

_cell.length_a  121.6330
_cell.length_b  121.6330
_cell.length_c  157.2140
_cell.angle_alpha  90.0000
_cell.angle_beta  90.0000
_cell.angle_gamma  120.0000

loop_
_symmetry_equiv.id
_symmetry_equiv.pos_as_xyz
1  'X,  Y,  Z'
2  'X-Y,  X,  Z+5/6'
3  '-Y,  X-Y,  Z+2/3'
4  '-X,  -Y,  Z+1/2'
5  '-X+Y,  -X,  Z+1/3'
6  'Y,  -X+Y,  Z+1/6'

loop_
_refln.index_h
_refln.index_k
_refln.index_l
_refln.pdbx_FWT
_refln.pdbx_PHWT
_refln.pdbx_DELFWT
_refln.pdbx_DELPHWT
0    0    6 1793.541 297.538 758.340 297.538
0    0   12 926.361   8.616  79.780   8.616
0    0   18 2789.494   3.915 158.391 183.915
0    0   24  18.715 196.581 133.229 196.581
0    0   30 1040.906 174.397 370.046 174.397
0    0   36 2065.720 180.659 163.982   0.659
0    0   42 1850.858 199.047 1496.942 199.047
0    0   48 882.296 190.106 289.614  10.106
0    1    6 161.907 235.025 332.891 235.025
0    1    7 168.822  39.648 511.322  39.648
0    1    8  42.963  55.666 347.014  55.666
0    1    9  81.428  68.620  89.690 248.620
sR  
data_r3ad7sf
_cell.length_a             198.9488
_cell.length_b             198.9488
_cell.length_c             196.7646
_cell.angle_alpha           90.0000
_cell.angle_beta            90.0000
_cell.angle_gamma          120.0000

loop_
_symmetry_equiv.id
_symmetry_equiv.pos_as_xyz
1 'X,  Y,  Z'
2 'X-Y,  X,  Z+5/6'
3 '-Y,  X-Y,  Z+2/3'
4 '-X,  -Y,  Z+1/2'
5 '-X+Y,  -X,  Z+1/3'
6 'Y,  -X+Y,  Z+1/6'
7 '-Y,  -X,  -Z+1/6'
8 'X-Y,  -Y,  -Z'
9 'X,  X-Y,  -Z+5/6'
10 'Y,  X,  -Z+2/3'
11 '-X+Y,  Y,  -Z+1/2'
12 '-X,  -X+Y,  -Z+1/3'

loop_
_refln.index_h
_refln.index_k
_refln.index_l
_refln.status
_refln.F_meas_au
_refln.F_meas_sigma_au
0    0    6 o     267   12
0    0   12 o    4700  113
0    0   18 o   10214  222
0    0   24 o    8268  192
0    0   30 o    3274   77
0    0   36 o     317   30
0    0   42 o   12026  286
0    0   48 o    1972   51
s@  data_r1e5xsf
_cell.entry_id          1E5X
_cell.length_a          57.760
_cell.length_b          62.140
_cell.length_c          76.590
_cell.angle_alpha       109.48
_cell.angle_beta        97.61
_cell.angle_gamma       112.74
_cell.formula_units_Z   2

_symmetry_equiv.id           1
_symmetry_equiv.pos_as_xyz   X,Y,Z
c          C   sG   d }  d d l  m } y | d |  ƒ Wn t k
 r< } n Xt ‚ d  S(   Ns   ÿø      iÿÿÿÿ(   R   R   (   R5   R   R   R   (   t   binary_stringR   Rb   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   exercise_detect_binary_  s      c          C   sp   d }  y t  j d |  ƒ Wn t k
 r/ } n Xt ‚ d } y t  j d | ƒ Wn t k
 re } n Xt ‚ d  S(   Ns$   data_fred
loop_
loop_
_a
_b
1 2
3 4
R   s›   data_sucrose
_a 1
_exptl_absorpt_process_details
;
Final HKLF 4 output contains 64446 reflections, Rint = 0.0650
 (47528 with I > 3sig(I), Rint = 0.0624);
(   R   R   R   R   (   t   empty_loop_strRb   t   bad_semicolon_text_field(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   exercise_syntax_errorsf  s    	    c           C   s<   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  d  S(   N(   Rü   Rù   Rå   Rr   R¦   Rß   Rö   RÖ   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   exercise€  s    t   __main__t   OK(8   t
   __future__R    t   cctbx.array_familyR   RÏ   R   R   R   R   t   iotbxR   R5   R   t   iotbx.cif.buildersR   R	   t   iotbx.reflection_file_readerR
   t   libtbx.test_utilsR   R   R   R   t	   cStringIOR   R‡   Rr   R¦   R…   R­   R6   R“   RŒ   R†   R�   R‘   R‰   R‹   R�   RŽ   R�   RD   RÖ   Rß   Rå   Rö   Rè   R/   Rî   Rç   Rï   Rá   Rù   Rü   Rý   t   __name__(    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/tst_lex_parse_build.pyt   <module>   sT   ""	‚	g	j# 
	+			>	H0**			
