ó
±™xTc           @   sl   d  d l  m Z d  d l Z d  d l m Z d  d l m Z d „  Z e d k rh e d e j	 d ƒ n  d S(	   iÿÿÿÿ(   t   divisionN(   t   utils(   t   Sorryc         C   sÊ  t  |  ƒ d k r! t d ƒ ‚ n  |  d } |  d } d d  l } | j j d | ƒ j ƒ  } | j j d | ƒ j ƒ  } g  } g  } x“ | j ƒ  D]… } x| t | j ƒ  ƒ D]h \ }	 }
 t	 } x: |
 j
 ƒ  D], } | j ƒ  rî | j ƒ  rî qÈ qÈ t } qÈ W| sq© n  | j |
 ƒ q© Wq� Wx“ | j ƒ  D]… } x| t | j ƒ  ƒ D]h \ }	 }
 t	 } x: |
 j
 ƒ  D], } | j ƒ  r„| j ƒ  r„q^q^t } q^W| sšq?n  | j |
 ƒ q?Wq&Wd GHHd | GHd	 | GHHd
 GHd GHxñ t | ƒ D]ã \ }	 }
 xÔ t | ƒ D]Æ \ } } d  } y" t j d |
 d | ƒ \ } } Wn@ t k
 rn} t | ƒ d k rot | ƒ d k ro| ‚ qon X| d  k	 r£d |
 j Gd | j Gd | j j GHqød |
 j Gd | j Gd GHqøWqßWd  S(   Ni   s9   mmtbx.ssm_rmsd_for_chains requires two PDB files as inputi    i   iÿÿÿÿt	   file_names   ### SSM RMSD for chainss
   PDB_1 = %ss
   PDB_2 = %ss,   PDB_1 chainID     PDB_2 chainID     SSM RMSDs,   --------------------------------------------t   reference_chaint   moving_chains$   can't make graph for first structures"   secondary structure does not matchs   %13ss   %17ss   %12.3fs   %12st   Nones           None(   t   lenR   t	   iotbx.pdbt   pdbt   inputt   construct_hierarchyt   modelst	   enumeratet   chainst   Falset
   conformerst
   is_proteint   is_nat   Truet   appendR   R   t
   _ssm_alignt   RuntimeErrort   strt   idt   ssmt   rmsd(   t   argst   file1t   file2t   iotbxt   pdb1t   pdb2t   chains1t   chains2t   modelt   it   chain_it   found_conformert	   conformert   jt   chain_jR   t	   ssm_alignt   e(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/ssm_rmsd_for_chains.pyt   run   sd    



			(t   __main__R   i   (
   t
   __future__R    t   syst   mmtbx.torsion_restraintsR   t   libtbx.utilsR   R,   t   __name__t   argv(    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/ssm_rmsd_for_chains.pyt   <module>   s   	: