ó

šxTc           @   sü   d  d l  m Z d  d l m Z d  d l Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Td d d „ Z d „  Z d	 „  Z d
 „  Z d „  Z e d „ Z d „  Z e d „ Z d „  Z d „  Z e d k rø e e j ƒ n  d S(   iÿÿÿÿ(   t   seq_sequence_parse(   t   pdbN(   t   mtz(   t   *t    c      
   C   sf  y8t  j d |  ƒ } t  j d | ƒ } | j ƒ  } | j ƒ  } d  } | d k rn | j ƒ  d j ƒ  d } n> x; | j ƒ  d j ƒ  D]# }	 | d |	 j k r… |	 } Pq… q… Wd  }
 | d k rÛ | j ƒ  d j ƒ  d }
 n> x; | j ƒ  d j ƒ  D]# }	 | d |	 j k rò |	 }
 Pqò qò Wt j d | d |
 ƒ } g  } g  t	 | j
 ƒ D] \ } } | | f ^ qG} t | d d „  d t ƒ} x´ | D]¬ } | j | d ƒ t j j d	 | ƒ } | j ƒ  } | j t | d d
 ƒ t | d d
 ƒ t | d d
 ƒ t | d
 d
 ƒ t | d d
 ƒ t | d d
 ƒ | d f ƒ q‡WWn' t k
 ra} d |  | f } d g SX| S(   Nt	   file_nameR   i    t   movingt	   referencet   keyc         S   s   |  d S(   Ni   (    (   t   Qvindx(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   <lambda>5   s    t   reverset   matchi   i   i   i   i   i   s"   SSM alignment of %s and %s failed.g      ð¿iÿÿÿÿ(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿iÿÿÿÿ(   R   t   inputt   construct_hierarchyt   Nonet   modelst   chainst   idt   ccp4io_adaptbxt   SecondaryStructureMatchingt	   enumeratet   qvaluest   sortedt   Truet   AlignSelectedMatcht   SSMAlignmentt   residue_groupst   GetSSMSequenceIdentityt   appendt   Roundofft	   Exception(   t   pdb1namet   pdb2namet   chainid1t   chainid2t   pdbxtalt   pdbtestt
   hierarchy1t
   hierarchy2t   chain1t   chaint   chain2t   ssmt   seqidst   it   et
   Qvalsindext	   sortQvalst   qit	   alignmentt   st   mt	   stdoutstr(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyR      sB    .6Fc         C   sZ   t  j d |  ƒ } | j d ƒ d } t j d t t j ƒ } d t | j d ƒ ƒ } | S(   NR   i   i    s2   REMARK\s+2\s+RESOLUTION\.\s+([-+]?[0-9]*\.?[0-9]+)s   %3.2fi   (	   R   R   t   extract_remark_iii_recordst   ret   searcht	   remarkstrt	   MULTILINEt   floatt   group(   t   pdbfnamet   mypdbt
   remark2strR   t
   resolution(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetResolutionFromPDBfileG   s    	c         C   s2  d } d } d } d } t  j d |  ƒ } | j ƒ  } x½ | j ƒ  d j ƒ  D]¥ } xœ | j ƒ  D]Ž } | j ru q` n  | j j ƒ  j	 ƒ  }	 |	 d k r£ | d } n  |	 d k r¼ | d } n  |	 d k rÕ | d } n  |	 d k r` | d } q` q` WqM W| d | d	 | d
 | d }
 d |  |
 f } |
 | f S(   Ni    R   t   Oi   t   Ct   Nt   Sg      0@g…ëQ¸(@g…ëQ¸,@g)\�Âõ@@s   Atomic weight of %s is %f(
   R   R   R   R   R   t   atomst   heterot   elementt   stript   upper(   R=   t   nOt   nCt   nNt   nSR>   t   rootR)   t   atomt   elmt   masst   mstr(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetMassOfModelInPDBfileT   s,    	"c         C   sf  t  } |  j ƒ  }  i  } i  } i  } i  } i  } 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	 <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 <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 <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 <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! } x· |  D]¯ } | t d d d d	 d d d d d d d d d d d d d d d d  g ƒ k rãq‰n  | | | 7} | | | 7} |	 | | 7}	 |
 | | 7}
 | | k r‰| | | 7} q‰q‰W| d" | d# |	 d$ |
 d% | } | S(&   Ni   t   Ai   i   RC   i   t   Di   t   Ei	   t   Ft   Gi   i   t   Hi   t   Ii   t   Kt   Lt   MRD   i   t   Pt   Qt   RRE   t   Tt   Vi
   t   Wt   Yi    g…ëQ¸(@g…ëQ¸,@g      0@g)\�Âõ@@(   t   FalseRJ   t   set(   t   seqt	   seq_errorRZ   RC   RD   RB   RE   t	   Hydrogenst   Carbonst	   Nitrogenst   Oxygenst   Sulphurst   rest   weight(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetMassFromSequencev   sÒ    
 
 
 

 
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
N&c         C   s�   d } t  j d |  ƒ } | j ƒ  } xd | j ƒ  d j ƒ  D]L } xC | j ƒ  D]5 } | j ƒ  d j ƒ  j t  j	 k rN | d 7} qN qN Wq; W| S(   Ni    R   i   (
   R   R   R   R   R   R   RF   t   parentt   resnamet   common_residue_names_amino_acid(   R=   t   nresR>   RO   R)   t   rg(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetNumberofResiduesinPDBfile©   s    "c         C   s0   | s  t  |  ƒ d d j } n |  } t | ƒ S(   Ni    (   R    t   sequencet   len(   Rx   t   rawRh   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetNumberofResiduesFromSequence·   s    c         C   s~  d } t  j d |  ƒ } | j ƒ  } x=| j ƒ  d j ƒ  D]%} d } d } d } d } d }	 xÄ | j ƒ  D]¶ }
 |
 j r� ql n  |
 j j ƒ  j	 ƒ  } | d k r² |	 |
 j
 7}	 n  | d k rÎ | |
 j
 7} n  | d k rê | |
 j
 7} n  | d k r| |
 j
 7} n  | d k rl | |
 j
 7} ql ql W| |	 | d d | d	 d	 | d
 d
 | d d 7} q; Wd |  | f } | | f S(   Ni    R   RZ   RB   RC   RD   RE   g       @g      @g      @g      0@s   Atomic scattering of %s is %f(   R   R   R   R   R   RF   RG   RH   RI   RJ   t   occ(   R=   t
   scatteringR>   RO   R)   RK   RL   RM   RN   t   nHRP   RQ   RS   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetScatteringOfModelInPDBfileÂ   s4    	>c         C   sœ  | s  t  |  ƒ d d j } n |  } t } | j ƒ  } i  } i  } i  } i  } i  } 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
 <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 <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 <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 <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 } x· | D]¯ } | t d d d d
 d d d d d d d d d d d d d d d  d! g ƒ k r	q¯n  |	 | | 7}	 |
 | | 7}
 | | | 7} | | | 7} | | k r¯| | | 7} q¯q¯W|	 d' |
 d( | d) | d* | } d& | } | | f S(+   Ni    i   RU   i   i   RC   i   RV   i   RW   i	   RX   RY   i   i   RZ   i   R[   i   R\   R]   R^   RD   i   R_   R`   Ra   RE   Rb   Rc   i
   Rd   Re   g      @g      @g       @g      0@s   Scattering of sequence is %fg      B@g     €H@g      P@g      p@(   R    Rx   Rf   RJ   Rg   (   Rx   Rz   Rh   Ri   RZ   RC   RD   RB   RE   Rj   Rk   Rl   Rm   Rn   Ro   R}   RS   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetScatteringFromSequenceé   sÚ    
 
 
 

 
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 

 
 
 
N&
c         C   sÜ  d } d } d } d } d } d } d } d } ytt  j d |  ƒ }	 |	 j ƒ  }
 xOt d t |
 ƒ ƒ D]8} |	 j |
 | ƒ j ƒ  } |	 j |
 | ƒ j ƒ  } | d k rà | d k rà |
 | } t j	 | ƒ t | ƒ } qà n  | d k r!| d k r!|
 | } t j	 | ƒ t | ƒ } q!n  | d k rw| d k rw|
 | } t
 | ƒ d k rtt j	 | ƒ t | ƒ } qtqwn  | d k rg | d k rŸ|
 | } qŸqg qg WWn t k
 r¿} | } n X| | | | | | | | f S(	   NR   g        R   i    RX   R`   t   JR[   (   R   t   objectt   column_labelst   rangeRy   t
   get_columnt   typet   extract_valuest   matht   fsumt   minR   (   t   fnamet   Fcolt   Sigcolt   Icolt   Rfreecolt   avgFt   avgSigt   avgIt	   exceptmsgt   objt   columnsR-   t
   columntypet   valuesR4   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   GetMtzColumns#  sB         


"
c      	   C   sÝ  t  |  ƒ d k  r9 d t j j |  d ƒ } d | GHd  S|  d } |  d } | j ƒ  d k r£ t |  d |  d |  d |  d	 ƒ } x | D] } t | ƒ GHq‹ Wn  | j ƒ  d
 k rÏ t | ƒ } t | ƒ GHn  | j ƒ  d k rû t | ƒ } t | ƒ GHn  | j ƒ  d k r-t	 | ƒ \ } } t | ƒ GHn  | j ƒ  d k r_t
 | ƒ \ } } t | ƒ GHn  | j ƒ  d k rÙt | ƒ \ } } }	 }
 } } } } | d k r©| GHqÙd t j j | ƒ | | |	 |
 | | | f GHn  d  S(   Ni   s   phenix.python i    sg   usage: %s <option> <pdbfile>
where option is one of: [nresidues, PDBresolution, PDBscattering, PDBmass]i   i   t   ssmseqidi   i   t	   nresiduest   pdbresolutiont   pdbscatteringt   pdbmassR   R   s0   %s columns: %s, %s, %s, %s, Averages: %f, %f, %f(   Ry   t   ost   patht   basenamet   lowerR   t   strRw   RA   R   RT   R˜   (   t   argst   execmdt   optionR‹   t   valt   seqidRS   RŒ   R�   RŽ   R�   R�   R‘   R’   R“   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   mymainO  s6    	

%$t   __main__(   t   iotbx.bioinformaticsR    t   iotbxR   R   R   R7   t   sysRž   Rˆ   t   phaser.utils2R   RA   RT   Rq   Rw   Rf   R{   R   R€   R˜   R¨   t   __name__t   argv(    (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/SimpleFileProperties.pyt   <module>   s"   0
1		"	3		':	,	'