ó
ˆ™xTc           @   s¡   d  d l  m Z d  d l Z d  d l m Z d Z d e f d „  ƒ  YZ d „  Z d „  Z	 d	 e f d
 „  ƒ  YZ
 d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   divisionN(   t
   group_argssg  REMARK   3
REMARK   3  TLS DETAILS
REMARK   3   NUMBER OF TLS GROUPS  :    2
REMARK   3
REMARK   3   TLS GROUP :     1
REMARK   3    NUMBER OF COMPONENTS GROUP :    1
REMARK   3    COMPONENTS        C SSSEQI   TO  C SSSEQI
REMARK   3    RESIDUE RANGE :   A     1        A   348
REMARK   3    ORIGIN FOR THE GROUP (A):  40.4920  20.4900  77.3450
REMARK   3    T TENSOR
REMARK   3      T11:   0.0445 T22:   0.0094
REMARK   3      T33:   0.0759 T12:   0.0073
REMARK   3      T13:  -0.0019 T23:  -0.0026
REMARK   3    L TENSOR
REMARK   3      L11:   0.4084 L22:   0.4087
REMARK   3      L33:   0.4695 L12:   0.0456
REMARK   3      L13:   0.0685 L23:  -0.0388
REMARK   3    S TENSOR
REMARK   3      S11:  -0.0063 S12:   0.0233 S13:   0.0090
REMARK   3      S21:   0.0417 S22:  -0.0071 S23:   0.0132
REMARK   3      S31:  -0.0008 S32:  -0.0002 S33:   0.0134
REMARK   3
REMARK   3   TLS GROUP :     2
REMARK   3    NUMBER OF COMPONENTS GROUP :    1
REMARK   3    COMPONENTS        C SSSEQI   TO  C SSSEQI
REMARK   3    RESIDUE RANGE :   B XYZW1-       B XY348+
REMARK   3    ORIGIN FOR THE GROUP (A):  16.4920  -1.1810  59.3130
REMARK   3    T TENSOR
REMARK   3      T11:   0.0412 T22:   0.0118
REMARK   3      T33:   0.1002 T12:  -0.0082
REMARK   3      T13:  -0.0117 T23:  -0.0290
REMARK   3    L TENSOR
REMARK   3      L11:   0.3189 L22:   0.3849
REMARK   3      L33:   0.8975 L12:   0.0578
REMARK   3      L13:  -0.0398 L23:   0.1013
REMARK   3    S TENSOR
REMARK   3      S11:   0.0415 S12:   0.0183 S13:  -0.0365
REMARK   3      S21:   0.0087 S22:  -0.0145 S23:   0.0507
REMARK   3      S31:   0.1029 S32:  -0.0744 S33:  -0.0269
REMARK   3
t   tlsc           B   s   e  Z d d  „ Z RS(   c         C   s1   | |  _  | |  _ | |  _ | |  _ | |  _ d  S(   N(   t   tt   lt   st   origint   selection_string(   t   selfR   R   R   R   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   __init__1   s
    				N(   t   __name__t
   __module__t   NoneR	   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyR   0   s   c         C   sá  t  } d } d } d } x•|  D]�} | j d ƒ sC | j d ƒ rP | d 7} n  | j d ƒ sn | j d ƒ r{ | d 7} n  | j d ƒ s™ | j d ƒ r¦ | d 7} n  | j d	 ƒ sÄ | j d
 ƒ rÑ | d 7} n  | j d ƒ sï | j d ƒ rü | d 7} n  | j d ƒ s| j d ƒ r'| d 7} n  | j d ƒ sE| j d ƒ rR| d 7} n  | j d ƒ sp| j d ƒ r}| d 7} n  | j d ƒ s›| j d ƒ r¨| d 7} n  | j d ƒ sÆ| j d ƒ rÓ| d 7} n  | j d ƒ sñ| j d ƒ rþ| d 7} n  | j d ƒ s| j d ƒ r)| d 7} n  | j d ƒ sG| j d ƒ rT| d 7} n  | j d ƒ sr| j d ƒ r| d 7} n  | j d ƒ s�| j d  ƒ rª| d 7} n  | j d! ƒ sÈ| j d" ƒ rÕ| d 7} n  | j d# ƒ só| j d$ ƒ r | d 7} n  | j d% ƒ s| j d& ƒ r+| d 7} n  | j d' ƒ sI| j d( ƒ rV| d 7} n  | j d) ƒ st| j d* ƒ r�| d 7} n  | j d+ ƒ sŸ| j d, ƒ r | d 7} q q W| d- k rÝ| d- k rÝ| d- k rÝt } n  | S(.   Ni    t   T11s   T 11i   t   T22s   T 22t   T33s   T 33t   T12s   T 12t   T13s   T 13t   T23s   T 23t   L11s   L 11t   L22s   L 22t   L33s   L 33t   L12s   L 12t   L13s   L 13t   L23s   L 23t   S11s   S 11t   S21s   S 21t   S31s   S 31t   S12s   S 12t   S22s   S 22t   S32s   S 32t   S13s   S 13t   S23s   S 23t   S33s   S 33i   (   t   Falset   countt   True(   t   remark_3_recordst   resultt   n_tt   n_lt   n_st   line(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   has_tls8   sd                         $ 	c         C   s  |  j  ƒ  } g  } xý | D]õ } | j ƒ  s7 | j ƒ  rG | j | ƒ q y t | ƒ } | j | ƒ Wq t k
 rd } x€ t | ƒ D]r \ } } | d k r¬ | | 7} q‡ | d k rï | | d j ƒ  sâ | j | ƒ | } qù | | 7} q‡ | | 7} q‡ W| j | ƒ q Xq Wd j | ƒ S(   Nt    i    t   +t   -i   t    (   R-   R.   (   t   splitt   isalphat   isdigitt   appendt   floatt	   Exceptiont	   enumeratet   join(   R*   t   l0t   new_elementst   l_t   valt   tmpt   it   c(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   prepocess_lineX   s*      	t   extract_tls_parametersc           B   s)   e  Z d  d „ Z d  d „ Z d „  Z RS(   R,   c         C   s‰   | |  _  | |  _ | |  _ t j j | ƒ |  _ t d | ƒ |  _ g  |  _	 d  |  _ |  j rj |  j ƒ  n  |  j d  k	 r… g  |  _	 n  d  S(   NR%   (   t   pdb_hierarchyR%   t	   chain_idst   ost   patht   basenamet	   file_nameR+   t   tls_presentt
   tls_paramsR   t   error_stringt   extract(   R   R%   RB   RA   RF   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyR	   p   s    						c         C   s€   |  j  j ƒ  d } d | j ƒ  } t | j ƒ  ƒ d k rD d } n  t | j ƒ  ƒ d k re d } n  | | j ƒ  | |  _ d  S(   Ns    : i   R,   (   RF   t   stript   lenRI   (   R   t   msgt   rect   xt   y(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt
   format_err€   s     	 	c   A      C   s¢  g  } g  } g  } g  } g  } d } t  } t  } g  }	 g  }
 xa|  j D]V} | d d !d k se t ‚ | j d ƒ r&d  } yx | j ƒ  } t | ƒ d k r® t | d ƒ } nC | j d ƒ } t | ƒ d k rè t | d	 j ƒ  ƒ } n	 t	 ƒ  ‚ Wn( t	 k
 r|  j
 d
 d d | ƒ g  SXt } n  | j d ƒ ry| j d ƒ d	 k ryt } t  } |	 j | ƒ |
 j |	 ƒ g  }	 n t  } | rF | rF |	 j | ƒ qF qF Wd „  } xI|
 D]A} d } g  } d  } d  } d  g d \ } } } } } } d  g d \ } } } } } } d  g d \	 } } }  }! }" }# }$ }% }& d  }' xœt | ƒ D]Ž\ }( }) |) j d ƒ r°d  } y t |) j ƒ  d ƒ } Wq°t	 k
 r¬|  j
 d
 d d |) ƒ g  SXn  |) j d ƒ rjt |) j ƒ  ƒ d k r|) j ƒ  }* |* d |* d |* d |* d f \ }+ }, }- }. n: |) d d !|) d d !|) d d !|) d d !f \ }+ }, }- }. | j |+ |, |- |. g ƒ n  |) j d ƒ r�|) |) j d ƒ d	 }' | |' ƒ } t | ƒ d k r·d  }' q�g  } |' j ƒ  j ƒ  dO k rï|  j
 d
 d  d |) ƒ g  S|( d	 }/ x“ | |/ j d! ƒ s"| |/ j d" ƒ rŽ| |/ j d# ƒ r9Pn  |' d$ | |/ d% 7}' |/ d	 7}/ |' j ƒ  j ƒ  dP k rü|  j
 d
 d& d |) ƒ g  SqüWd$ j |' j ƒ  ƒ }' |' j ƒ  }0 d' }1 xÍ t |0 ƒ D]¿ \ }2 }3 |2 d k rä|3 }1 qÃ|1 t |1 ƒ d	 d k r,|3 d j ƒ  r|1 |3 7}1 q‚|1 d$ |3 }1 qÃ|1 t |1 ƒ d	 j ƒ  rt|3 d d k rc|1 |3 7}1 q‚|1 d$ |3 }1 qÃ|1 d$ |3 }1 qÃW|1 }' n  |) j d( ƒ r‹t |) ƒ }) y t |) j ƒ  d ƒ }4 Wn( t k
 rî|  j
 d
 d) d |) ƒ g  SXy t |) j ƒ  d ƒ }5 Wn( t k
 r3|  j
 d
 d) d |) ƒ g  SXy t |) j ƒ  d ƒ }6 Wn( t k
 rx|  j
 d
 d) d |) ƒ g  SX|4 |5 |6 g } n  |) j d ƒ ri|) j d* ƒ d	 k ri| | | | | | g j d  ƒ d k sÜt ‚ y t |) j ƒ  d+ ƒ } Wn( t k
 r |  j
 d
 d, d |) ƒ g  SXy t |) j ƒ  d ƒ } Wqit k
 re|  j
 d
 d, d |) ƒ g  SXn  |) j d ƒ rG|) j d- ƒ d	 k rG| | | | | | g j d  ƒ d. k sºt ‚ y t |) j ƒ  d+ ƒ } Wn( t k
 rþ|  j
 d
 d, d |) ƒ g  SXy t |) j ƒ  d ƒ } WqGt k
 rC|  j
 d
 d, d |) ƒ g  SXn  |) j d ƒ r=	|) j d/ ƒ d	 k r=	| | | | | | g j d  ƒ d k s˜t ‚ y t |) j ƒ  d+ ƒ } Wn( t k
 rÜ|  j
 d
 d, d |) ƒ g  SXy t |) j ƒ  d ƒ } Wn( t k
 r!	|  j
 d
 d, d |) ƒ g  SX| | | | | | g } n  |) j d ƒ rq
|) j d0 ƒ d	 k rq
| | | | | | g j d  ƒ d k sŽ	t ‚ y t |) j ƒ  d+ ƒ } WnS t k
 rý	y t |) d1 d2 !ƒ } Wqþ	t k
 rù	|  j
 d
 d3 d |) ƒ g  SXn Xy t |) j ƒ  d ƒ } Wqq
t k
 rm
y t |) d d4 !ƒ } Wqn
t k
 ri
|  j
 d
 d3 d |) ƒ g  SXqq
Xn  |) j d ƒ r¥|) j d5 ƒ d	 k r¥| | | | | | g j d  ƒ d. k sÂ
t ‚ y t |) j ƒ  d+ ƒ } WnS t k
 r1y t |) d1 d2 !ƒ } Wq2t k
 r-|  j
 d
 d3 d |) ƒ g  SXn Xy t |) j ƒ  d ƒ } Wq¥t k
 r¡y t |) d d4 !ƒ } Wq¢t k
 r�|  j
 d
 d3 d |) ƒ g  SXq¥Xn  |) j d ƒ rñ|) j d6 ƒ d	 k rñ| | | | | | g j d  ƒ d k söt ‚ y t |) j ƒ  d+ ƒ } WnS t k
 rey t |) d1 d2 !ƒ } Wqft k
 ra|  j
 d
 d3 d |) ƒ g  SXn Xy t |) j ƒ  d ƒ } WnS t k
 rÕy t |) d d4 !ƒ } WqÖt k
 rÑ|  j
 d
 d3 d |) ƒ g  SXn X| | | | | | g } n  |) j d ƒ r|) j d7 ƒ d	 k r| | |  |! |" |# |$ |% |& g	 j d  ƒ d k sKt ‚ y t |) j ƒ  d+ ƒ } Wn( t k
 r�|  j
 d
 d8 d |) ƒ g  SXy t |) j ƒ  d ƒ } Wn( t k
 rÔ|  j
 d
 d8 d |) ƒ g  SXy t |) j ƒ  d ƒ }  Wqt k
 r|  j
 d
 d8 d |) ƒ g  SXn  |) j d ƒ rI|) j d9 ƒ d	 k rI| | |  |! |" |# |$ |% |& g	 j d  ƒ d k swt ‚ y t |) j ƒ  d+ ƒ }! Wn( t k
 r»|  j
 d
 d8 d |) ƒ g  SXy t |) j ƒ  d ƒ }" Wn( t k
 r |  j
 d
 d8 d |) ƒ g  SXy t |) j ƒ  d ƒ }# WqIt k
 rE|  j
 d
 d8 d |) ƒ g  SXn  |) j d ƒ rG|) j d ƒ d	 k rG| | |  |! |" |# |$ |% |& g	 j d  ƒ d+ k s£t ‚ y t |) j ƒ  d+ ƒ }$ Wn( t k
 rç|  j
 d
 d8 d |) ƒ g  SXy t |) j ƒ  d ƒ }% Wn( t k
 r,|  j
 d
 d8 d |) ƒ g  SXy t |) j ƒ  d ƒ }& Wng t k
 r°y+ |) j ƒ  d j d ƒ r�| |" }& n  Wq±t k
 r¬|  j
 d
 d8 d |) ƒ g  SXn X| | |  |! |" |# |$ |% |& g	 } qGqGWt | ƒ d k ry|' d  k sýt ‚ xy| D]n}7 |7 d j ƒ  }+ |7 d j ƒ  }- |7 d	 j ƒ  }, |7 d+ j ƒ  }. t |, ƒ d k r%t |. ƒ d k r%y t |, ƒ }8 Wn1 t	 k
 r±|  j
 d
 d: d d' j |7 ƒ ƒ g  SXy t |. ƒ }9 Wn1 t	 k
 rõ|  j
 d
 d; d d' j |7 ƒ ƒ g  SX|8 |9 k r%|+ |- k r%|  j
 d
 d< ƒ g  Sn  t d= |  j d> |+ d? |, d@ |- dA |. ƒ }: |' d  k rd|: }' q|' dB |: }' qWn  |' d  k	 rò|' j dC ƒ |' j dD ƒ k r½|  j
 d
 dE d |' ƒ g  S|' j ƒ  dQ k ròd  }' |  j
 d
 dF d |' ƒ g  Sn  |' d  k	 s=| j d  ƒ d k s=| j d  ƒ d k s=| j d  ƒ d k r°d' }; xq t |' ƒ D]c \ }/ }< y |' |/ d	 }= Wn t k
 r‡|< }= n X|< dG k r©|= j ƒ  r©d }< n  |; |< 7}; qPW|; }' |  j j t dH | dI | dJ | dK | dL |' ƒ ƒ q°q°W|  j r't |  j ƒ d k r'|  j
 d
 dM ƒ g  St |  j ƒ d k rµg  |  j D] }< |< j ƒ  ^ qF}> g  |  j D] }< |< j ƒ  ^ qh}? |> |  j k rµ|? |  j k rµ|  j
 d
 dN ƒ g  Sn  t |
 ƒ t |  j ƒ k rä|  j
 d
 dM ƒ g  Sx´ |  j D]© }@ t |@ j ƒ t |@ j ƒ k s&|  j
 d
 dM ƒ g  St |@ j ƒ t |@ j ƒ k rît |@ j ƒ d k rît |@ j ƒ d k sƒt |@ j  ƒ d+ k rî|  j
 d
 dM ƒ g  SqîW|  j S(R   Ni    i
   s
   REMARK   3s   REMARK   3   TLS GROUP :i   i   t   :i   i   RM   s    Cannot extract TLS group number:RN   s   S31:c         S   s@  g  } |  j  ƒ  }  t |  ƒ d k r<|  d j ƒ  |  d j ƒ  |  d j ƒ  |  d j ƒ  f \ } } } } t | ƒ d k r<t | ƒ d k r<y t | ƒ } Wn t k
 rµ t n Xy t | ƒ } Wn t k
 rÝ t n Xt | ƒ t d ƒ k r9t | ƒ t d ƒ k r9| j | t | ƒ | t | ƒ g ƒ q9q<n  | S(   Ni   i    i   i   i   (	   R0   RL   RK   t   intR5   t
   ValueErrort   typeR3   t   str(   t   ssR&   t   c0t   r0t   c1t   r1(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   is_buster_selection®   s     F$    0.i	   s*   REMARK   3    NUMBER OF COMPONENTS GROUP :i   s(   Cannot extract number of TLS components.s   REMARK   3    RESIDUE RANGE :i   i   i!   i"   i(   i/   i0   i1   i7   s   REMARK   3    SELECTION:t   NONEt   NULLs   Bad TLS selection string1.s   REMARK   3             :s   REMARK   3              t   ORIGINR/   i   s   Bad TLS selection string2.R,   s'   REMARK   3    ORIGIN FOR THE GROUP (A):s   Cannot extract origin.s   T11:i   s   Cannot extract T.s   T33:i   s   T13:s   L11:i   i   s   Cannot extract L.i,   s   L33:s   L13:s   S11:s   Cannot extract S.s   S21:s   Bad TLS selection string3.s   Bad TLS selection string4.s+   Bad TLS selection: start index > end index.RA   t   chain_startt   resseq_startt	   chain_endt
   resseq_ends    or %st   (t   )s!   Bad TLS selection: missing ) or (s   Bad TLS selection string5.R.   R   R   R   R   R   s$   TLS present but cannot be extracted.s   Mixed chain ids detected.(   R]   R^   (   R]   R^   (   R]   R^   (!   R"   R%   t   AssertionErrort
   startswithR   R0   RL   RS   RK   RT   RQ   R$   R#   R3   R6   t   indext   upperR7   R2   R?   R4   R5   t'   refmac_range_to_phenix_string_selectionRA   RH   R   RG   RB   t   lowerR   R   R   R   (A   R   t   Tt   Lt   SR   t   residue_ranget   group_countert   record_startt
   record_endt   one_tls_group_recordst   all_tls_group_recordst   recordt   group_numbert   fieldsR\   t   onet   n_componentst   r_rangeR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R   R   R!   t   sel_strt   i_seqRN   t   rec_st   ch1t   res1t   ch2t   res2R=   t   sel_str_splt   new_strt   iet   eRO   RP   t   zt   rrt   res1_t   res2_R<   t   new_cR>   t   clt   chain_ids_new_ut   chain_ids_new_lR   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyRJ   ‡   s˜   	$		( 1:	
 
 		   $-  $-  $-  $-  	  $-  	  $-  	  	$6   $6   $6   	($   	  
 	)""3*(   R
   R   R	   RQ   RJ   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyR@   n   s   c         C   sï  |  j  ƒ  }  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 g } d } |  d d  !d! k rÖ|  j ƒ  } |  j d" ƒ d# k } |  j d$ ƒ d# k } |  j d% ƒ d# k } | r8| r8xV | D]K } xB | D]: }	 |	 j d& ƒ r|	 d'  }	 n  | j |	 ƒ ró |	 } qó qó Wqæ Wn  | d  k rÖ| rÖ|  j d% ƒ d# k p†|  j d$ ƒ d# k p†|  j d( ƒ d# k }
 |  j d) ƒ d# k pª|  j d* ƒ } |
 rÂ| rÂd+ } n  | sÎ| rì|  j | ƒ d k rì| } n  |  j d, ƒ d# k p|  j d- ƒ d# k } |  j d. ƒ d# k } |
 r7| s=| rFd/ } n  |  j d0 ƒ d# k og|  j d1 ƒ } |
 r| rd } n  |
 r£|  j d ƒ d# k r£d } n  d2 } |  j | ƒ sÇ|  j d3 ƒ rÓ| } qÓqÖn  | d k rëd } n  | S(4   Nt   SHELXt   CNSt   PROLSQt   FROGt   REFMACt   XPLORs   X-PLORt   NUCLSQt   MOPROt   MOLLYt   PROFFTt   TNTt   CORELSt   GROMOSXTALVIEWt   RESTRAINt   GPRLSAt   ARPt   CNXt   EREFt   NMREFt   GSASt   BUSTERt   SOLVEt   CCP4t   NUCLINt   MAINt   PHENIXs   PHENIX.REFINEt   FFXt   DIAMONDi    i   t   REMARKs
   REMARK   3i   t   PROGRAMt
   REFINEMENTt   ,iÿÿÿÿt	   PROCEDUREt   JACKt   LEVITTt   JACK_AND_LEVITTt   KONNERTt   HENDRICKSONs   KONNERT AND HENDRICKSONt   KONNERT_AND_HENDRICKSONt	   SIMULATEDt	   ANNEALINGs   JONES_AND_A.LILJASs   T.A.JONES, L.LILJAS(   Ri   R   R0   R#   (   t   stt   programt   programst   diamondt   st_splitt   ch_1t   ch_2t   ch_3t   itemt   potential_programt   refinement_or_programt   j_and_lt   k_and_ht	   k_and_h_1t   sat   jones_and_liljas(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   get_programÎ  sX    $ 	! 	*	$ 	 	 	c         C   s¸  | j  ƒ  } | j  ƒ  } | j  ƒ  } | j  ƒ  } d  } | | k r½ | d k rŒ | | g j d ƒ d k r d | | | f } qº d | } qœ| | g j d ƒ d k rœd | | f } qœnßd  } | d k rû | d k rî d | | f } qd | } n | d k rd | } n  d  } | d k rR| d k rEd | | f } qkd | } n | d k rkd	 | } n  | | g j d  ƒ d k r™d
 | | f } n* | d  k	 r®| } n | d  k	 rÃ| } n  | d  k	 rœ|  j ƒ  } t | ƒ d k rñd  St }	 g  }
 xe | d j ƒ  D]S } | j j  ƒ  } | | k r3Pn  | | k rKt }	 qn  |	 r|
 j	 | ƒ qqWt |
 ƒ d k rœx |
 D] } | d | } q~Wqœn  | d  k	 r°d | Sd  Sd  S(   NR,   i    s   (chain %s and resseq %s:%s)s
   (chain %s)s   (resseq %s:%s)s   (chain %s and resseq %s:)s   (resseq %s:)s   (chain %s and resseq :%s)s   (resseq :%s)s   %s or %si   s    or chain %ss   %s(
   RK   R   R#   t   modelsRL   R"   t   chainst   idR$   R3   (   RA   R`   Ra   Rb   Rc   R{   t   sel_str1t   sel_str2RÈ   t   start_collectingRB   t   chaint   chain_id(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyRj   ÷  sj     	 	   c         C   se   yL |  d } |  d } x1 |  D]) } | | k r | d | 7} | } q q WWn t  k
 r` |  SX| S(   Ni    t   /(   R5   (   t   program_namest   newt   firstt   name(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   format_name2  s    

 c         C   sm   d } g  } x@ |  D]8 } t  | ƒ } | d  k	 r | j | ƒ | d 7} q q W| d k re t | ƒ Sd  Sd  S(   Ni    i   (   RÇ   R   R3   RÕ   (   R%   t	   p_counterRÑ   Ru   R&   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   extract_program_name>  s    
c         C   sg  d  } d  } d  g d } d  } d  } d  } d  } d  } d  d  d  d  d  d  g \ }	 }
 } } } } d  } d  } xr|  D]j} | j ƒ  } | j ƒ  } y8| j d ƒ r· t | d ƒ } n  | j d ƒ rÙ t | d ƒ } n  | j d ƒ rt | t | ƒ d ƒ }	 n  | j d ƒ r1t | t | ƒ d ƒ }
 n  | j d ƒ r]t | t | ƒ d ƒ } n  | j d	 ƒ r‰t | t | ƒ d ƒ } n  | j d
 ƒ rµt | t | ƒ d ƒ } n  | j d ƒ rát | t | ƒ d ƒ } n  | j d ƒ rt | d ƒ } n  | j d ƒ r| d } n  | j d ƒ rAt | d ƒ } n  | j d ƒ rct | d ƒ } n  | j d ƒ r…t | d ƒ } n  | j d ƒ r§t | d ƒ } n  | j d ƒ rÉt | d ƒ } n  Wqt t k
 rÝqt Xqt W|	 |
 | | | | g j d  ƒ d k r$|	 |
 | | | | g } n  t d | d | d | d | d | d | d | d | d | d  | ƒ 
S(!   Ni   s!   REMARK   3   K_SOL              :i   s!   REMARK   3   B_SOL              :s   REMARK   3    B11i   s   REMARK   3    B22s   REMARK   3    B33s   REMARK   3    B12s   REMARK   3    B13s   REMARK   3    B23s   REMARK   3   FRACTION:i   s   REMARK   3   OPERATOR:s!   REMARK   3   SOLVENT RADIUS     :i   s!   REMARK   3   SHRINKAGE RADIUS   :s!   REMARK   3   GRID STEP FACTOR   :s.   REMARK   3   R VALUE            (WORKING SET) i   s.   REMARK   3   FREE R VALUE                     i    t   k_solt   b_solt   b_cartt   twin_fractiont   twin_lawt   r_solvt   r_shrinkt   grid_step_factort   r_workt   r_free(   R   RK   R0   R#   R4   RL   R5   R   (   R%   RØ   RÙ   RÚ   RÛ   RÜ   RÝ   RÞ   Rß   t   b11t   b22t   b33t   b12t   b13t   b23Rà   Rá   R   t   ls(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   extract_f_model_core_constantsK  sx    *                ' (   t
   __future__R    RC   t   libtbxR   t%   example_of_tls_parameters_in_remark_3t   objectR   R+   R?   R@   RÇ   Rj   RÕ   R×   Ré   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/pdb/remark_3_interpretation.pyt   <module>   s   +	 	ÿ a	)	;		