ó
“™xTc           @   sx  d  d l  m Z d  d l m Z m Z m Z m Z m Z 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 m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z d „  Z e d „ Z e d „ Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d S(   iÿÿÿÿ(   t   division(   t   adptbxt   crystalt   millert   sgtbxt   uctbxt   xray(   t   flexN(   t   model(   t   Sorry(   t   OrderedDictt
   OrderedSett   CifBuilderErrorc           B   s   e  Z e j Z RS(    (   t   __name__t
   __module__t	   Exception(    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR   
   s   t   cif_model_builderc           B   sJ   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   s@   | |  _  |  j  d  k r* t j ƒ  |  _  n  d  |  _ d  |  _ d  S(   N(   t   _modelt   NoneR   t   cift   _current_blockt   _current_save(   t   selft
   cif_object(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   __init__   s
    		c         C   sU   t  j ƒ  |  _ | j ƒ  d k r* | } n | | j d ƒ d } |  j |  j | <d  S(   Nt   global_t   _i   (   R   t   blockR   t   lowert   findR   (   R   t   data_block_headingt
   block_name(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   add_data_block   s
    	c         C   s”   |  j  d  k	 r |  j  } n	 |  j } t j ƒ  } t | ƒ t | ƒ k sN t ‚ t | ƒ } x& t | ƒ D] } | | | | | <qg W| j | ƒ d  S(   N(	   R   R   R   R   t   loopt   lent   AssertionErrort   ranget   add_loop(   R   t   headert   columnsR   R!   t	   n_columnst   i(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR%      s    	c         C   sB   |  j  d  k	 r | |  j  | <n |  j d  k	 r> | |  j | <n  d  S(   N(   R   R   R   (   R   t   keyt   value(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   add_data_item+   s
    c         C   sO   |  j  d  k s t ‚ t j ƒ  |  _  | | j d ƒ d } |  j  |  j | <d  S(   NR   i   (   R   R   R#   R   t   saveR   R   (   R   t   save_frame_headingt	   save_name(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   start_save_frame3   s    c         C   s   d  |  _ d  S(   N(   R   R   (   R   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   end_save_frame9   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR   <   s    N(
   R   R   R   R   R    R%   R,   R0   R1   R   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR      s   					t   builder_basec           B   sŠ   e  Z i d( d 6d) d 6d* d 6d+ d 6d, d 6d- d 6d. d 6d/ d 6d0 d 6d1 d 6d2 d 6d3 d 6d4 d  6d5 d" 6d6 d$ 6d7 d& 6Z d8 d' „ Z RS(9   t   _symmetry_equiv_pos_as_xyzs    _space_group_symop.operation_xyzs   _symmetry_equiv.pos_as_xyzt    _space_group_symop_operation_xyzt   _symmetry_equiv_pos_site_ids   _space_group_symop.ids   _symmetry_equiv.idt   _space_group_symop_idt   _symmetry_space_group_name_Halls   _space_group.name_Halls   _symmetry.space_group_name_Hallt   _space_group_name_Halls   _symmetry_space_group_name_H-Ms   _space_group.name_H-M_alts   _symmetry.space_group_name_H-Ms   _space_group_name_H-M_altt   _symmetry_Int_Tables_numbers1   _symmetry.Int_Tables_number_space_group.IT_numbert   _space_group_IT_numbers   _cell.length_at   _cell_length_as   _cell.length_bt   _cell_length_bs   _cell.length_ct   _cell_length_cs   _cell.angle_alphat   _cell_angle_alphas   _cell.angle_betat   _cell_angle_betas   _cell.angle_gammat   _cell_angle_gammas   _cell.volumet   _cell_volumes   _refln.index_ht   _refln_index_hs   _refln.index_kt   _refln_index_ks   _refln.index_lt   _refln_index_lc         C   sh   |  j  j | ƒ } | d  k	 r" | Sx? |  j j | g  ƒ D]( } |  j  j | ƒ } | d  k	 r8 | Sq8 W| S(   N(   t	   cif_blockt   getR   t   __equivalents__(   R   R*   t   defaultR+   t   equiv(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   get_cif_item_   s      (   R3   s    _space_group_symop.operation_xyzs   _symmetry_equiv.pos_as_xyz(   R5   s   _space_group_symop.ids   _symmetry_equiv.id(   R7   s   _space_group.name_Halls   _symmetry.space_group_name_Hall(   s   _symmetry_space_group_name_H-Ms   _space_group.name_H-M_alts   _symmetry.space_group_name_H-M(   R9   s1   _symmetry.Int_Tables_number_space_group.IT_number(   s   _cell.length_a(   s   _cell.length_b(   s   _cell.length_c(   s   _cell.angle_alpha(   s   _cell.angle_beta(   s   _cell.angle_gamma(   s   _cell.angle_gamma(   s   _cell.volume(   s   _refln.index_h(   s   _refln.index_k(   s   _refln.index_lN(   R   R   RG   R   RJ   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR2   @   s6            
t   crystal_symmetry_builderc           B   s   e  Z e d  „ Z RS(   c         C   s[  | |  _  |  j d ƒ } |  j d ƒ } d  } | d  k	 rÕt | t ƒ r] t j | g ƒ } n  | d  k	 r® t | t ƒ r� t j | g ƒ } n  t | ƒ t | ƒ k s® t ‚ n  i  |  _	 t
 j ƒ  } t | t ƒ rÞ | g } n  xt | ƒ D]ã \ } } y t
 j | ƒ } WnN t k
 rZ}	 t |	 ƒ }
 d |
 k rTt d |
 j d ƒ d ƒ ‚ q[‚  n X| d  k rt| d } n@ y t | | ƒ } Wn) t k
 r³}	 t d t |	 ƒ ƒ ‚ n X| |  j	 | <| j | ƒ që Wn&|  j d ƒ } |  j d	 ƒ } |  j d
 ƒ } | d  k rD| d! k rDy t
 j | ƒ } WqDt k
 r@qDXn  | d  k r�| d" k r�y t
 j d | ƒ j ƒ  } Wq�t k
 r‹q�Xn  | d  k	 rÚ| d# k rÚy t
 j d | ƒ j ƒ  } WqÚt k
 rÖqÚXn  | d  k rû| rût d ƒ ‚ n  g  d D] } |  j d | ƒ ^ q} xC t | ƒ D]5 \ } } t | t j ƒ r.t d d | ƒ ‚ q.q.Wxq d d d g D]` } |  j d | ƒ } t | t j ƒ rµt d | ƒ ‚ n  | d k rÊd } n  | j | ƒ qwW| j d  ƒ } | d k r| rt d ƒ ‚ n  d  } nñ | d k r³y# g  | D] } t | ƒ ^ q*} Wn t k
 rbt d ƒ ‚ n Xy t j | ƒ } Wqt k
 r¯}	 d t |	 ƒ k r©t |	 ƒ ‚ q°‚  qXnR | d  k	 rùt j g  | D] } | d  k	 rÌt | ƒ ^ qÌ| ƒ } n t d ƒ ‚ | d  k	 r<| d  k	 r<| j | ƒ r<t d ƒ ‚ n  t j  d | d  | ƒ |  _! d  S($   NR4   R6   s   Parse error: s(   Error interpreting symmetry operator: %siÿÿÿÿi   s+   Error interpreting symmetry operator id: %sR8   s   _space_group_name_H-M_altR:   t   ?t   symbolt   numbers>   No symmetry instructions could be extracted from the cif blockt   abct   _cell_length_s=   Data item _cell_length_%s cannot be declared in a looped listt   alphat   betat   gammat   _cell_angle_s<   Data item _cell_angle_%s cannot be declared in a looped listt   90i   s.   Unit cell parameters not found in the cif filei    s&   Invalid unit cell parameters are givens   cctbx Error: Unit cells6   Not all unit cell parameters are given in the cif files5   Space group is incompatible with unit cell parameterst	   unit_cellt   space_group(   NRL   (   NRL   (   NRL   ("   RE   RJ   R   t
   isinstancet
   basestringR   t
   std_stringR"   R#   t   sym_opsR   RW   t	   enumeratet   rt_mxt   RuntimeErrort   strR   t   splitt   intt
   ValueErrort
   expand_smxR   t   space_group_infot   groupt   appendt   countt   float_from_stringR   RV   t   infer_unit_cell_from_symmetryt   is_compatible_unit_cellR   t   symmetryt   crystal_symmetry(   R   RE   t   strictR[   t
   sym_op_idsRW   R)   t   opt   st   et   str_et	   sym_op_idt   hall_symbolt	   hm_symbolt	   sg_numbert   itemst   itemt   icRV   t   vals(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR   j   sÀ    	!	       &		#
4	(   R   R   t   FalseR   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRK   h   s   t   crystal_structure_builderc           B   s   e  Z d  „  Z RS(   c         C   s<  t  j |  | d t ƒg  g  d' D] } | j d | ƒ ^ q  D] } t | d d | ƒ^ q= } | j d  ƒ d k rg  g  d( D] } | j d | ƒ ^ q~ D] } t | d d | ƒ^ q› } | j d  ƒ d	 k rá t d
 ƒ ‚ n  t j	 | Œ  } |  j
 j ƒ  j | ƒ } n3 | j d  ƒ d	 k r/t d
 ƒ ‚ n  t j	 | Œ  } | j d ƒ } | j d ƒ } t | j d | j d ƒ ƒ ƒ } | d  k r­t | j d | j d ƒ ƒ ƒ }	 n  | j d ƒ }
 t | j d ƒ ƒ } t j ƒ  } t | j d ƒ ƒ } | d  k	 ry| } g  d) D] } | j d | ƒ ^ q} t } | j d  ƒ d	 k rtg  d* D] } | j d | ƒ ^ qL} t } n  | j d  ƒ d k r’d  } qy| j d  ƒ d	 k r´t d ƒ qyd  } x9 | D]1 } | d k } | d  k rè| } qÁ| | M} qÁW| } | j | ƒ } y/ g  | D] } t j | j | ƒ ƒ ^ q} Wn) t k
 rf} t d t | ƒ ƒ ‚ n Xt j | Œ  } n  x‘t t | ƒ ƒ D]}} i  } | d  k	 rÁ| j d  t | | ƒ ƒ n  | d  k	 rê| j d! t | | ƒ ƒ n  | d  k	 rx| d  k	 rx| d  k	 rx| | | k rx| t j | | | ƒ } | rPt j | ƒ } n  | j d" t j |  j
 j ƒ  | ƒ ƒ nR | d  k	 r¡| j d" t | | ƒ ƒ n) |	 d  k	 rÊ| j d# t |	 | ƒ ƒ n  | d  k	 ró| j d$ t | | ƒ ƒ n  | j t j  | �  ƒ qŒW| j! | ƒ t j" d% |  j
 d& | ƒ |  _" d  S(+   NRm   t   xt   yt   zs   _atom_site_fract_%st   column_namei   s   _atom_site_Cartn_%si    s$   No atomic coordinates could be foundt   _atom_site_labelt   _atom_site_type_symbolt   _atom_site_U_iso_or_equivt   _atom_site_U_equiv_geom_meant   _atom_site_B_iso_or_equivt   _atom_site_B_equiv_geom_meant   _atom_site_adp_typet   _atom_site_occupancyt   _atom_site_aniso_labeli   i   i!   i   i   i   s   _atom_site_aniso_U_%is   _atom_site_aniso_B_%ii   s   Some ADP items are missingRL   s   Error interpreting ADPs: t   labelt   scattering_typet   ut   bt	   occupancyRl   t
   scatterers(   R}   R~   R   (   R}   R~   R   (   i   i   i!   i   i   i   (   i   i   i!   i   i   i   (#   RK   R   t   TrueRF   t'   as_double_or_none_if_all_question_marksRg   R   R   R   t   vec3_doubleRl   RV   t   fractionalizet   flex_double_else_nonet   xray_scatterert   flex_std_string_else_noneR{   t   selectt   doubleRb   R_   t   sym_mat3_doubleR$   R"   t
   setdefaultt   first_indexR   t   b_as_ut   u_cif_as_u_starRh   Rf   R   t	   scatterert	   set_sitest	   structure(   R   RE   t   axisR   t   atom_sites_fract   atom_sites_cartt   labelst   type_symbolt   U_iso_or_equivt   B_iso_or_equivt   adp_typeRŽ   R�   t   atom_site_aniso_labelR)   t   adpst   have_Bst   selt   adpt   fRq   t   kwds(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR   Î   s¢    CC		##		 	/ (   R   R   R   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR|   Ì   s   t   miller_array_builderc           B   s�   e  Z i e j ƒ  d  6e j ƒ  d 6e j ƒ  d 6d	 d 6Z d	 d	 d „ Z d „  Z d	 d	 d	 d „ Z	 d	 d	 d	 d „ Z
 d „  Z RS(
   t   _refln_F_squaredt   _refln_intensityt   _refln_Ft   _refln_Ac   3      C   sÚ  t  j |  | ƒ | d  k	 r@ |  j j d | j d t ƒ |  _ n  t ƒ  |  _ | d  k ra i  } n  | d  k r‚ t	 j
 d d ƒ } n  |  j ƒ  } xy| D]q\ |  _ } d  |  _ d  |  _ d  |  _ d  g } d  g } d  g } xO| j ƒ  D]A\ }	 }
 |	 j d ƒ s |	 j d ƒ s |	 j d ƒ rç t |
 d |	 ƒ} | d  k rDqç n  | j ƒ  } |	 j d ƒ rn| j ƒ  } n  t | ƒ d	 k r†qç n  t	 j t	 j |  j |  j ƒ j ƒ  | ƒ } |	 j d ƒ r×| |  _ | j ƒ  } q(|	 j d ƒ rþ| |  _ | j ƒ  } q(|	 j d ƒ r(| |  _ | j ƒ  } q(qç qç Wx×	t | j ƒ  ƒ D]Ã	\ } }
 x´	| D]¬	} x£	| D]›	} x’	| D]Š	} d
 | k r„qln  | }	 | g } d  } |	 j d ƒ sÆ|	 j d ƒ sÆ|	 j d ƒ rÛd  } d  } d  } n  d } | d  k	 r$| d | 7} | j d d | ƒ | j | d  ƒ } n  | d  k	 rU| d | 7} | j d d | ƒ n  | d  k	 r†| d | 7} | j d d | ƒ n  |	 | 7}	 d  } |	 |  j k r«qln  |  j |
 d | d | d | ƒ} | d  k rÞqln  d |	 k r | } d  }	 x@ d5 D]8 } | j d | ƒ | k rý| j d | ƒ | }	 PqýqýW|	 d  k rR| | }	 qX
|	 |  j k rX
|  j |	 j ƒ  d  k rX
| } |  j |	 } t  | | |	 | ƒ t! | | ƒ } | j" | j# ƒ  ƒ | j$ ƒ  } | j% | j& d | j' | g d | ƒ ƒ qlqX
nXd |	 k rÔ| } | j d d ƒ } | | k r6qln  | } | |  j k rX
|  j | } t  | | | | ƒ t! | | ƒ } | j$ ƒ  } | j( | d t ƒ} | j% | j& d | j' | g ƒ ƒ | |  j | <qlqX
n„d |	 k rc|	 |	 j) d ƒ d } d | } |	 j | d ƒ }	 |	 |  j k r(qln  g  d D] } | j | d | ƒ ^ q/}  g  d D] } |	 j | d | ƒ ^ qX}! g  |  D] } | j | ƒ ^ q�}" |" j* d  ƒ d k rX
|  j+ |" d d | d | d | ƒ}# g  t, |" |  ƒ D]' \ }$ }% t- |$ j. |# ƒ d |% ƒ^ qæ}" t	 j t	 j |  j |  j j. |# ƒ ƒ j ƒ  t/ j0 |" Œ  ƒ } | d  |  } qX
nõd |	 k s{d |	 k r¸d |	 k r¼|	 j d d  ƒ |	 }	 }& | j d d  ƒ | } }' nA d |	 k rý|	 j d! d" ƒ |	 }	 }& | j d! d" ƒ | } }' n  |	 | k rX
|& | k rX
| j# ƒ  }( |	 |  j k rµ|  j |	 j$ ƒ  } |  j |	 j# ƒ  }) |  j |	 j d# t/ j1 |) |( ƒ ƒ |  j |	 <|  j |	 j% | j& d | j' |& g ƒ ƒ qlqµqX
n d$ |	 k rX
d |	 k rX
|  j j2 ƒ  d  k	 rX
| j d$ d% ƒ }* |* d& }+ |* | k r 	| }, |* | }	 n% |+ | k r?	| }, |+ | }	 n d  }, |, d  k	 rX
| j# ƒ  } |	 |  j k r÷	|  j |	 } t! | |	 ƒ } t  | | |	 |, ƒ |  j |	 j$ ƒ  } | j( | d t ƒ|  j |	 <|  j |	 j% | j& d | j' |, g ƒ ƒ qU
|  j | | d | d | d | ƒ} t  | | |	 |, ƒ | j( | d t ƒ| | |, g } qX
n  | j' d  k	 rw
| j' | } n  d' „  }- |- |	 | d& d d d( d) g ƒ }. |. j d* ƒ sÝ
|. j d+ ƒ sÝ
|. j d, ƒ sÝ
|. j d- ƒ r| j3 ƒ  sõ
| j4 ƒ  r| j5 ƒ  n4 |. j d. ƒ r6| j3 ƒ  s)| j4 ƒ  r6| j6 ƒ  n  | j7 ƒ  sN| j7 ƒ  rŠt8 | j# ƒ  t/ j9 ƒ rŠ| j& d# | j# ƒ  j: ƒ  ƒ } qŠn  | j% | j& d | ƒ ƒ | j7 ƒ  s»| j7 ƒ  rã| j$ ƒ  } | j% | j& d | ƒ ƒ n  |  j j; |	 | ƒ qlWq_WqRWq?Wq• Wx¥|  j j< ƒ  j ƒ  D]Ž\ }	 } |	 j d) ƒ sbd/ |	 k sb|	 j d( ƒ sbd0 |	 k r d) |	 k r‰|	 }/ |	 j d) d( ƒ }0 n' d( |	 k r°|	 }0 |	 j d( d) ƒ }/ n  |0 |  j k r®|/ |  j k r®|  j j= |0 ƒ }1 |  j j= |/ ƒ }2 |2 j& d1 |2 j ƒ  ƒ j% |2 j$ ƒ  ƒ }2 |1 j> |2 d2 t? ƒ} | j& d3 t ƒ } | j% |2 j$ ƒ  j& d t@ tA |1 j$ ƒ  j' |2 j$ ƒ  j' ƒ ƒ ƒ ƒ | jB |1 jC ƒ  ƒ |  j j; |	 | ƒ q®q q Wt |  j ƒ d k rÖtD d4 ƒ ‚ n  d  S(6   Nt   other_symmetryt   forcet   source_typeR   t   wavelength_idt
   crystal_idt   scale_group_codeR€   i   t   index_t    s   _%ii    s   wavelength_id=%is   crystal_id=%is   scale_group_code=%it   _sigmat   _meast   _calcR¤   t
   wavelengtht   PHWTt   FWTt   degt   HL_i   t   HL_At   ABCDiÿÿÿÿs   .B_t   _B_s   .A_t   _Bt   _At   datat   phase_t   F_t   _auc         S   sJ   xC | D]; } | d k r q n  |  j  | ƒ r |  t | ƒ  }  q q W|  S(   NR¼   (   t   endswithR"   (   t   stringt
   substringst   substr(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   rstrip_substringsß  s     t   _plust   _minust	   F_squaredt	   intensitys   .It   _It   Ft   _minus_t   _plus_t   indicest   assert_is_similar_symmetryt   anomalous_flags'   No reflection data present in cif block(   R¼   R¾   R¿   (E   RK   R   R   Rl   t   join_symmetryt   crystal_symmetry_from_fileR�   R
   t   _arraysR   t
   array_infot#   get_miller_indices_containing_loopsRÛ   t   wavelength_id_arrayt   crystal_id_arrayt   scale_group_arrayt	   iteritemsRÎ   t$   as_int_or_none_if_all_question_markst   countst   keysR"   t   arrayt   sett   auto_anomaloust   sortedRw   t   insertRF   t   flex_std_string_as_miller_arrayt   replacet   sigmast   check_array_sizest   as_flex_doublet
   set_sigmasRÊ   t   infot   set_infot   customized_copyR¤   t   phase_transferR   Rg   t   get_selectiont   zipR‘   R—   R   t   hendrickson_lattmant   complex_doubleRW   t   is_real_arrayt   is_integer_arrayt#   set_observation_type_xray_intensityt#   set_observation_type_xray_amplitudet   is_xray_amplitude_arrayRX   Ra   t	   as_doubleRš   t   copyt   popt   concatenateR{   t   listR   t   set_observation_typet   observation_typeR   (3   R   RE   t   base_array_infot   wavelengthst   refln_containing_loopst
   refln_loopt   wavelength_idst   crystal_idst   scale_groupsR*   R+   RÊ   Rè   Rê   RŠ   t   w_idt   crys_idt   scale_groupR¤   RÀ   t
   key_suffixRñ   t   sigmas_labelt   suffixRõ   t
   phwt_labelt	   fwt_labelt
   phwt_arrayt   phasest	   hl_lettert   hl_keyt   lettert	   hl_labelst   hl_keyst	   hl_valuest	   selectiont   hlt   labt   key_bt   label_bt   b_partt   a_partt   alt_key1t   alt_key2t	   phase_keyRÒ   t   stripped_keyt	   minus_keyt   plus_keyt
   plus_arrayt   minus_array(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR   /  s¾   								 $			 		
 	 (
	 	
))":
 		$'"	)c      
   C   sc  g  } xV|  j  j j ƒ  D]B} x9| j ƒ  D]+} d | k rD q, n  g  d D]% } | j | j d d | ƒ ƒ ^ qK } | j d  ƒ d k r» t d | j d d d | j	 d  ƒ ƒ ƒ ‚ n  g  } xp t
 | ƒ D]b \ } } y t j | ƒ } Wn3 t k
 r"}	 t d d | t |	 ƒ f ƒ ‚ n X| j | ƒ qÎ Wt j | Œ  }
 | j |
 | f ƒ Pq, Wq W| S(   Nt   index_ht   hkls   index_%si    s2   Miller indices missing from current CIF block (%s)s$   Invalid item for Miller index %s: %st   HKL(   RE   t   loopst   valuesRé   RF   Rð   Rg   R   R   t   indexR\   R   Ra   Rb   R_   Rf   t   miller_index(   R   R2  R!   R*   R)   t   hkl_strt   hkl_intt   h_strt   h_intRq   RÛ   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRâ     s,     2*!	c         C   sÀ   | d k | d k B} |  j  d  k	 rN | d  k	 rN | |  j  j ƒ  | k M} n  |  j d  k	 r… | d  k	 r… | |  j j ƒ  | k M} n  |  j d  k	 r¼ | d  k	 r¼ | |  j j ƒ  | k M} n  | S(   Nt   .RL   (   Rã   R   RÊ   Rä   Rå   (   R   R+   R¸   R¹   Rº   R   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRù   .  s    c         C   sì   |  j  | d | d | d | ƒ} | j | ƒ } y% t j | ƒ } |  j j | ƒ } WnY t k
 r° y% t j | ƒ } |  j j | ƒ } Wq± t k
 r¬ | } |  j } q± Xn X| j ƒ  d k rÇ d  St	 j
 t	 j |  j | ƒ j ƒ  | ƒ S(   NR¸   R¹   Rº   i    (   Rù   R—   R   Ra   RÛ   Rb   R˜   t   sizeR   R   Rê   Rë   Rl   Rì   (   R   R+   R¸   R¹   Rº   R   RÊ   RÛ   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRï   ;  s$     c         C   s   |  j  S(   N(   Rà   (   R   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   arraysR  s    N(   R   R   R   RÖ   t	   amplitudeR   t   observation_typesR   Râ   Rù   Rï   R<  (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR°   &  s   
è	c         C   sí   t  |  j ƒ  t j ƒ r |  St  |  j ƒ  t j ƒ r_ |  j d |  j ƒ  j ƒ  ƒ j |  j ƒ  ƒ Sy t j |  j ƒ  ƒ Wnp t	 k
 rè } t
 | ƒ } | j d ƒ rÙ | j d ƒ d } t d | | | j ƒ  f ƒ ‚ qé t | ƒ ‚ n Xd  S(   NRÊ   s   Invalid floating-point value: t   :i   s'   Invalid floating-point value for %s: %s(   RX   RÊ   R   R˜   Ra   R÷   R  Rö   Rõ   Rb   R_   t
   startswithR   R   t   strip(   Rê   R*   Rq   t   e_strR)   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRó   V  s    	"c         C   s5   |  j  ƒ  | j  ƒ  k r1 t d | | f ƒ ‚ n  d  S(   Ns2   Miller arrays '%s' and '%s' are of different sizes(   R;  R   (   t   array1t   array2t   key1t   key2(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRò   h  s    c         C   s@   |  d  k r d  S|  } | j d ƒ r) d  S| j d ƒ r< d  S| S(   NRL   R:  (   R   t   all_eq(   t   cif_block_itemt   result(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt$   none_if_all_question_marks_or_periodn  s       c         C   s°   t  |  ƒ } | d  k r d  Sy t j | ƒ SWn| t k
 r« } t | ƒ } | d  k	 rœ | j d ƒ rœ | j d ƒ d } t d | | | j	 ƒ  f ƒ ‚ q¬ t | ƒ ‚ n Xd  S(   Ns   Invalid integer value: R?  i   s    Invalid integer value for %s: %s(
   RJ  R   R   Ra   Rb   R_   R@  R   R   RA  (   RH  R€   t   stringsRq   RB  R)   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRç   u  s     	c         C   s°   t  |  ƒ } | d  k r d  Sy t j | ƒ SWn| t k
 r« } t | ƒ } | d  k	 rœ | j d ƒ rœ | j d ƒ d } t d | | | j	 ƒ  f ƒ ‚ q¬ t | ƒ ‚ n Xd  S(   Ns   Invalid floating-point value: R?  i   s'   Invalid floating-point value for %s: %s(
   RJ  R   R   R˜   Rb   R_   R@  R   R   RA  (   RH  R€   RK  Rq   RB  R)   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR‘   …  s     	c         C   s=   y t  j |  ƒ SWn% t k
 r8 } t t | ƒ ƒ ‚ n Xd  S(   N(   R   R˜   Rb   R   R_   (   t   flex_std_stringRq   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   flex_double•  s    c         C   sE   t  |  ƒ } | d  k r d  Sy t j | ƒ SWn t k
 r@ n Xd  S(   N(   RJ  R   R   R˜   Rb   (   RH  RK  (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR”   ›  s     c         C   s   t  |  t j ƒ r |  Sd  Sd  S(   N(   RX   R   RZ   R   (   RH  (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyR–   ¤  s    c         C   s<   t  |  t ƒ r |  St |  j d ƒ j d ƒ j d ƒ d ƒ S(   sS   a cif string may be quoted,
and have an optional esd in brackets associated with its   't   "t   (i    (   RX   t   floatRA  R`   (   RÏ   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyRh   ª  s    c   
      C   sJ  xÕ |  j  j ƒ  D]Ä } x» | j ƒ  D]­ } d | k r# | j d ƒ } | j d ƒ } d  | | g k rÉ i  } xW t | | ƒ D]F \ } } y& t | ƒ } t | ƒ | t | ƒ <Wq{ t k
 rÀ q{ Xq{ W| Sd  Sq# q# Wq W|  j d ƒ } |  j d ƒ }	 d  | |	 g k rFy' t | ƒ } i t |	 ƒ t | ƒ 6SWqFt k
 rBqFXn  d  S(   Ns   _diffrn_radiation_wavelength.s   _diffrn_radiation_wavelength.ids'   _diffrn_radiation_wavelength.wavelength(	   R2  R3  Ré   RF   R   Rú   Ra   RP  Rb   (
   RE   R!   R*   R  t   wavelength_strst   wl_R¸   RÀ   t   wl_idt   wavelength_str(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   get_wavelengths±  s0    (%   t
   __future__R    t   cctbxR   R   R   R   R   R   t   cctbx.array_familyR   t	   iotbx.cift   iotbxR   t   libtbx.utilsR	   t   libtbx.containersR
   R   R   t   objectR   R2   RK   R|   R°   Ró   Rò   RJ  R   Rç   R‘   RM  R”   R–   Rh   RU  (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/builders.pyt   <module>   s.   .2(dZÿ 1								