ó
)™xTc           @   sX  d  d l  m Z d  d l m Z d  d l Z e j j d ƒ Z d  d l	 Td  d l
 m Z d  d l
 m Z d  d l Z d  d l m Z d  d l Z d	 e j j f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e  f d „  ƒ  YZ d e j j e! f d „  ƒ  YZ d e j j e" f d „  ƒ  YZ d e j j e# f d „  ƒ  YZ d e j j e$ f d „  ƒ  YZ d d d d d d d d „ Z& d S(   iÿÿÿÿ(   t   division(   t   flexNt   cctbx_adp_restraints_ext(   t   *(   t   crystal(   t   adptbx(   t   weight_as_sigmat   energies_isoc           B   s    e  Z d e d e e d  „ Z RS(   c         C   s!  | j  d  k	 s t ‚ | j d  k	 s* t ‚ | j | j k sB t ‚ t j j j |  d | d | d | j	 ƒ  j
 ƒ  d t j d |	 ƒ| j ƒ  } | r© | j	 ƒ  j ƒ  } n | j ƒ  } | rÊ | j ƒ  } n | j ƒ  } t j d | j  d | j ƒ  d | j ƒ  d	 | d
 | d | j ƒ  d | j	 ƒ  j ƒ  d | j d | j d | j d d d | d |
 ƒ } |  j | j 7_ |  j | j 7_ | rš|  j | j 7_ n  |
 s¾d  |  _ d  |  _ d  |  _ n$ | j |  _ | j |  _ | j |  _ | d  k	 r| d k r| j  d  k	 r| j  d k rt! j" | ƒ } t j# | ƒ | } |  j d 7_ | rÏd | | j
 ƒ  | } t j | j
 ƒ  | ƒ } |  j j$ ƒ  } | j$ ƒ  } | d k rÃ| j% rÃ| | | j  } qØ| j  } n	 | j  } |  j | | d | 7_ | r|  j | | |  _ qn  |  j& ƒ  d  S(   Nt   compute_gradientst	   gradientst   gradients_sizet   gradients_factoryt   normalizationt   pair_sym_tablet   orthogonalization_matrixt
   sites_fract   u_isost	   selectiont	   use_u_isot
   grad_u_isot   sphere_radiust   distance_powert   average_powert	   min_u_sumg�íµ ÷Æ°>t   collecti    i   g       @i   ('   t   plain_pair_sym_tablet   Nonet   AssertionErrort   plain_pairs_radiusR   t   scitbxt
   restraintst   energiest   __init__t
   scattererst   sizeR   t   doublet	   unit_cellt   extract_u_isot   extract_u_iso_or_u_equivt   all_selectiont   hd_selectionR   t(   adp_iso_local_sphere_restraints_energiesR   R   R   t   extract_grad_u_isoR   R   t   number_of_restraintst   residual_sumR	   t   u_it   u_jt   r_ijt   wilson_b_weightR   t   b_as_ut   meant   normt   wilson_b_weight_autot   finalize_target_and_gradients(   t   selft   geometry_restraints_managert   xray_structuret
   parameterst   use_u_local_onlyt   use_hdt   wilson_bR   R	   R   R   R$   R   R   R   t   wilson_ut   u_difft   g_wilsont   norm1t   norm2t   w(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR       s|    										N(   t   __name__t
   __module__R   t   Truet   FalseR    (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR      s
   t   adp_aniso_restraintsc           B   s   e  Z d d  „ Z RS(   c         C   sc  | j  ƒ  } | j ƒ  } | j ƒ  j | ƒ } | j ƒ  j ƒ  } | j ƒ  }	 | j ƒ  }
 | d  k	 ru |
 j | ƒ }
 n  | j d |
 ƒ j	 j
 } | d  k r´ t j |	 j ƒ  t ƒ } n  | j ƒ  } t d |	 d | d | d | d | d | d | d	 | ƒ } | j |  _ | j |  _ | d
 k r)d  |  _ n | j ƒ  |  _ | j ƒ  |  _ t j | |  j ƒ |  _ d  S(   Nt
   sites_cartR!   t   u_cartt   u_isot   bond_proxiesR   R(   t   n_grad_u_isoR;   i    (   R$   RL   R!   t   extract_u_cartR%   RH   R   t   selectt   pair_proxiesRK   t   simpleR   t   boolR"   RE   R(   t   eval_adp_aniso_restraintst   targetR+   t   gradients_isot   gradients_aniso_cartR   t   grad_u_cart_as_u_start   gradients_aniso_star(   R6   R8   t   restraints_managerR;   R   R$   RL   RI   RJ   R!   RH   t   bond_proxies_simpleR(   t   result(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR    b   s<    			N(   RC   RD   R   R    (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRG   a   s   t   _c           B   s   e  Z d  „  Z RS(   c      
   C   s#  d } |  j  ƒ  } |  j t t f k r= d g } | d  } n  | d	 | It | ƒ d k rj | d
 IJn
 | d IJd  } x¢ t | | ƒ D]‘ \ } } | d  k ræ t | ƒ d k rÇ d |  j ƒ  } qæ d |  j ƒ  |  j ƒ  f } n  | d | | | t d |  j	 ƒ |  j	 | f IJd } qŠ Wd  S(   Nt   U11t   U22t   U33t   U12t   U13t   U23t   Uisoi   s#   %s          delta    sigma   weightt   residuals   rms_deltas residuals    %6.2es      %6.2e %6.2es   %s %-4s %9.2e %6.2e %6.2e%st   weightt    (   R\   R]   R^   R_   R`   Ra   (
   t   deltast   use_u_anisoRF   t   lenR   t   zipRc   t
   rms_deltasR   Rd   (   R6   t   ft   prefixt
   adp_labelsRf   t   rdrt	   adp_labelt   delta(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyt   _show_sorted_item‹   s&    	

((   RC   RD   Rq   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   ‰   s   c           B   s/   e  Z d  „  Z d „  Z d d d d d „ Z RS(   c         C   s   t  d | d |  ƒ S(   Nt   paramst   proxies(   t   adp_similarity_deltas_rms(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyt
   deltas_rms£   s    c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   adp_similarity_residuals(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyt	   residuals¦   s    Re   c	   	      C   sY   t  d |  d t d d d d d | d | d	 | d
 | d d  d | d | d | d | ƒ d  S(   NR6   t
   proxy_typet   proxy_labels   ADP similarityt
   item_labelR!   t   by_valueRI   RJ   Rg   RH   t   site_labelsRk   Rl   t	   max_items(   t   _show_sorted_implt   adp_similarityR   (	   R6   R{   RI   RJ   Rg   R|   Rk   Rl   R}   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyt   show_sorted©   s    	N(   RC   RD   Ru   Rw   R   R€   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   ¡   s   		c           B   s   e  Z d  „  Z RS(   c         C   sS   | d | |  j  f IJ| d | |  j t d |  j ƒ |  j ƒ  |  j ƒ  f IJd  S(   Ns   %s Mean Ueq=%6.2es;   %s weight=%6.2e sigma=%6.2e rms_deltas=%6.2e residual=%6.2eRd   (   t	   mean_u_eqRd   R   Rj   Rc   (   R6   Rk   Rl   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRq   ½   s    (   RC   RD   Rq   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   »   s   c           B   s/   e  Z d  „  Z d „  Z d d d d d „ Z RS(   c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   adp_u_eq_similarity_deltas_rms(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRu   Ç   s    c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   adp_u_eq_similarity_residuals(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRw   Ê   s    Re   c	   	      C   sY   t  d |  d t d d d d d | d | d	 | d
 | d d  d | d | d | d | ƒ d  S(   NR6   Rx   Ry   s   Ueq similarityRz   R!   R{   RI   RJ   Rg   RH   R|   Rk   Rl   R}   (   R~   t   adp_u_eq_similarityR   (	   R6   R{   RI   RJ   Rg   R|   Rk   Rl   R}   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR€   Í   s    	N(   RC   RD   Ru   Rw   R   R€   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   Å   s   		c           B   s   e  Z d  „  Z RS(   c         C   sS   | d | |  j  f IJ| d | |  j t d |  j ƒ |  j ƒ  |  j ƒ  f IJd  S(   Ns   %s Mean Volume=%6.2es;   %s weight=%6.2e sigma=%6.2e rms_deltas=%6.2e residual=%6.2eRd   (   t   mean_u_volumeRd   R   Rj   Rc   (   R6   Rk   Rl   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRq   á   s    (   RC   RD   Rq   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   ß   s   c           B   s/   e  Z d  „  Z d „  Z d d d d d „ Z RS(   c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t    adp_volume_similarity_deltas_rms(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRu   ë   s    c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   adp_volume_similarity_residuals(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRw   î   s    Re   c	   	      C   sY   t  d |  d t d d d d d | d | d	 | d
 | d d  d | d | d | d | ƒ d  S(   NR6   Rx   Ry   s   ADP volume similarityRz   R!   R{   RI   RJ   Rg   RH   R|   Rk   Rl   R}   (   R~   t   adp_volume_similarityR   (	   R6   R{   RI   RJ   Rg   R|   Rk   Rl   R}   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR€   ñ   s    	N(   RC   RD   Ru   Rw   R   R€   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   é   s   		c           B   s   e  Z d  „  Z RS(   c      
   C   s¤   d } | d | IJd  } xƒ t | |  j ƒ  ƒ D]l \ } } | d  k rg d |  j ƒ  |  j ƒ  f } n  | d	 | | | t d
 |  j ƒ |  j | f IJd } q0 Wd  S(   NR\   R]   R^   R_   R`   Ra   s6   %s         delta    sigma   weight rms_deltas residuals      %6.2e %6.2es   %s %s %9.2e %6.2e %6.2e%sRd   Re   (   s   U11s   U22s   U33s   U12s   U13s   U23(   R   Ri   Rf   Rj   Rc   R   Rd   (   R6   Rk   Rl   Rm   Rn   Ro   Rp   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRq     s    
"(   RC   RD   Rq   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[     s   c           B   s/   e  Z d  „  Z d „  Z d d d d d „ Z RS(   c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   isotropic_adp_deltas_rms(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRu     s    c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   isotropic_adp_residuals(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRw     s    Re   c	   	      C   sY   t  d |  d t d d d d d | d | d	 | d
 | d d  d | d | d | d | ƒ d  S(   NR6   Rx   Ry   s   Isotropic ADPRz   t	   scattererR{   RI   RJ   Rg   RH   R|   Rk   Rl   R}   (   R~   t   isotropic_adpR   (	   R6   R{   RI   RJ   Rg   R|   Rk   Rl   R}   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR€     s    	N(   RC   RD   Ru   Rw   R   R€   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[     s   		c           B   s   e  Z d  „  Z RS(   c      	   C   sg   d } | d | I| d IJd |  j  ƒ  } | d | | |  j ƒ  t d |  j ƒ |  j | f IJd  S(   Nt   Ueqs#   %s          delta    sigma   weightRc   s    %6.2es   %s %-4s %9.2e %6.2e %6.2e%sRd   (   Rc   Rp   R   Rd   (   R6   Rk   Rl   Ro   Rn   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRq   /  s    

(   RC   RD   Rq   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   -  s   c           B   s/   e  Z d  „  Z d „  Z d d d d d „ Z RS(   c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   fixed_u_eq_adp_deltas_rms(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRu   ;  s    c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   fixed_u_eq_adp_residuals(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRw   >  s    Re   c	   	      C   sY   t  d |  d t d d d d d | d | d	 | d
 | d d  d | d | d | d | ƒ d  S(   NR6   Rx   Ry   s   Fixed Ueq ADPRz   R‹   R{   RI   RJ   Rg   RH   R|   Rk   Rl   R}   (   R~   t   fixed_u_eq_adpR   (	   R6   R{   RI   RJ   Rg   R|   Rk   Rl   R}   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR€   A  s    	N(   RC   RD   Ru   Rw   R   R€   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   9  s   		c           B   s   e  Z d  „  Z RS(   c         C   sJ   | d | IJ| d | |  j  ƒ  t d |  j ƒ |  j |  j ƒ  f IJd  S(   Ns'   %s   delta_z    sigma   weight residuals   %s %9.2e %6.2e %6.2e %6.2eRd   (   t   delta_zR   Rd   Rc   (   R6   Rk   Rl   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRq   V  s
    
(   RC   RD   Rq   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   T  s   c           B   s/   e  Z d  „  Z d „  Z d d d d d „ Z RS(   c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   rigid_bond_deltas(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRf   _  s    c         C   s   t  d | d |  ƒ S(   NRr   Rs   (   t   rigid_bond_residuals(   R6   Rr   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyRw   b  s    Re   c         C   sY   t  d |  d t d d d d d | d | d	 d  d
 d  d | d | d | d | d | ƒ d  S(   NR6   Rx   Ry   s
   Rigid bondRz   R!   R{   RI   RJ   Rg   RH   R|   Rk   Rl   R}   (   R~   t
   rigid_bondR   (   R6   R{   RH   RI   R|   Rk   Rl   R}   (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR€   e  s    N(   RC   RD   Rf   Rw   R   R€   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR[   ]  s   		Re   c      	   C   s½  | d k s t  ‚ |	 d  k s< t |	 ƒ | j ƒ  k s< t  ‚ | d  k sf t | ƒ | j ƒ  k sf t  ‚ | | g j d  ƒ d k s‡ t  ‚ |
 d  k rŸ t j }
 n  |
 d | | |  j ƒ  f IJ|  j ƒ  d k rÒ d  S| d  k	 rî | d k rî d  Sd d l m } | d  k rg  } n  | d  k r(g  } n  | d  k r=g  } n  | d	 | d
 | d | d | ƒ } | d k r¦| t	 t
 t t t t f k r�|  j d | ƒ } q0t  ‚ nŠ | d k rë| t	 t
 t t t f k râ|  j d | ƒ } q0t  ‚ nE | d k r*| t k r!t j |  j d | ƒ ƒ } q0t  ‚ n t  ‚ t j d | d t ƒ } | d  k	 ra| |  } n  d t | ƒ } |
 d | | f IJt
 t f } xî| D]æ} |  | } | } | t t f k r|	 d  k rât | j d ƒ } n |	 | j d } |
 d | | | f IJ| } n| | k rÁ| d | d | ƒ } | j d |
 d | ƒ |
 d | IJxÈ t | j ƒ D]R \ } } |	 d  k r�t | ƒ } n
 |	 | } |
 d | | | j ƒ  | f IJqhWnb x_ t | j ƒ D]N \ } } |	 d  k røt | ƒ } n
 |	 | } |
 d | | | f IJ| } qÑW| t	 t t t f k ri| d | d | ƒ } | j d |
 d | ƒ q˜| | k rxq˜t  ‚ q˜W|  j ƒ  | j ƒ  } | d k r¹|
 | d | IJn  d  S(   NRc   Rj   Rp   i    i   s   %s%s restraints: %diÿÿÿÿ(   t   adp_restraint_paramsRH   RI   RJ   Rg   Rr   t   datat   reverset    s   %sSorted by %s:s   %s%s %st   proxyRk   Rl   s   %s         deltas   %s %s %9.2es   ... (remaining %d not shown)(   s   residuals
   rms_deltass   delta(   i    i   (   R   R   Rh   R"   t   countt   syst   stdoutt   cctbx.adp_restraintsR•   R   R„   Rˆ   RŒ   R�   R”   Rw   Ru   R   t   absRf   t   sort_permutationRE   t   strt   i_seqsRq   t	   enumerate(   R6   Rx   Ry   Rz   R{   RI   RJ   Rg   RH   R|   Rk   Rl   R}   R•   Rr   t   data_to_sortt   i_proxies_sortedt   item_label_blankt   dynamic_proxy_typest   i_proxyR™   t   st   lt	   restraintt   nt   i_seqt   n_not_shown(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyR~   v  sš    **!    	 	 					
 	
 
( 


('   t
   __future__R    t   cctbx.array_familyR   t   boost.pythont   boostt   pythont
   import_extt   extR   t   cctbxR   R   t   scitbx.restraintsR   t   cctbx.geometry_restraintsR   R›   R   R   R   t   objectRG   t   injectorR   R[   t   shared_adp_similarity_proxyR„   t    shared_adp_u_eq_similarity_proxyRˆ   t"   shared_adp_volume_similarity_proxyRŒ   t   shared_isotropic_adp_proxyR�   t   shared_fixed_u_eq_adp_proxyR”   t   shared_rigid_bond_proxyR   R~   (    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/adp_restraints/__init__.pyt   <module>   s<   
R(

	