ó
šxTc           @   sN   d  d l  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d e _ d S(   iÿÿÿÿNt   Superpositionc           B   s5   e  Z d  Z d Z d „  Z d „  Z e d „  ƒ Z RS(   s   
    Superposition data
    c         C   s   | |  _  | |  _ d  S(   N(   t   transformationt   rmsd(   t   selfR   R   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyt   __init__
   s    	c         C   s"   |  j  d |  j j ƒ  d |  j ƒ S(   NR   R   (   t	   __class__R   t   inverseR   (   R   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyR      s    	c         C   sC   |  j  d  k r< |  d t j j d d f ƒ d d ƒ |  _  n  |  j  S(   NR   i   i    R   g        (	   i   i    i    i    i   i    i    i    i   (   i    i    i    (   t   UNITt   Nonet   scitbxt   matrixt   rt(   t   cls(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyt   unit   s    	N(	   t   __name__t
   __module__t   __doc__R   R   R   R   t   classmethodR   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyR       s
   		t   Proxyc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s0   
    Superposition using a certain protocol
    c         C   s"   | |  _  i  |  _ t ƒ  |  _ d  S(   N(   t   methodt   cachet   sett   failures(   R   R   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyR   *   s    		c   	      C   sM  | j  d ƒ | j  d | ƒ | j  d | ƒ | j ƒ  } | j ƒ  } | | k ro | j  d ƒ t j ƒ  } nH| | f |  j k r� | j  d ƒ t d ‚ n| | f |  j k rÕ | j  d ƒ |  j | | f } nâ | | f |  j k r&| j  d ƒ |  j | | f j ƒ  } | |  j | | f <n‘ | j  d	 |  j j	 ƒ y |  j d
 | d | ƒ } WnH t k
 r£} |  j j
 | | f ƒ |  j j
 | | f ƒ t | ‚ n X| |  j | | f <| j  d | j ƒ | j  d ƒ | j j j } | j  d | d d !ƒ | j  d | d d !ƒ | j  d | d d !ƒ | j  d | j j j ƒ | S(   Ns   Superposition:
s       Reference: %s
s       Moving: %s

s*   Identical (template equivalent) molecules
s   Failure found in cache
s   Superposition failures   Result found in cache
s!   Result found in cache (inverted)
s   Running %s...
t	   referencet   movings   Rmsd: %.3f
s
   Rotation:
s       %7.4f %7.4f %7.4f
i    i   i   i	   s   Translation: %.4f %.4f %.4f
(   t   writet   superpose_templateR    R   R   t   RuntimeErrorR   R   R   t   NAMEt   addR   R   t   rt   elemst   t(	   R   R   R   t   streamt   refidt   movidt   superpositiont   et   rotm(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyt	   superpose1   sF    c   	   	   C   só   | j  d ƒ | j  d | ƒ | j  d ƒ | j  d | ƒ |  j d | j d | d | ƒ } | j d | ƒ | j } d d	 l m } | j d
 | d | j j	 d | j
 j ƒ d | j | j j ƒ d | j ƒ } | j  d ƒ | j  d | ƒ | S(   Ns   Substituting ensemble in peak:
s       %s
s   with ensemble:
R   R   R!   t   celliÿÿÿÿ(   t	   mr_objectt   ensemblet   rotationt   elementst   translationt   bfactors   Substituted peak:
(   R   R'   R*   t   as_scitbx_rt_operatorR   t   phaser.pipelineR)   t   Peakt   Rotationt   MatrixR   R   t   fractionalizeR    R.   (	   R   t   peakR*   R(   R!   R$   t
   superposedR)   t   substituted(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyt
   substitutef   s$    				(   R   R   R   R   R'   R8   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyR   %   s   		5c         C   sç   y d d  l  } Wn  t k
 r2 } t d | ‚ n Xy( | j d | j ƒ  d |  j ƒ  ƒ } Wn  t k
 r} } t d | ‚ n X| j ƒ  } t d t j j	 | d d !| d	 d
 !| d d !| d | d
 | d f f ƒ d | j
 j ƒ S(   Niÿÿÿÿs-   SSM failure: Cannot import ccp4io_adaptbx: %sR   R   s   SSM superposition failed: %sR   i    i   i   i   i   i   R   (   t   ccp4io_adaptbxt   ImportErrorR   t   SecondaryStructureMatchingt   roott
   get_matrixR    R	   R
   R   t   ssmR   (   R   R   R9   R%   R>   t   tm(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyt   simple_ssm_superposition�   s    		At   SSM(   t   scitbx.matrixR	   t   objectR    R   R@   R   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/pipeline/superposition.pyt   <module>   s   "\	