ó
×™xTc           @   s«   d  d l  m Z d  d l Z d  d l m Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 e e d
 „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   divisionN(   t   geometry_restraintsc         C   s7   | d |  d | d |  d | d |  d g } | S(   Ni    i   i   (    (   t   p1t   p2t   v(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt	   vectorize(   s    3c         C   s-   t  j |  d d |  d d |  d d ƒ S(   Ni    i   i   (   t   matht   sqrt(   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   veclen-   s    c         C   s0   |  d | d |  d | d |  d | d S(   Ni    i   i   (    (   t   v1t   v2(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   dot1   s    c         C   ss   |  d | d |  d | d } |  d | d |  d | d } |  d | d |  d | d } | | | g S(   Ni   i   i    (    (   R	   R
   t   xt   yt   z(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   cross5   s    """c         C   sä   | d |  d | d |  d | d |  d g } | d | d |  d | d | d |  d | d | d |  d | d d | d d | d d } |  d | d | |  d | d | |  d | d | g } | S(   Ni    i   i   (    (   t   a1t   a2t   b1t   At   tt   b2(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   perptersect=   s    3n?c         C   s+   t  |  | | ƒ } t t | | ƒ ƒ } | S(   N(   R   R   R   (   R   R   R   R   t   distance(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   perpdistG   s    c         C   s"  x|  D]} |  | } t  } | j rw | j } | j rw | j } | j rt | j } | j rq | j }	 t } qq qt qw n  | sƒ q n  | j d ƒ }
 | j d ƒ } | j d ƒ } | j d ƒ } |	 j d ƒ } d  |
 | | | | g k rï q n  | rlt j d |
 | | | g d d d d ƒ } t j d | | | | g d d d d ƒ } | j | j	 d <| j | j	 d <n  | r t j
 d |
 | | g d d	 d d ƒ } t j
 d | | | g d d	 d d ƒ } t j
 d | | | g d d	 d d ƒ } | j | j	 d
 <| j | j	 d <| j | j	 d <q q Wd  S(   Nt   CAt   sitest   angle_idealiØÿÿÿt   weighti   t   CA_d_int   CA_d_outix   t   CA_a_int   CA_at   CA_a_out(   t   Falset   prevrest   nextrest   Truet
   getatomxyzt   NoneR   t   dihedralt   angle_modelt   measurest   angle(   t   proteint   dodihedralst   doanglest   resid2t   res2t   gotallt   res1t   res0t   res3t   res4t   CA_0t   CA_1t   CA_2t   CA_3t   CA_4t   d_int   d_outt   a_int   at   a_out(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt	   CApseudosS   sL    
								c      	   C   s³  x¬|  D]¤} |  | } t  } | j rb | j } | j rb | j } | j r_ | j } t } q_ qb n  | sn q n  | j d ƒ | j d ƒ } } | j d ƒ | j d ƒ }	 }
 | j d ƒ | j d ƒ } } | j d ƒ } d  | |	 | | | |
 | g k rq n  t | |	 | ƒ } t |	 | |
 ƒ } t | | | ƒ } t j d | | | |
 g d d d d ƒ } t j d |
 | | | g d d d d ƒ } | j	 | j
 d <| j	 | j
 d	 <q Wd  S(
   NR   t   OR   R   iØÿÿÿR   i   t   CO_d_int   CO_d_out(   R"   R#   R$   R%   R&   R'   R   R   R(   R)   R*   (   R,   R/   R0   R1   R2   R4   R5   R7   t   O_1R8   t   O_2R9   t   O_3R:   t	   pseudoC_1t	   pseudoC_2t	   pseudoC_3R;   R<   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   COpseudodihedrals…   s6    
						!c      	   C   s&  x|  D]} |  | } t  } | j rw | j } | j rw | j } | j rt | j } | j rq | j } t } qq qt qw n  | sƒ q n  | j d ƒ } | j d ƒ | j d ƒ }	 }
 | j d ƒ | j d ƒ } } | j d ƒ } | j d ƒ } d  | |	 | | | |
 | g k rq n  t j d | |	 | | g d d d d ƒ } t j d |	 | | | g d d d d ƒ } t |	 | |
 ƒ } t | | | ƒ } t j d |
 | | | g d d d d ƒ } t j	 d |	 | | g d d d d ƒ } | j
 | j d	 <| j
 | j d
 <| j
 | j d <| j
 | j d <q Wd  S(   NR   RA   R   R   iØÿÿÿR   i   ix   R   R   RB   R    (   R"   R#   R$   R%   R&   R'   R   R(   R   R+   R)   R*   (   R,   R/   R0   R1   R2   R3   R4   R5   R6   R7   RD   R8   RE   R9   R:   R;   R<   RG   RH   t   co_int   ca_a(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   cablam_measures¯   sF    
								!c         C   s¢  x›|  D]“} |  | } t  } | j rw | j } | j rw | j } | j rt | j } | j rq | j } t } qq qt qw n  | sƒ q n  | j d ƒ } | j d ƒ }	 | j d ƒ }
 | j d ƒ } | j d ƒ } d  | |	 |
 | | g k rï q n  t j d | |	 |
 | g d d d d ƒ } t j d |	 |
 | | g d d d d ƒ } t j d |	 |
 | g d d d d ƒ } | j	 | j
 d <| j	 | j
 d	 <| j	 | j
 d
 <q Wd  S(   NR   R   R   iØÿÿÿR   i   ix   R   R   R    (   R"   R#   R$   R%   R&   R'   R   R(   R+   R)   R*   (   R,   R/   R0   R1   R2   R3   R4   R5   R6   R7   R8   R9   R:   R;   R<   R>   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   ca_measuresß   s<    
								c         C   sb  x[|  D]S} |  | } t  } | j rM | j } | j rM | j } t } qM n  | sY q n  | j d ƒ } | j d ƒ } | j d ƒ | j d ƒ } }	 | j d ƒ }
 d  | | | |	 |
 g k rÆ q n  t j d | | | |	 g d d d d ƒ } t j d | | |	 |
 g d d d d ƒ } | j | j	 d	 <| j | j	 d
 <| j | j	 d <| j | j	 d <q Wd  S(   Nt   Ct   NR   R   R   iØÿÿÿR   i   t   phit   psis   phi+1s   psi-1(
   R"   R#   R$   R%   R&   R'   R   R(   R)   R*   (   R,   R/   R0   R1   R2   R4   t   CO_1t   N_2R8   t   C_2t   N_3RQ   RR   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   phipsi	  s0    
				c         C   sž   x— |  D]� } |  | } | j  d ƒ } | j  d ƒ } | j  d ƒ } d  | | | g k r_ q n  t j d | | | g d d d d ƒ } | j | j d	 <q Wd  S(
   NRP   R   RO   R   R   ix   R   i   t   tau(   R&   R'   R   R+   R)   R*   (   R,   R/   R0   RP   R   RO   RX   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   taucalc-  s    
'c   
      C   sà   xÙ |  D]Ñ } |  | } t  } | j r8 | j } t } n  | sD q n  | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } d  | | | | g k rž q n  t j d | | | | g d d d d ƒ }	 |	 j | j d	 <q Wd  S(
   NR   RO   RP   R   R   iØÿÿÿR   i   t   omega(	   R"   R#   R%   R&   R'   R   R(   R)   R*   (
   R,   R/   R0   R1   R2   R   RO   RT   R8   RZ   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt	   omegacalc@  s"    
			(   t
   __future__R    R   t   cctbxR   R   R   R   R   R   R   R%   R@   RJ   RM   RN   RW   RY   R[   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/cablam/cablam_math.pyt   <module>   s    					
	2	*	0	*	$	