ó
‹™xTc           @   sÐ  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  d l
 m Z 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 Z d  d l m Z d  d l m Z m Z d  d l m Z m Z d  d l Z d  d l m Z d e f d „  ƒ  YZ d „  Z  d e! f d „  ƒ  YZ" e# d „ Z$ d e j% j& f d „  ƒ  YZ' d „  Z( d e! f d „  ƒ  YZ) d „  Z* d e j+ j, f d „  ƒ  YZ- d e- f d „  ƒ  YZ. d „  Z/ d S(    iÿÿÿÿ(   t   divisionN(   t   flex(   t   crystal(   t   OrderedDictt
   OrderedSet(   t   dict_with_default_0(   t
   group_args(   t   wrap_always(   t   null_outt   Sorry(   t   format_value(   t	   hierarchy(   t
   hy36encodet
   hy36decode(   t'   refmac_range_to_phenix_string_selectiont   tls(   t   crystal_symmetry_buildert   pdb_hierarchy_builderc           B   s   e  Z d  „  Z RS(   c   5   	   C   s	  t  j |  | ƒ t j ƒ  |  _ | j d ƒ } | j d ƒ } | d  k r[ | j d ƒ } n  | j d ƒ } | j d ƒ } | j d ƒ } | d  k r� | } n  | d  k r² | } n  | j d ƒ } | d  k rß | j d ƒ } n  | j d	 ƒ } | j d
 ƒ }	 |	 d  k r| j d ƒ }	 n  | | | | | |	 g j d  ƒ d k sHt ‚ | d  k	 sZt ‚ | j d ƒ }
 | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } t j	 | j d ƒ ƒ } t j	 | j d ƒ ƒ } t j	 | j d ƒ ƒ } t j	 | j d ƒ ƒ } t j	 | j d ƒ ƒ } | j d ƒ } | j d ƒ } d  } | d  k	 ròg  d; D]' } | j d  | d | d! f ƒ ^ qc} | j d  ƒ d< k s«t ‚ | j d  ƒ d k rÉ| } n¶ | j d  ƒ d" k sät ‚ g  d= D]' } | j d# | d | d! f ƒ ^ që} | j d  ƒ d> k s3t ‚ | j d  ƒ d k rZt
 j | ƒ } n  | j d  ƒ ou| j d  ƒ st ‚ | d  k	 ròy& g  | D] } t j	 | ƒ ^ q•} Wn) t k
 rÜ} t d$ t | ƒ ƒ ‚ n Xt j | Œ  } qòn  d  } d  } d  } d  }  d  }! xÆt | j ƒ  ƒ D]²}" | }# | |" } | d  k	 sKt ‚ | |# k r|t j d% | ƒ }$ |  j j |$ ƒ n  | }% | |" } | d  k	 sžt ‚ | }& | |" } | d& k rÃd' } n  | d  k	 sÕt ‚ | |% k rt j d% | ƒ }' |$ j |' ƒ n | |& k st ‚ |  }( |	 |" }  |  d  k	 s7t ‚ |! }) | d  k	 rk| |" }! |! d? k rkd' }! qkn  |  |( k s�|! |) k s�| |% k rÕt j d) t d* d+ d, t |  ƒ ƒ d- |! ƒ }* |' j |* ƒ t ƒ  }+ n  | |" }, |, d& k rôd. }, n  | |" }- |, |- f |+ k rgt j d/ |, d0 |- ƒ }. |. |+ |, |- f <|, d. k rW|* j d |. ƒ qw|* j |. ƒ n |+ |, |- f }. t j ƒ  }/ |. j |/ ƒ |/ j  | |" ƒ |/ j! t" | |" | |" ƒ ƒ |/ j# d1 | |" | |" | |" f ƒ |/ j$ | |" ƒ |/ j% | |" ƒ |/ j& t d* d2 d, t | |" ƒ ƒ ƒ |/ j' d3 ƒ | d  k	 ra| |" d4 k rat( |/ _) n  | d  k	 rý| |" }0 |0 d@ k rý|0 j* d5 ƒ s¡|0 j+ d5 ƒ rªd5 }1 n d6 }1 |0 j, d7 ƒ }0 t |0 ƒ }0 |0 d k ràd. }1 n  |/ j- d8 |0 |1 f ƒ qýn  |
 d  k	 r;|
 |" }2 |2 dA k r;|/ j. d9 t/ |2 ƒ ƒ q;n  | d  k	 ry| |" }3 |3 dB k ry|/ j0 d: t/ |3 ƒ ƒ qyn  | d  k	 r#| d  k	 r#t j1 | |/ j2 j, ƒ  ƒ }4 |4 d  k	 rÕ| |4 } |/ j3 | ƒ qÕq#q#Wt4 |  j j5 ƒ  ƒ d! k r	d. |  j j5 ƒ  d _6 n  d  S(C   Ns   _atom_site.type_symbols   _atom_site.auth_atom_ids   _atom_site.label_atom_ids   _atom_site.label_alt_ids   _atom_site.label_asym_ids   _atom_site.auth_asym_ids   _atom_site.auth_comp_ids   _atom_site.label_comp_ids   _atom_site.label_entity_ids   _atom_site.auth_seq_ids   _atom_site.label_seq_idi    s&   _atom_site.phenix_scat_dispersion_reals&   _atom_site.phenix_scat_dispersion_imags   _atom_site.pdbx_PDB_ins_codes   _atom_site.pdbx_PDB_model_nums   _atom_site.ids   _atom_site.group_PDBs   _atom_site.B_iso_or_equivs   _atom_site.Cartn_xs   _atom_site.Cartn_ys   _atom_site.Cartn_zs   _atom_site.occupancys   _atom_site.pdbx_formal_charges   _atom_site_anisotrop.idt   11t   22t   33t   12t   13t   23s   _atom_site_anisotrop.U[%s][%s]i   i   s   _atom_site_anisotrop.B[%s][%s]s   Error interpreting ADPs: t   idt   .t    t   ?t   resseqt   widthi   t   valuet   icodet    t   altloct   resnamet   new_xyzi   s       t   HETATMt   -t   +s    -+s   %i%st   new_fpt   new_fdp(   R   R   R   R   R   R   (   i    i   (   R   R   R   R   R   R   (   i    i   (   R   R   N(   R   R   (   R   R   (   R   R   (7   R   t   __init__R   t   roott   gett   Nonet   countt   AssertionErrorR   t   doublet   adptbxt   b_as_ut
   ValueErrort   CifBuilderErrort   strt   sym_mat3_doublet   ranget   sizet   modelt   append_modelt   chaint   append_chaint   residue_groupR   t   intt   append_residue_groupR   t
   atom_groupt   insert_atom_groupt   append_atom_groupt   atomt   append_atomt   set_elementt   set_namet   format_pdb_atom_namet   set_xyzt   set_bt   set_occt
   set_serialt	   set_segidt   Truet   heterot   endswitht
   startswitht   stript
   set_charget   set_fpt   floatt   set_fdpt   first_indext   serialt   set_uijt   lent   modelsR   (5   t   selft	   cif_blockt   type_symbolt   atom_labelst   alt_idt   label_asym_idt   auth_asym_idt   comp_idt	   entity_idt   seq_idt   atom_site_fpt   atom_site_fdpt   pdb_ins_codet	   model_idst   atom_site_idt	   group_PDBt   B_iso_or_equivt   cart_xt   cart_yt   cart_zt   occut   formal_charget   anisotrop_idt   adpst   ijt   u_ijt   b_ijt   adpt   et   current_model_idt   current_label_asym_idt   current_auth_asym_idt   current_residue_idt   current_ins_codet   i_atomt   last_model_idR8   t   last_label_asym_idt   last_auth_asym_idR:   t   last_residue_idt   last_ins_codeR<   t   atom_groupst   current_altloct   current_resnameR?   RB   t   charget   signt   fpt   fdpt
   u_ij_index(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR)      s(    	 	-1	1%&


 	

 		
 	
		 
	 	


(   t   __name__t
   __module__R)   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR      s   c         C   s×   t  |  ƒ d k r |  St  |  ƒ d k r, |  S|  j ƒ  }  t  | ƒ d k rv |  j ƒ  d | j ƒ  k r° d |  }  q° n: t  | ƒ d k r° |  j ƒ  d | j ƒ  k r° |  }  q° n  x  t  |  ƒ d k  rÒ d |  }  q³ W|  S(   Ni   i   i    s    %si   s   %s (   RX   RP   t   upper(   t	   atom_namet	   atom_type(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRF   Ì   s    t   extract_tls_from_cif_blockc           B   s   e  Z d  „  Z d „  Z RS(   c   !      C   sŠ  g  |  _  t |  _ d  |  _ | j d ƒ } g  d( D]% \ } } | j d | | f ƒ ^ q1 } g  d) D]% \ } } | j d	 | | f ƒ ^ qc } g  d* D]% \ } } | j d | | f ƒ ^ q• } g  d D] }	 | j d |	 ƒ ^ qÇ }
 t | t ƒ rq| g } g  | D] } | g ^ q} g  | D] } | g ^ q!} g  | D] } | g ^ q=} g  |
 D] } | g ^ qY}
 n  | j d  ƒ d+ k sŒt	 ‚ | j d  ƒ d, k s§t	 ‚ | j d  ƒ d- k sÂt	 ‚ |
 j d  ƒ d. k sÝt	 ‚ | j d  ƒ d k röd  S| j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | d  k	 sqt	 ‚ t | t ƒ rÚt
 j | g ƒ } | g } | g } | g } | g } | d  k	 rÚt
 j | g ƒ } qÚn  | j ƒ  } x”t | ƒ D]†\ } } g  | D] } t | | ƒ ^ q} g  | D] } t | | ƒ ^ q)} g  | D] } t | | ƒ ^ qL} g  |
 D] } t | | ƒ ^ qo} | | k j ƒ  } g  } x“ | D]‹ } | d  k	 r÷| j d ƒ r÷| j | | j ƒ  ƒ | j | d ƒ qª| j t d | d | | d | | d  | | d! | | ƒ ƒ qªWd" j | ƒ }  |  j  j t d# | d$ | d% | d& | d' |  ƒ ƒ qóWt |  _ d  S(/   Ns   _pdbx_refine_tls.idR   R   R   R   R   R   s   _pdbx_refine_tls.T[%s][%s]s   _pdbx_refine_tls.L[%s][%s]t   21t   31t   32s   _pdbx_refine_tls.S[%s][%s]t   xyzs   _pdbx_refine_tls.origin_%si    i   i	   i   s   _pdbx_refine_tls_group.ids$   _pdbx_refine_tls_group.refine_tls_ids'   _pdbx_refine_tls_group.beg_auth_asym_ids&   _pdbx_refine_tls_group.beg_auth_seq_ids'   _pdbx_refine_tls_group.end_auth_asym_ids&   _pdbx_refine_tls_group.end_auth_seq_ids(   _pdbx_refine_tls_group.selection_detailsR   iÿÿÿÿt   pdb_hierarchyt   chain_startt   resseq_startt	   chain_endt
   resseq_ends    or t   tt   lt   st   origint   selection_string(   s   11s   22s   33s   12s   13s   23(   s   11s   22s   33s   12s   13s   23(	   s   11s   12s   13R�   s   22s   23R‘   R’   s   33(   i    i   (   i    i   (   i    i	   (   i    i   (   t
   tls_paramst   Falset   tls_presentR,   t   error_stringR+   t
   isinstancet
   basestringR-   R.   R   t
   std_stringt   atom_selection_cachet	   enumerateRS   t
   iselectiont   all_eqt   appendRP   t	   selectionR   t   joinR   RL   (!   RZ   R[   R”   t   tls_idst   it   jt   T_ijst   L_ijst   S_ijst   xt   origin_xyzst   T_ijt   L_ijt   S_ijt
   origin_xyzt   tls_group_idst   refine_tls_idst   beg_chain_idst   beg_seq_idst   end_chain_idst   end_seq_idst   selection_detailst   selection_cachet   tls_idt   Tt   Lt   St   origin_xRœ   t   i_groupst   sel_stringst   i_groupt   sel_str(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR)   å   sz    			///&					####


&c         C   s   |  j  S(   N(   Rž   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   extract2  s    (   RŠ   R‹   R)   RÉ   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR�   ä   s   	Mc   
      C   s”  d d  l  } | d  k r- | j j j ƒ  } n  t | ƒ d k rc t |  ƒ d k sW t ‚ d g } n t |  ƒ t | ƒ k s� t ‚ | j j j d d' ƒ } | j j j d d( ƒ } xÂ t t	 |  | ƒ ƒ D]« \ } \ } } | d d% d& g }	 |	 j
 t | j ƒ ƒ |	 j
 t | j ƒ ƒ |	 j
 t | j ƒ ƒ |	 j
 t | j ƒ ƒ | j |	 ƒ | j | d | d d% | f ƒ qÇ W| j | ƒ | j | ƒ | S()   Niÿÿÿÿi    i   t   allt   headers   _pdbx_refine_tls.ids   _pdbx_refine_tls.detailss   _pdbx_refine_tls.methods   _pdbx_refine_tls.origin_xs   _pdbx_refine_tls.origin_ys   _pdbx_refine_tls.origin_zs   _pdbx_refine_tls.T[1][1]s   _pdbx_refine_tls.T[2][2]s   _pdbx_refine_tls.T[3][3]s   _pdbx_refine_tls.T[1][2]s   _pdbx_refine_tls.T[1][3]s   _pdbx_refine_tls.T[2][3]s   _pdbx_refine_tls.L[1][1]s   _pdbx_refine_tls.L[2][2]s   _pdbx_refine_tls.L[3][3]s   _pdbx_refine_tls.L[1][2]s   _pdbx_refine_tls.L[1][3]s   _pdbx_refine_tls.L[2][3]s   _pdbx_refine_tls.S[1][1]s   _pdbx_refine_tls.S[1][2]s   _pdbx_refine_tls.S[1][3]s   _pdbx_refine_tls.S[2][1]s   _pdbx_refine_tls.S[2][2]s   _pdbx_refine_tls.S[2][3]s   _pdbx_refine_tls.S[3][1]s   _pdbx_refine_tls.S[3][2]s   _pdbx_refine_tls.S[3][3]s   _pdbx_refine_tls_group.ids$   _pdbx_refine_tls_group.refine_tls_ids    _pdbx_refine_tls_group.selections(   _pdbx_refine_tls_group.selection_detailsR   t   refined(   s   _pdbx_refine_tls.ids   _pdbx_refine_tls.detailss   _pdbx_refine_tls.methods   _pdbx_refine_tls.origin_xs   _pdbx_refine_tls.origin_ys   _pdbx_refine_tls.origin_zs   _pdbx_refine_tls.T[1][1]s   _pdbx_refine_tls.T[2][2]s   _pdbx_refine_tls.T[3][3]s   _pdbx_refine_tls.T[1][2]s   _pdbx_refine_tls.T[1][3]s   _pdbx_refine_tls.T[2][3]s   _pdbx_refine_tls.L[1][1]s   _pdbx_refine_tls.L[2][2]s   _pdbx_refine_tls.L[3][3]s   _pdbx_refine_tls.L[1][2]s   _pdbx_refine_tls.L[1][3]s   _pdbx_refine_tls.L[2][3]s   _pdbx_refine_tls.S[1][1]s   _pdbx_refine_tls.S[1][2]s   _pdbx_refine_tls.S[1][3]s   _pdbx_refine_tls.S[2][1]s   _pdbx_refine_tls.S[2][2]s   _pdbx_refine_tls.S[2][3]s   _pdbx_refine_tls.S[3][1]s   _pdbx_refine_tls.S[3][2]s   _pdbx_refine_tls.S[3][3](   s   _pdbx_refine_tls_group.ids$   _pdbx_refine_tls_group.refine_tls_ids    _pdbx_refine_tls_group.selections(   _pdbx_refine_tls_group.selection_details(   t   iotbx.cif.modelR,   t   cifR8   t   blockRX   R.   t   loopR¦   t   zipt   extendt   listRœ   R™   Rš   R›   t   add_rowt   add_loop(
   t   tlsost   selection_stringsR[   t   iotbxt   tls_loopt   tls_group_loopt   i_tlst   tlsoR�   t   tls_row(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   tls_as_cif_block6  sf                              	   	(%t	   cif_inputc           B   s@  e  Z d d e j j d d e d  „ Z d „  Z e	 d „ Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d e 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" e	 d „ Z# d „  Z$ e	 d d „ Z% RS(    c         C   s)  | d  k	 r6 | d  k s t ‚ t j j d | ƒ } n  | d  k	 ri t j j d | ƒ } | j ƒ  |  _ nT | d  k	 r¥ t j j d d j	 | ƒ ƒ } | j ƒ  |  _ n | d  k	 r½ | |  _ n  t
 |  j ƒ d k rá t d ƒ ‚ n  |  j j ƒ  d |  _ t |  j ƒ |  _ |  j j |  _ d | |  _ d  S(   Nt   pdb_idt	   file_patht   input_strings   
i    s/   mmCIF file must contain at least one data blocks   file %s(   R,   R.   RØ   t   pdbt   ent_path_local_mirrorRÎ   t   readerR8   t	   cif_modelR«   RX   R	   t   valuesR[   R   t   builderR   t   _source_info(   RZ   t	   file_namet
   cif_objectt   source_infot   linesRà   t   raise_sorry_if_format_errorRå   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR)   w  s"    c         C   s   d S(   Nt   mmcif(    (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt	   file_type�  s    c         C   s   | r |  j  j ƒ  n  |  j  S(   N(   R   t   reset_atom_i_seqs(   RZ   t   set_atom_i_seq(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   construct_hierarchy“  s    c         C   s   |  j  S(   N(   Ré   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRì   ˜  s    c         C   s   |  j  j ƒ  S(   N(   R   t   atoms(   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRô   ›  s    c         C   s   |  j  j ƒ  S(   N(   R   t   atoms_with_labels(   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRõ   ž  s    c         C   s/   t  j g  |  j j ƒ  D] } | j ƒ  ^ q ƒ S(   N(   R   t   size_tR   RY   t
   atoms_size(   RZ   t   m(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   model_indices¡  s    c         C   s
   t  j ƒ  S(   N(   R   Rö   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   ter_indices¤  s    c         C   sC   |  j  j } | d  k r | S| d  k r, | S| j d | d | ƒ S(   Nt   other_symmetryt   force(   Rè   t   crystal_symmetryR,   t   join_symmetry(   RZ   Rý   t   weak_symmetryt   self_symmetry(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRý   ¨  s    	c         C   s
   |  j  j S(   N(   Rè   Rý   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   crystal_symmetry_from_cryst1´  s    c         C   s   |  j  j ƒ  d j d ƒ S(   Ni    s   _cell.Z_PDB(   Ræ   Rç   R+   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   extract_cryst1_z_columns·  s    c         C   s   d S(   NR    (    (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   connectivity_sectionº  s    c         C   s   d S(   NR    (    (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   connectivity_annotation_section¿  s    c         C   s   d S(   NR    (    (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   remark_sectionÂ  s    c         C   s   d S(   NR    (    (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   heterogen_sectionÅ  s    c         C   s   d S(   NR    (    (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   crystallographic_sectionÈ  s    c         C   s   d S(   NR    (    (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   title_sectionË  s    c         C   s*   |  j  ƒ  } | d  k	 r& t | d  ƒ Sd  S(   Ni   (   t   deposition_dateR,   R=   (   RZ   t   yyyymmdd(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   extract_header_yearÎ  s    c         C   s}   |  j  j ƒ  d } | j d ƒ } | d  k	 ry | j d ƒ } t | t ƒ rP | St j | d ƒ } | d  k	 ry | | Sn  d  S(   Ni    s   _database_PDB_rev.nums   _database_PDB_rev.date_originalt   1(   Ræ   Rç   R+   R,   R¢   R£   R   RU   (   RZ   R[   t   rev_numt   date_originalR­   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR	  Ó  s    c         C   s   t  |  j | ƒ S(   N(   t   _cif_get_r_rfree_sigma_objectR[   (   RZ   Rê   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   get_r_rfree_sigmaà  s    c         C   s   t  |  j j d ƒ ƒ S(   Ns"   _exptl_crystal.density_percent_sol(   t   _float_or_NoneR[   R+   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   get_solvent_contentã  s    c         C   s   t  |  j j d ƒ ƒ S(   Ns   _exptl_crystal.density_Matthews(   R  R[   R+   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   get_matthews_coeffæ  s    c         C   s|   |  j  j d ƒ } |  j  j d ƒ } t | t ƒ rC | d k rC | S| d  k	 rx t j | d ƒ } | d k rx | | Sn  d  S(   Ns   _software.names   _software.classificationt
   refinementi    (   R[   R+   R¢   R£   R,   R   RU   (   RZ   t   software_namet   software_classificationR­   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   get_program_nameé  s     c         C   s   t  |  j | ƒ S(   N(   R�   R[   (   RZ   R   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   extract_tls_paramsó  s    c      
   C   sé   g  d D]( \ } } |  j  j d
 | | f ƒ ^ q } | j d  ƒ d k rN d  S| j d  ƒ d k si t ‚ g  d D] } |  j  j d | ƒ ^ qp } | j d  ƒ d k s­ t ‚ g  | D] } t | ƒ ^ q´ g  | D] } t | ƒ ^ qÐ g S(   NR   R   R   R�   R   R   R‘   R’   R   s'   _atom_sites.fract_transf_matrix[%s][%s]i	   i    t   123s#   _atom_sites.fract_transf_vector[%s](	   s   11s   12s   13s   21s   22s   23s   31s   32s   33(   R[   R+   R-   R,   R.   RS   (   RZ   R­   R®   t   fractionalization_matrixt   fractionalization_vector(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   scale_matrixö  s    2)c         C   s,   t  j g  |  j j ƒ  D] } | j ^ q ƒ S(   N(   R   R¤   R   RY   R   (   RZ   R8   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRg     s    c         C   s   t  |  j ƒ S(   N(   t   extract_f_model_core_constantsR[   (   RZ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR    s    c         C   s»   |  j  j d ƒ } t |  j  j d ƒ ƒ } | r… | d  k	 r@ | S| d  k	 r· g  | j d ƒ D] } t | j ƒ  ƒ ^ q\ } | d Sn2 | d  k	 r· g  | j d ƒ D] } t | ƒ ^ q¡ Sd  S(   Ns#   _diffrn_source.pdbx_wavelength_lists   _diffrn_source.pdbx_wavelengtht   ,i    (   R[   R+   R  R,   t   splitRS   RP   (   RZ   t
   first_onlyt   wavelengthst
   wavelengtht   f(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   extract_wavelength	  s    .&c         C   s   |  j  j d ƒ } | S(   Ns   _exptl.method(   R[   R+   (   RZ   t   exptl_method(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   get_experiment_type  s    g-Cëâ6?c         C   s�  d d l  m } g  } g  } g  } g  } x t |  j j d ƒ ƒ D]æ \ } }	 | j |	 | f ƒ | j |  j j d ƒ | d k ƒ g  d D], \ }
 } |  j j d |
 | f ƒ | ^ qŠ } | j | j t t | ƒ ƒ ƒ g  d D]  }
 |  j j d |
 ƒ | ^ qâ } | j | j	 t t | ƒ ƒ ƒ qA W| j
 ƒ  g  | D] \ } } | ^ q<} g  | D] } | | ^ q[} g  | D] } | | ^ qx} g  | D] } | | ^ q•} g  | D] \ } } | ^ q²} t j j j ƒ  } xž t | | | | ƒ D]‡ \ }	 } } } | j d | ƒ s9| r+t d ƒ ‚ q9t d ƒ GHn  | j ƒ  oN| j ƒ  } | j d | d | d | po| d |	 ƒ qòW| S(   s™  
    Read MTRIX records from a pdb file

    Arguments:
    ----------
    error_handle -- True: will stop execution on improper rotation matrices
                    False: will continue execution but will replace the values in the
                           rotation matrix with [0,0,0,0,0,0,0,0,0]
    eps -- Rounding accuracy for avoiding numerical issue when when testing proper rotation

    error_handle can be use if one does not want a 'Sorry' to be raised. The program will continue to execute
    but all coordinates of the bad rotation matrix will zero out

    Returns:
    --------
    result : object containing information on all NCS operations
    iÿÿÿÿ(   t   matrixs   _struct_ncs_oper.ids   _struct_ncs_oper.codet   givenR   R   R   R�   R   R   R‘   R’   R   s   _struct_ncs_oper.matrix[%s][%s]R  s   _struct_ncs_oper.vector[%s]t   rms_tolerances"   Rotation matrices are not proper! t   rR™   t   coordinates_presentt   serial_number(	   s   11s   12s   13s   21s   22s   23s   31s   32s   33(   t   scitbxR'  R¦   R[   R+   R©   t   sqrt   mapRS   t   colt   sortRØ   Rã   t   _t"   _mtrix_and_biomt_records_containerRÑ   t   is_r3_rotation_matrixR	   t   is_r3_identity_matrixt   is_col_zerot   add(   RZ   t   error_handlet   epsR'  t   transt   rotsR,  R+  R­   t   snR²   t   yR*  R™   R2  t   items_orderR®   t   resultt   cpt   ignore_transform(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   process_mtrix_records  sB    %6*#
(	N(&   RŠ   R‹   R,   RØ   Rã   t   Please_pass_string_or_NoneRŸ   R)   Rð   RL   Ró   Rì   Rô   Rõ   Rù   Rú   Rý   R  R  R  R  R  R  R  R  R  R	  R  R  R  R  R  R  Rg   R  R$  R&  RB  (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRß   u  sH   							
														
					c         C   s6   |  d  k	 r2 |  d k s$ |  d k r( d  St |  ƒ Sd  S(   NR   R   (   R,   RS   (   R   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR  T  s    R  c           B   s&   e  Z d  „  Z d „  Z d d „ Z RS(   c         C   s�   | |  _  t | j d ƒ ƒ |  _ t | j d ƒ ƒ |  _ t | j d ƒ ƒ |  _ t | j d ƒ ƒ |  _ t | j d ƒ ƒ |  _ t | j d ƒ ƒ |  _ d  S(   Ns   _refine.ls_R_factor_R_works   _refine.ls_R_factor_R_frees   _refine.pdbx_ls_sigma_Fs   _refine.ls_d_res_highs   _refine.ls_d_res_lows   _reflns.d_resolution_high(	   Rê   R  R+   t   r_workt   r_freet   sigmat   hight   lowt
   resolution(   RZ   R[   Rê   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR)   \  s    	c         C   s›   d t  d |  j ƒ t  d t |  j ƒ ƒ t  d t |  j ƒ ƒ t  d t |  j ƒ ƒ t  d t |  j ƒ ƒ t  d t |  j ƒ ƒ t  d t |  j ƒ ƒ f } | S(   Ns   %s %s %s %s %s %s %ss   %6s(	   R
   Rê   R4   RD  RE  RF  RG  RH  RI  (   RZ   R?  (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   formatted_stringe  s    c         C   s,   | d  k r t j } n  | |  j ƒ  IJd  S(   N(   R,   t   syst   stdoutRJ  (   RZ   t   log(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   showp  s     N(   RŠ   R‹   R)   RJ  R,   RN  (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR  [  s   			c         C   s&  t  |  j d ƒ ƒ } t  |  j d ƒ ƒ } g  d D]+ \ } } t  |  j d	 | | f ƒ ƒ ^ q1 } | j d  ƒ d k s} t ‚ t  |  j d ƒ ƒ } t  |  j d ƒ ƒ } t  |  j d ƒ ƒ } t  |  j d ƒ ƒ }	 d  }
 d  } d  } t d | d | d | d |
 d | d | d | d | d | d |	 ƒ 
S(   Ns    _refine.solvent_model_param_ksols    _refine.solvent_model_param_bsolR   R   R   R   R   R   s   _refine.aniso_B[%s][%s]i    i   s$   _refine.pdbx_solvent_vdw_probe_radiis$   _refine.pdbx_solvent_shrinkage_radiis   _refine.ls_R_factor_R_works   _refine.ls_R_factor_R_freet   k_solt   b_solt   b_cartt   twin_fractiont   twin_lawt   r_solvt   r_shrinkt   grid_step_factorRD  RE  (   s   11s   22s   33s   12s   13s   23(   i    i   (   R  R+   R-   R,   R.   R   (   R[   RO  RP  R­   R®   RQ  RT  RU  RD  RE  RR  RS  RV  (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR  u  s.    5t   pdb_hierarchy_as_cif_blockc           B   s    e  Z d d  d d  d  d „ Z RS(   i   i   c   P      C   sÐ  | d  k r t j ƒ  } n  t j j j |  | d d ƒd | } d | } d | }	 d | }
 t j j j d d4 ƒ } t j j j d d5 ƒ } | d } | d } | d } | d } | d	 } | d
 } | d } | d } | d } | d } | d } | d } | d } | d } | d } | d } | d } | d } | d } | d }  | d }! | d }" | d }# | d }$ | d }% | d }& | d }' | d  }( | d! }) | d" }* | d# }+ | d$ }, | d% }- | d& }. t	 j
 ƒ  }/ t ƒ  }0 t	 j
 ƒ  }1 t	 j
 ƒ  }2 d' }3 d( }4 xJ| j ƒ  D]<}5 |5 j }6 |6 d( k rMd) }6 n  x|5 j ƒ  D]}7 |7 j }8 |8 j ƒ  d( k r„d* }8 n  t |4 ƒ }4 xÎ|7 j ƒ  D]À}9 |9 j j ƒ  }: |3 d+ 7}3 |9 j }; |; d, k rÚd- }; n  x€|9 j ƒ  D]r}< |< j }= |= d( k rd* }= n  |< j j ƒ  }> d- }? x6|< j ƒ  D](}@ d. }A |@ j rKd/ }A n  g  |@ j D] }B | |B ^ qU\ }C }D }E |@ j ƒ  }F |F d  k r•d- }F n |F j ƒ  }F |F d( k r¶d- }F n  |@ j |@ j }G }H |G d' k rð|H d' k rðd* }G d* }H n d0 |G }G d0 |H }H | j |A ƒ | j t t d1 d2 d3 |@ j  ƒ ƒ ƒ | j |@ j! j ƒ  ƒ | j |= ƒ | j |> ƒ | j |8 ƒ | j |: ƒ | j |; ƒ | j |C ƒ | j |D ƒ | j |E ƒ | j | |@ j" ƒ | j |	 |@ j# ƒ | j |@ j$ j ƒ  ƒ | j |F ƒ | j |G ƒ | j |H ƒ | j |4 ƒ | j |? ƒ |  j t |3 ƒ ƒ |! j |6 j ƒ  ƒ |@ j% ƒ  r-g  |@ j& D] }B |
 |B ^ qo\ }I }J }K }L }M }N |" j |@ j  j ƒ  ƒ |# j |@ j! j ƒ  ƒ |$ j |= ƒ |% j |> ƒ |& j |8 ƒ |' j |: ƒ |( j |; ƒ |) j |I ƒ |* j |J ƒ |+ j |K ƒ |, j |L ƒ |- j |M ƒ |. j |N ƒ q-q-WqçWq�WqZWq)Wx+ d6 D]# }O | |O j' d* ƒ rp| |O =qpqpW|  j( j) | ƒ | j* ƒ  d' k rÌ|  j( j) | ƒ n  d  S(7   Nt   formatRï   s   %%.%ifRË   s   _atom_site.group_PDBs   _atom_site.ids   _atom_site.label_atom_ids   _atom_site.label_alt_ids   _atom_site.label_comp_ids   _atom_site.auth_asym_ids   _atom_site.auth_seq_ids   _atom_site.pdbx_PDB_ins_codes   _atom_site.Cartn_xs   _atom_site.Cartn_ys   _atom_site.Cartn_zs   _atom_site.occupancys   _atom_site.B_iso_or_equivs   _atom_site.type_symbols   _atom_site.pdbx_formal_charges&   _atom_site.phenix_scat_dispersion_reals&   _atom_site.phenix_scat_dispersion_imags   _atom_site.label_asym_ids   _atom_site.label_entity_ids   _atom_site.label_seq_ids   _atom_site.pdbx_PDB_model_nums   _atom_site_anisotrop.ids&   _atom_site_anisotrop.pdbx_auth_atom_ids&   _atom_site_anisotrop.pdbx_label_alt_ids&   _atom_site_anisotrop.pdbx_auth_comp_ids&   _atom_site_anisotrop.pdbx_auth_asym_ids%   _atom_site_anisotrop.pdbx_auth_seq_ids&   _atom_site_anisotrop.pdbx_PDB_ins_codes   _atom_site_anisotrop.U[1][1]s   _atom_site_anisotrop.U[2][2]s   _atom_site_anisotrop.U[3][3]s   _atom_site_anisotrop.U[1][2]s   _atom_site_anisotrop.U[1][3]s   _atom_site_anisotrop.U[2][3]i    R    R  R   i   R   R   t   ATOMR$   s   %.4fR   i   R›   (   s   _atom_site.group_PDBs   _atom_site.ids   _atom_site.label_atom_ids   _atom_site.label_alt_ids   _atom_site.label_comp_ids   _atom_site.auth_asym_ids   _atom_site.auth_seq_ids   _atom_site.pdbx_PDB_ins_codes   _atom_site.Cartn_xs   _atom_site.Cartn_ys   _atom_site.Cartn_zs   _atom_site.occupancys   _atom_site.B_iso_or_equivs   _atom_site.type_symbols   _atom_site.pdbx_formal_charges&   _atom_site.phenix_scat_dispersion_reals&   _atom_site.phenix_scat_dispersion_imags   _atom_site.label_asym_ids   _atom_site.label_entity_ids   _atom_site.label_seq_ids   _atom_site.pdbx_PDB_model_num(   s   _atom_site_anisotrop.ids&   _atom_site_anisotrop.pdbx_auth_atom_ids&   _atom_site_anisotrop.pdbx_label_alt_ids&   _atom_site_anisotrop.pdbx_auth_comp_ids&   _atom_site_anisotrop.pdbx_auth_asym_ids%   _atom_site_anisotrop.pdbx_auth_seq_ids&   _atom_site_anisotrop.pdbx_PDB_ins_codes   _atom_site_anisotrop.U[1][1]s   _atom_site_anisotrop.U[2][2]s   _atom_site_anisotrop.U[3][3]s   _atom_site_anisotrop.U[1][2]s   _atom_site_anisotrop.U[1][3]s   _atom_site_anisotrop.U[2][3](   s&   _atom_site.phenix_scat_dispersion_reals&   _atom_site.phenix_scat_dispersion_imag(+   R,   R   t   symmetryRØ   RÎ   t   crystal_symmetry_as_cif_blockR)   R8   RÐ   R   R¤   t   setRY   R   t   chainsRP   t   increment_label_asym_idt   residue_groupsR   R   R‚   R!   R"   Rô   RM   R“   t   charge_tidyR‡   Rˆ   R©   R4   R   RV   t   namet   occt   bt   elementt   uij_is_definedt   uijR¨   R[   RÕ   R7   (P   RZ   R”   Rý   t   coordinate_precisiont   occupancy_precisiont   b_iso_precisiont   u_aniso_precisiont   coord_fmt_strt   occ_fmt_strt   b_iso_fmt_strt   u_aniso_fmt_strt   atom_site_loopt
   aniso_loopt   atom_site_group_PDBRh   t   atom_site_label_atom_idt   atom_site_label_alt_idt   atom_site_label_comp_idt   atom_site_auth_asym_idt   atom_site_auth_seq_idt   atom_site_pdbx_PDB_ins_codet   atom_site_Cartn_xt   atom_site_Cartn_yt   atom_site_Cartn_zt   atom_site_occupancyt   atom_site_B_iso_or_equivt   atom_site_type_symbolt   atom_site_pdbx_formal_charget%   atom_site_phenix_scat_dispersion_realt%   atom_site_phenix_scat_dispersion_imagt   atom_site_label_asym_idt   atom_site_label_entity_idt   atom_site_label_seq_idt   atom_site_pdbx_PDB_model_numt   atom_site_anisotrop_idt%   atom_site_anisotrop_pdbx_auth_atom_idt%   atom_site_anisotrop_pdbx_label_alt_idt%   atom_site_anisotrop_pdbx_auth_comp_idt%   atom_site_anisotrop_pdbx_auth_asym_idt$   atom_site_anisotrop_pdbx_auth_seq_idt%   atom_site_anisotrop_pdbx_PDB_ins_codet   atom_site_anisotrop_U11t   atom_site_anisotrop_U22t   atom_site_anisotrop_U33t   atom_site_anisotrop_U12t   atom_site_anisotrop_U13t   atom_site_anisotrop_U23Rg   t   unique_chain_idst   auth_asym_idst   label_asym_idst   label_seq_idR_   R8   t   model_idR:   R`   R<   Rc   R   R?   R^   Ra   Rb   RB   t	   group_pdbR­   R²   R=  t   zt   atom_chargeR‡   Rˆ   t   u11t   u22t   u33t   u12t   u13t   u23t   key(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR)   “  sJ   



                    	            	

































		 		 	
	 		 		 	)	 		

%2$
N(   RŠ   R‹   R,   R)   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyRW  ‘  s
   t(   pdb_hierarchy_as_cif_block_with_sequencec           B   s#   e  Z d d d  d d  d  d „ Z RS(   i   i   c	   <      C   sO
  t  j |  | d | d | d | d | d | ƒd d  l }	 |	 j j j d | d | d	 | d
 t d t ƒ  ƒ }
 t j j	 j
 d dO ƒ } t j j	 j
 d dP ƒ } t j j	 j
 d dQ ƒ } t ƒ  } i  } d } i  } i  } i  } i  } t ƒ  } t ƒ  } t ƒ  } x±|
 j D]¦} | j j } | | k r<| d 7} | | | <n  | j | d ƒ | | c d 7<| j | g  ƒ | | j | j ƒ | j | g  ƒ | | j | ƒ | | | | j <| j | j d j ƒ  ƒ t | j ƒ  ƒ | } t | j ƒ | j | j t | ƒ k st ‚ d  g | j | j d  g | j } | j } d } xe t | ƒ D]W \ } } | d  k r†| j j | d  k r†qRn  | d 7} | d  k	 rR| | | <qRqRWqWxo | D]g } x^ | j ƒ  D]P } xG | j ƒ  D]9 }  |  | k r| d 7} | | |  <n  | |  c d 7<qÞWqËWq¸Wx•| j ƒ  D]‡\ } }! d }" | | } | j | d! d" t | | ƒ f ƒ g  }# g  }$ | | }% d d# l  m! }& |% d } | j j" ƒ  }' xCt | ƒ D]5\ } }( d  }) | | j k r| t | ƒ | j k  r| j# | | j }) n  |) d  k r*|( d  k r*q»n  |$ j |( ƒ |) d  k r„| | d j$ |	 j j j% k r{|& j& j' |( d$ ƒ }) qÀ|( }) n< | | d j$ |	 j j j% k rÀ|& j( j' |) d% |) ƒ }( n  |# j |( ƒ |" d 7}" | j | |" |) d& f ƒ q»Wd" }* d' }+ | j$ |	 j j j% k r!d }, d }- d }. d }/ xo | j# D]d }  |  d( k rY|. d 7}. q:|  t j) j* k rx|- d 7}- q:|  |& j+ k r”|, d 7}, q:|/ d 7}/ q:Wt, |, |- |. |/ g ƒ }0 |- |. |0 d) k rìd* }* |, d k rd+ }+ qqL|, |. |0 d) k rLd, }* |- d k rd+ }+ qqLn+| j$ |	 j j j- k rLd }1 d }2 d }/ x} | j# D]r }  |  d  k	 rŒ|  j. ƒ  j/ ƒ  dR k rŒ|1 d 7}1 qU|  d  k	 r½|  j. ƒ  j/ ƒ  dS k r½|2 d 7}2 qU|/ d 7}/ qUWt, |1 |2 |/ g ƒ }0 |1 |0 d) k r|2 d k rd= }* qL|2 |0 d) k r,|1 d k r,d> }* qL|2 |1 |0 d) k rLd? }* qLn  | j | |* |+ d& d& t0 d@ j1 |# ƒ dA dB ƒj. ƒ  t0 d@ j1 |$ ƒ dA dB ƒj. ƒ  dC j1 | | ƒ d" f	 ƒ q0WxR | j ƒ  D]D \ }  } dD }3 |  dE k rïdF }3 n  | j | |3 d" | |  f ƒ qÈW|  j2 j3 | ƒ |  j2 j3 | ƒ |  j2 j3 | ƒ |  j2 j4 | j5 ƒ  ƒ |  j2 dG }4 |  j2 dH }5 |  j2 dI }6 |  j2 dJ }7 t6 j7 |5 j8 ƒ  dK ƒ }8 |6 j9 ƒ  }6 |6 j: |6 d" k d@ ƒ xŽ | j ƒ  D]€ \ } } |7 | j ƒ  j; k |6 | j< j. ƒ  k @|5 | j= j. ƒ  k @}9 |8 j: |9 t> | ƒ ƒ |4 j: |9 t> | | j ƒ  j; ƒ ƒ qÑWx„ | D]| } xs | j ƒ  D]e } |7 | j ƒ  j; k |6 | j< j. ƒ  k @|5 | j= j. ƒ  k @}9 |4 j: |9 t> | | j ƒ  d ƒ ƒ qo	Wq\	W|8 |  j2 dL <|  j2 dM }: |  j2 j' dN ƒ }; |  j2 dM =|  j2 j3 |: ƒ |; d  k	 rK
|  j2 dN =|  j2 j3 |; ƒ n  d  S(T   NRý   Rg  Rh  Ri  Rj  iÿÿÿÿR”   t	   sequencest   paramst   extract_residue_groupsRM  RË   s
   _entity.ids   _entity.types   _entity.formula_weights    _entity.pdbx_number_of_moleculess   _entity_poly.entity_ids   _entity_poly.types   _entity_poly.nstd_chiralitys   _entity_poly.nstd_linkages   _entity_poly.nstd_monomers%   _entity_poly.pdbx_seq_one_letter_codes)   _entity_poly.pdbx_seq_one_letter_code_cans   _entity_poly.pdbx_strand_ids   _entity_poly.type_detailss   _entity_poly_seq.entity_ids   _entity_poly_seq.nums   _entity_poly_seq.mon_ids   _entity_poly_seq.heteroi    i   R%   t   polymerR   (   t   amino_acid_codest   UNKs   (%s)t   not   nt   GLYg      à?s   polypeptide(L)R=  s   polypeptide(D)t   ADt   CDt   GDt   TDt   DAt   DCt   DGt   DTt   At   Ct   GRÁ   s   +As   +Cs   +Gs   +Tt   polydeoxyribonucleotidet   polyribonucleotides1   polydeoxyribonucleotide/polyribonucleotide hybridR    R   iP   R  s   non-polymert   HOHt   waters   _atom_site.label_entity_ids   _atom_site.auth_seq_ids   _atom_site.pdbx_PDB_ins_codes   _atom_site.auth_asym_idR   s   _atom_site.label_seq_idt
   _atom_sitet   _atom_site_anisotrop(   s
   _entity.ids   _entity.types   _entity.formula_weights    _entity.pdbx_number_of_molecules(	   s   _entity_poly.entity_ids   _entity_poly.types   _entity_poly.nstd_chiralitys   _entity_poly.nstd_linkages   _entity_poly.nstd_monomers%   _entity_poly.pdbx_seq_one_letter_codes)   _entity_poly.pdbx_seq_one_letter_code_cans   _entity_poly.pdbx_strand_ids   _entity_poly.type_details(   s   _entity_poly_seq.entity_ids   _entity_poly_seq.nums   _entity_poly_seq.mon_ids   _entity_poly_seq.hetero(   R«  R¬  R­  R®  R¯  R°  R±  R²  (   R³  R´  Rµ  RÁ   s   +As   +Cs   +Gs   +T(?   RW  R)   t   mmtbx.validation.sequencet
   validationt   sequenceRL   R   RØ   RÎ   R8   RÐ   R   R   R   R]  t	   alignmentRc  t
   setdefaultR©   t   chain_idR7  R_  t   parentRX   t   n_missing_startt   n_missing_endR.   R,   R¦   t   unique_resnamest	   iteritemsRÔ   t	   iotbx.pdbR¦  t   matchest   resnamest
   chain_typet   PROTEINt   three_letter_given_one_letterR+   t   one_letter_given_three_letterRã   t   common_residue_names_amino_acidt#   three_letter_l_given_three_letter_dt   sumt   NUCLEIC_ACIDRP   RŒ   R   R«   R[   RÕ   t   updatet   as_cif_blockR   R¤   R7   t	   deep_copyt   set_selectedR   R   R   R4   (<   RZ   R”   R¢  t   alignment_paramsRý   Rg  Rh  Ri  Rj  t   mmtbxR½  t   entity_loopt   entity_poly_loopt   entity_poly_seq_loopt   sequence_countst   sequence_to_chain_idsRb   t   sequence_to_entity_idt   chain_id_to_entity_idt   sequence_to_chainst    residue_group_to_seq_num_mappingt   aligned_pdb_chainst   non_polymer_countst    non_polymer_resname_to_entity_idR:   R¾  t   unaligned_pdb_chainsR_  R­   t   seq_numR<   t	   pdb_chainR"   R-   t   entity_poly_seq_numt   pdbx_seq_one_letter_codet   pdbx_seq_one_letter_code_canR]  R¦  RÈ  t   one_letter_codet
   monomer_idt   entity_poly_typet   entity_nstd_chiralityt   n_d_peptidest   n_l_peptidest   n_achiral_peptidest	   n_unknownt   n_totalt   n_dnat   n_rnat   entity_typet   label_entity_idt   auth_seq_idt   ins_codeR`   R•  t   selRo  t   atom_site_aniso_loop(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR)   U  s–   	   	        	   					
/%	"




	(  		 	
					%!%&

N(   RŠ   R‹   R,   R)   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR¡  T  s   c         C   sÔ   d d l  m } t |  ƒ d k r& d St |  ƒ }  x› t t |  ƒ ƒ D]‡ } |  | d k r� d |  | <| d t |  ƒ k rÌ d t |  ƒ d SqE x9 t rË | j |  | ƒ } | | d |  | <d j |  ƒ SWqE Wd  S(   Niÿÿÿÿ(   t   ascii_uppercasei    R³  t   Zi   R    (   t   stringRû  RX   RÓ   R6   RL   t   findR«   (   t   asym_idRû  R­   R®   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyR^  y  s    
	(0   t
   __future__R    RK  t   cctbx.array_familyR   t   cctbxR   t   libtbx.containersR   R   t   libtbxR   R   t   libtbx.table_utilsR   t   libtbx.utilsR   R	   t   libtbx.str_utilsR
   RÇ  RØ   R   R   R   t!   iotbx.pdb.remark_3_interpretationR   R   t	   iotbx.cift   iotbx.cif.buildersR   R   RF   t   objectR�   R,   RÞ   Rã   t   pdb_input_mixinRß   R  R  R  RÎ   R[  RW  R¡  R^  (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/mmcif.pyt   <module>   s6   ¹	R?ß		Ãÿ &