ó
¢™xTc           @   s�   d  d l  m Z d  d l Z d  d l Z d  d l m Z m Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d e d
 „ Z d „  Z d S(   iÿÿÿÿ(   t   divisionN(   t   Sorryt   Usagec          C   s   d d  l  }  |  j j d d ƒ S(   Niÿÿÿÿt   input_strings  
    analyze_peptides {
      pdb = None
        .type = path
        .help = '''Enter a PDB file name'''
      cis_only = True
        .type = bool
        .help = '''Only print cis peptides'''
      verbose = True
        .type = bool
        .help = '''Verbose'''
}
(   t   libtbx.philt   philt   parse(   t   libtbx(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt   get_master_phil   s    c           C   s   d S(   Nsû   
mmtbx.analyze_peptides file.pdb [params.eff] [options ...]

Options:

  pdb=input_file        input PDB file
  cis_only=True         only list cis peptides
  verbose=True          verbose text output

Example:

  mmtbx.analyze_peptides pdb=1xwl.pdb

(    (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt   usage   s    c         C   s^  g  } g  } g  } x<|  j  ƒ  D].} x%| j ƒ  D]} d  } | j } xÿ| j ƒ  D]ñ} | d  k rr | } qT n  xÊ| j ƒ  D]¼}	 |	 j ƒ  r |	 j }
 xž|	 j ƒ  D]�} | j	 ƒ  } | j
 } | j ƒ  } xc| j ƒ  D]U} | j ƒ  rÛ | j |
 k s| j d k s|
 d k r0| j } x
| j ƒ  D]ù } | j	 ƒ  } | j
 } | j ƒ  } t d | d | ƒ } t d | d | ƒ } d | j | | | f } d | j | |
 | f } | rÌ| j | | f ƒ q-| rè| j | | f ƒ q-| r| r| j | | f ƒ q-t d | | f d ƒ ‚ q-Wq0qÛ qÛ Wq§ Wq q W| } qT Wq2 Wq W| | | f S(   Nt    t
   prev_atomst   atomss
   %s%5s %s%ss   %s:%s s&   have uncharacteristic peptide geometry(   t   modelst   chainst   Nonet   idt   residue_groupst
   conformerst
   is_proteint   altloct   residuesR   t   resnamet   residt   is_cis_peptidet   is_trans_peptidet   appendR   (   t   pdb_hierarchyt   cis_peptidest   trans_peptidest   outlierst   modelt   chaint   prev_rgt   chain_idt   rgt	   conformerR   t   residueR   R   R   t   prev_cont   prev_altloct   prev_resR   t   prev_resnamet
   prev_residt   is_cist   is_transt   res1t   res2(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt   analyze'   sf    								
	
#c         C   sÿ   d \ } } } } |  d  k	 rb xA |  D]6 } | j d k rC | } n  | j d k r% | } q% q% Wn  | d  k	 r² xA | D]6 } | j d k r“ | } n  | j d k ru | } qu qu Wn  | d  k	 rû | d  k	 rû | d  k	 rû | d  k	 rû t j j | | | | ƒ Sd  S(   Ns    CA s    C  s    N  (   NNNN(   R   t   namet   mmtbxt   rotamert   omega_from_atoms(   R   R   t   prevCAt   prevCt   curNt   curCAt   atom(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt	   get_omega_   s$     	  	 c         C   s3   t  |  | ƒ } | d k r+ | d k  r+ t St Sd  S(   Niâÿÿÿi   (   R9   t   Truet   False(   R   R   t   omega(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyR   o   s    c         C   sK   t  |  | ƒ } | d k r' | d k s? | d k rC | d k  rC t St Sd  S(   Ni–   i´   iLÿÿÿijÿÿÿ(   R9   R:   R;   (   R   R   R<   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyR   v   s
    c   
      C   s  g  } x3 |  D]+ } d | d | d f } | j  | ƒ q W| s± x3 | D]+ } d | d | d f } | j  | ƒ qI Wx6 | D]+ } d | d | d f } | j  | ƒ q Wn  d „  } | j d | ƒ | d  k râ t j } n  | d IJ| d	 IJx | D] }	 | |	 IJqý Wd  S(
   Ns	   %s:%s:cisi    i   s   %s:%s:transs   %s:%s:OUTLIERc         S   s   |  d d !S(   Ni    i   (    (   t   pair(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt   get_sort_key�   s    t   keys   #
#peptide geometry analysis
#s    residue1:residue2:classification(   R   t   sortR   t   syst   stdout(
   R   R   R   t   logt   cis_onlyt
   print_listR=   t   txtR>   t   line(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt   show~   s&    	

c      	   C   sr  t  |  ƒ d k s6 d |  k s6 d |  k s6 d |  k rH t t ƒ  ƒ ‚ n  d d  l } d d  l } t ƒ  } t |  ƒ }  | j j d |  d | d d ƒ } | j	 d
 | d ƒ } | j
 ƒ  } t  | d	 ƒ d k rò t j d ƒ \ } } t | ƒ ‚ n  | d	 d } | j }	 | j j |	 ƒ }
 |
 j ƒ  } | j ƒ  t d | ƒ \ } } } t d | d | d | d | j j ƒ d  S(   Ni    s   --helps   --hs   -hiÿÿÿÿt   argst   master_philt   input_typest   pdbt   sourcesR   i   t   ramalyzeR   R   R   R   RD   (   s   pdb(   t   lenR   R	   t	   iotbx.pdbt   iotbx.utilsR   t   listt   utilst   process_command_line_inputst   fetcht   extractt   selft   get_summary_and_headert	   file_nameRL   t   inputt   construct_hierarchyt   reset_i_seq_if_necessaryR/   RH   t   analyze_peptidesRD   (   RI   t   iotbxRJ   t   input_objectst	   work_philt   work_paramst   summaryt   headert   file_objRY   t   pdb_ioR   R   R   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt   run™   s2    6			
(   t
   __future__R    RA   t   mmtbx.rotamerR1   t   libtbx.utilsR   R   R   R	   R/   R9   R   R   R   R:   RH   Rf   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/analyze_peptides.pyt   <module>   s   			8			