ó
+™xTc           @   sL  d  d l  m Z d  d l Z d  d l m Z d  d l Z d  d l Z d  d l	 m
 Z
 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 Z d  d	 l m Z d  d l Z e j j j Z e j j j Z e j j j Z d
 „  Z  d „  Z! d d „ Z" d e j j# e$ f d „  ƒ  YZ% d e& f d „  ƒ  YZ' d e& f d „  ƒ  YZ( d e( f d „  ƒ  YZ) d e( f d „  ƒ  YZ* d e( f d „  ƒ  YZ+ d e( f d „  ƒ  YZ, d e( f d „  ƒ  YZ- d e( f d „  ƒ  YZ. d e j j# e/ f d  „  ƒ  YZ% d d d d! d d e1 d" „ Z2 d e j j# e3 f d# „  ƒ  YZ% d e j j# e4 f d$ „  ƒ  YZ% d e j j# e5 f d% „  ƒ  YZ% d e j j# e6 f d& „  ƒ  YZ% d e j j# e7 f d' „  ƒ  YZ% d e j j# e8 f d( „  ƒ  YZ% d e j j# e9 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% d0 „  Z@ eA d1 „ ZB d2 „  ZC d3 e& f d4 „  ƒ  YZD d e j j# e jE f d5 „  ƒ  YZ% d e j j# e jF f d6 „  ƒ  YZ% d e j j# e jG f d7 „  ƒ  YZ% d S(8   iÿÿÿÿ(   t   divisionN(   t   flex(   t   approx_equal(   t   show_string(   t   Sorryt   cctbx_geometry_restraints_ext(   t   *(   t   mathc         C   s   |  d k r d Sd |  d S(   Ni    i   g      à?(    (   t   weight(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   weight_as_sigma   s     c         C   s   |  d k r d Sd |  d S(   Ni    i   i   (    (   t   sigma(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   sigma_as_weight   s     i   c         C   sl   d t  d | ƒ } t j | |  d | ƒ } | | k  rK | d | 7} n | | k rh | d | 8} n  | S(   Ng     €f@i   i   (   t   maxR   t   fmod(   t   angle_1t   angle_2t   periodicityt   half_periodt   d(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   angle_delta_deg    s      t   _c           B   s   e  Z d  „  Z RS(   c         C   s>   | | k r | | } } n  |  | } | | k r6 d  S| | S(   N(   t   None(   t   selft   i_seqt   j_seqt   bond_params_by_j_seq(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   lookup)   s     
 (   t   __name__t
   __module__R   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   '   s   t   proxy_registry_process_resultc           B   s   e  Z d e e d d  „ Z RS(   c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   t   tabulated_proxyt   is_newt   is_conflictingt   conflict_source_labels(   R   R   R   R    R!   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   __init__1   s    			N(   R   R   R   t   FalseR"   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   /   s   t   proxy_registry_basec           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s8   | |  _  | |  _ d |  _ t j ƒ  |  _ |  j ƒ  d  S(   Ni    (   t   proxiest   strict_conflict_handlingt   n_resolved_conflictsR   t   size_tt   countst   discard_table(   R   R%   R&   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"   =   s
    			c         C   s+   i  |  _  t j ƒ  |  _ t j ƒ  |  _ d  S(   N(   t   tableR   t
   std_stringt   source_labelst   intt   source_n_expected_atoms(   R   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   initialize_tableD   s    	c         C   s   d  |  _ d  |  _ d  |  _ d  S(   N(   R   R+   R-   R/   (   R   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR*   I   s    		c         C   s9   |  j  d  k s t ‚ |  j j | ƒ |  j j d ƒ d  S(   Ni   (   R+   R   t   AssertionErrorR%   t   appendR)   (   R   t   proxy(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   append_custom_proxyN   s    c         C   sb   |  j  j | ƒ |  j j d ƒ |  j j | j ƒ  ƒ |  j j | j ƒ  ƒ | | _ t | _	 d  S(   Ni   (
   R%   R2   R)   R-   t   labelsR/   t   n_expected_atomsR   t   TrueR   (   R   t   source_infoR3   t   process_result(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   _append_proxyS   s    	c         C   s¹   | j  ƒ  } |  j s( |  j | | k rP t | _ |  j | | j ƒ  f | _ ne |  j d 7_ |  j | | k  rµ | |  j	 | <|  j | c d | j ƒ  7<| |  j | <| | _
 n  d  S(   Ni   s   , (   R6   R&   R/   R7   R    R-   R5   R!   R'   R%   R   (   R   R8   R3   t   i_listR9   R/   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   _handle_conflict[   s    	
		
(   R   R   R"   R0   R*   R4   R:   R<   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR$   ;   s   					t   bond_simple_proxy_registryc           B   s8   e  Z d  „  Z d „  Z d „  Z d „  Z d d „ Z RS(   c         C   s)   t  j |  d t ƒ  d | ƒ| |  _ d  S(   NR%   R&   (   R$   R"   t   shared_bond_simple_proxyt   n_seq(   R   R?   R&   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"   q   s    	c         C   s6   t  j |  ƒ g  t |  j ƒ D] } i  ^ q |  _ d  S(   N(   R$   R0   t   xrangeR?   R+   (   R   t   i(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR0   w   s    c         C   s*   |  j  | d j | d ƒ s" d  St Sd  S(   Ni    i   (   R+   t   has_keyR   R7   (   R   t   i_seqs(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   is_proxy_set{   s    c         C   sU   xN | D]F } x= | D]5 } | | g } | j  ƒ  |  j | ƒ } | r | Sq Wq Wt S(   N(   t   sortRD   R#   (   R   RC   t   j_seqsRA   t   jt   tmpt   ps(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   is_any_proxy_set�   s    
 g�íµ ÷Æ°>c      	   C   s5  t  ƒ  } | j ƒ  } |  j | j d j | j d ƒ s€ |  j j ƒ  |  j | j d | j d <|  j d | d | d | ƒ n± |  j | j d | j d } |  j | | _ t	 | j j
 | j
 ƒ | k sí t	 | j j | j ƒ | k r|  j d | d | d | d | ƒ n  | j s1|  j | c d 7<n  | S(   Ni    i   R8   R3   R9   R;   (   R   t   sort_i_seqsR+   RC   RB   R%   t   sizeR:   R   t   abst   distance_idealR   R<   R    R)   (   R   R8   R3   t	   tolerancet   resultR;   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   processŠ   s,    	$(	
		
	(   R   R   R"   R0   RD   RJ   RQ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR=   o   s
   					t   angle_proxy_registryc           B   s2   e  Z d  „  Z d d „ Z d d „ Z d „  Z RS(   c         C   s    t  j |  d t ƒ  d | ƒd  S(   NR%   R&   (   R$   R"   t   shared_angle_proxy(   R   R&   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"   ¥   s    	g�íµ ÷Æ°>c         C   s¦   t  | j ƒ d k s t ‚ | j ƒ  } |  j j | j d i  ƒ } | j d | j d f } | j | ƒ s¢ |  j j ƒ  | | <|  j j	 | ƒ |  j
 j	 d ƒ n  t S(   Ni   i   i    i   (   t   lenRC   R1   RK   R+   t
   setdefaultRB   R%   RL   R2   R)   R7   (   R   R3   RO   t   tab_i_seq_1t
   i_seqs_0_2(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   add_if_not_duplicatedª   s    c      	   C   s1  t  ƒ  } | j ƒ  } |  j j | j d i  ƒ } | j d | j d f } | j | ƒ sŒ |  j j ƒ  | | <|  j d | d | d | ƒ n¡ | | } |  j | | _	 t
 t | j	 j | j ƒ ƒ | k sé t
 | j	 j | j ƒ | k r|  j d | d | d | d | ƒ n  | j s-|  j | c d 7<n  | S(   Ni   i    i   R8   R3   R9   R;   (   R   RK   R+   RU   RC   RB   R%   RL   R:   R   RM   R   t   angle_idealR   R<   R    R)   (   R   R8   R3   RO   RP   RV   RW   R;   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRQ   µ   s0    		

		
	c         C   sc   | \ } } } |  j  j | ƒ } | d k r1 d S| | k rP | j | | f ƒ S| j | | f ƒ S(   s@   See also: cctbx::geometry_restraints::angle_proxy::sort_i_seqs()N(   R+   t   getR   (   R   RC   t   i0t   i1t   i2RV   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   lookup_i_proxyÐ   s    (   R   R   R"   RX   RQ   R^   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRR   £   s   	t   dihedral_proxy_registryc           B   s2   e  Z d  „  Z d d „ Z d d „ Z d „  Z RS(   c         C   s    t  j |  d t ƒ  d | ƒd  S(   NR%   R&   (   R$   R"   t   shared_dihedral_proxy(   R   R&   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"   Ü   s    	g�íµ ÷Æ°>c         C   s°   t  | j ƒ d k s t ‚ | j ƒ  } |  j j | j d i  ƒ } | j d | j d | j d f } | j | ƒ s¬ |  j j ƒ  | | <|  j j	 | ƒ |  j
 j	 d ƒ n  t S(   Ni   i    i   i   i   (   RT   RC   R1   RK   R+   RU   RB   R%   RL   R2   R)   R7   (   R   R3   RO   t   tab_i_seq_0t   i_seqs_1_2_3(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRX   á   s    $c      	   C   sV  t  ƒ  } | j ƒ  } |  j j | j d i  ƒ } | j d | j d | j d f } | j | ƒ s– |  j j ƒ  | | <|  j d | d | d | ƒ n¼ | | } |  j | | _	 t
 t | j	 j | j | j ƒ ƒ | k st
 | j	 j | j ƒ | k s| j	 j | j k r3|  j d | d | d | d | ƒ n  | j sR|  j | c d 7<n  | S(	   Ni    i   i   i   R8   R3   R9   R;   (   R   RK   R+   RU   RC   RB   R%   RL   R:   R   RM   R   RY   R   R   R<   R    R)   (   R   R8   R3   RO   RP   Ra   Rb   R;   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRQ   ì   s4    	$	

		
	c         C   s¢   | \ } } } } d } | | k r> | | } } | d 9} n  | | k rd | | } } | d 9} n  |  j  j | ƒ } | d k r† d S| j | | | f ƒ | f S(   sC   See also: cctbx::geometry_restraints::dihedral_proxy::sort_i_seqs()i   iÿÿÿÿN(   NN(   R+   RZ   R   (   R   RC   R[   R\   R]   t   i3t
   angle_signRa   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR^   	  s    (   R   R   R"   RX   RQ   R^   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR_   Ú   s   	t   chirality_proxy_registryc           B   s)   e  Z d  „  Z d d „ Z d d „ Z RS(   c         C   s    t  j |  d t ƒ  d | ƒd  S(   NR%   R&   (   R$   R"   t   shared_chirality_proxy(   R   R&   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"     s    	g�íµ ÷Æ°>c         C   s•   | j  ƒ  } |  j j | j d i  ƒ } | j d | j d | j d f } | j | ƒ s‘ |  j j ƒ  | | <|  j j | ƒ |  j j d ƒ n  t	 S(   Ni    i   i   i   (
   RK   R+   RU   RC   RB   R%   RL   R2   R)   R7   (   R   R3   RO   Ra   Rb   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRX     s    $c      	   C   s6  t  ƒ  } | j ƒ  } |  j j | j d i  ƒ } | j d | j d | j d f } | j | ƒ s– |  j j ƒ  | | <|  j d | d | d | ƒ nœ | | } |  j | | _	 t
 | j	 j | j ƒ | k sî t
 | j	 j | j ƒ | k r|  j d | d | d | d | ƒ n  | j s2|  j | c d 7<n  | S(	   Ni    i   i   i   R8   R3   R9   R;   (   R   RK   R+   RU   RC   RB   R%   RL   R:   R   RM   t   volume_idealR   R<   R    R)   (   R   R8   R3   RO   RP   Ra   Rb   R;   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRQ   *  s0    	$	

			
	(   R   R   R"   RX   RQ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRe     s   	t   planarity_proxy_registryc           B   s)   e  Z d  „  Z d d „ Z d d „ Z RS(   c         C   s    t  j |  d t ƒ  d | ƒd  S(   NR%   R&   (   R$   R"   t   shared_planarity_proxy(   R   R&   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"   G  s    	g�íµ ÷Æ°>c         C   sŸ   | j  j ƒ  d k s t ‚ | j ƒ  } |  j j | j  d i  ƒ } t | j  d ƒ } | j | ƒ s› |  j j ƒ  | | <|  j j	 | ƒ |  j
 j	 d ƒ n  t S(   Ni   i    i   (   RC   RL   R1   RK   R+   RU   t   tupleRB   R%   R2   R)   R7   (   R   R3   RO   Ra   t   i_seqs_1_up(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRX   L  s    c      	   C   s   | j  j ƒ  d k s t ‚ t ƒ  } | j ƒ  } |  j j | j  d i  ƒ } t | j  d ƒ } | j | ƒ s  |  j	 j ƒ  | | <|  j
 d | d | d | ƒ n| | | } |  j	 | | _ t | j j | j d | ƒsý |  j d | d | d | d | ƒ n  | j s|  j | c d 7<n  | S(   Ni    i   R8   R3   R9   t   epsR;   (   RC   RL   R1   R   RK   R+   RU   Rj   RB   R%   R:   R   R   t   weightsR<   R    R)   (   R   R8   R3   RO   RP   Ra   Rk   R;   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRQ   X  s.    		

		
	(   R   R   R"   RX   RQ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRh   E  s   	t   parallelity_proxy_registryc           B   s)   e  Z d  „  Z d d „ Z d d „ Z RS(   c         C   s    t  j |  d t ƒ  d | ƒd  S(   NR%   R&   (   R$   R"   t   shared_parallelity_proxy(   R   R&   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"   s  s    	g�íµ ÷Æ°>c         C   sê   | j  j ƒ  d k s t ‚ | j j ƒ  d k s6 t ‚ | j ƒ  } t | j  ƒ } t | j ƒ } |  j j | | f d ƒ d k  râ |  j j | | f d ƒ d k  râ |  j j ƒ  |  j | | f <|  j j	 | ƒ |  j
 j	 d ƒ t St Sd  S(   Ni   iÿÿÿÿi    i   (   RC   RL   R1   RF   t   sort_ij_seqsRj   R+   RZ   R%   R2   R)   R7   (   R   R3   RO   t
   tab_i_seqst
   tab_j_seqs(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRX   x  s    !!c      	   C   s•  | j  j ƒ  d k s t ‚ | j j ƒ  d k s6 t ‚ t ƒ  } | j ƒ  } t | j  ƒ } t | j ƒ } |  j j | | f d ƒ d k  ræ |  j j | | f d ƒ d k  ræ |  j	 j ƒ  |  j | | f <|  j
 d | d | d | ƒ n« t |  j j | | f d ƒ |  j j | | f d ƒ ƒ } |  j	 | | _ t | j j | j d | ƒsr|  j d | d | d | d | ƒ n  | j s‘|  j | c d	 7<n  | S(
   Ni   iÿÿÿÿi    R8   R3   R9   Rl   R;   i   (   RC   RL   R1   RF   R   Rp   Rj   R+   RZ   R%   R:   R   R   R   R   R<   R    R)   (   R   R8   R3   RO   RP   Rq   Rr   R;   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRQ   ‰  s4    	!!	
		
	(   R   R   R"   RX   RQ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRn   r  s   	c           B   s   e  Z d d d d d  „ Z RS(   c      	   C   s   | d  k r |  j } n  | d  k r0 |  j } n  | d  k rH |  j } n  | d  k r` |  j } n  t d | d | d | d | ƒ S(   Nt   c_rept   k_rept   irexpt   rexp(   R   Rs   Rt   Ru   Rv   t   prolsq_repulsion_function(   t   ORs   Rt   Ru   Rv   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   customized_copy¬  s        N(   R   R   R   Ry   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   ª  s   t    c
         C   sý  | d  k rE |  j d | d | d | d | d | d |	 ƒ \ }
 } n< |  j d | d | d | d | d | d | d |	 ƒ \ }
 } |
 d  k r‘ d  S| d  k	 r¾ | d | t |
 ƒ | f IJn  | d  k rÖ t j } n  | d	 | | f IJxë |
 D]ã } | \
 } } } } } } } } } } d
 } x+ | D]# } | d | | | f IJd } q(W| d k rjd } d } n d } d | } | d | | | f IJ| d | | | | | | | | f I| d  k	 rÐ| | In  | Jqñ W| d k rù| | d | IJn  d  S(   Nt   by_valuet
   sites_cartt   site_labelst	   max_itemst   excludet   exclude_output_onlyt	   unit_cells   %sBond restraints: %ds   %sSorted by %s:t   bonds   %s%4s %sRz   i    s     slacks    %6.3fs6   %s  ideal  model%s  delta    sigma   weight residual%ss)   %s  %5.3f %6.3f%s %6.3f %6.2e %6.2e %6.2es   ... (remaining %d not shown)(   R   t
   get_sortedRT   t   syst   stdout(   R   R{   R|   R}   R�   t   ft   prefixR~   R   R€   t   sorted_tablet   n_not_shownt   restraint_infoR5   RN   t   distance_modelt   slackt   deltaR
   R   t   residualt   sym_op_jt   rt_mxt   st   labelt   lt   v(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   _bond_show_sorted_impl´  sX    
		! $
	
c           B   sP   e  Z d d d d e d  „ Z d d d d d d „ Z d d „ Z d d „ Z RS(   c         C   s†  | d  k s t ‚ | d k s$ t ‚ | d  k sN t | ƒ | j ƒ  k sN t ‚ |  j ƒ  d k rd d S| d  k	 r€ | d k r€ d S| d k r§ |  j d | d | ƒ } n6 | d k r× t j |  j d | d | ƒ ƒ } n t ‚ t j d | d t	 ƒ }	 | d  k	 r|	 |  }	 n  d  }
 g  } xI|	 D]A} |  | } | j
 \ } } | j } | d  k r^d } n d	 } | d  k rˆt d | d
 | ƒ } n t | d | d
 | ƒ} g  } xF | | g D]8 } | d  k rÔt | ƒ } n
 | | } | j | ƒ q³W| j | | j | j | j | j t d | j ƒ | j | j ƒ  | | f
 ƒ |
 d  k sV|
 | j k r!| j }
 q!q!W| j ƒ  |	 j ƒ  } | | f S(   NRŽ   R�   i    R|   R�   t   datat   reverseRz   s    sym.op.R3   R   (   s   residuals   delta(   NN(   NN(   R   R1   RT   RL   t	   residualsR   RM   t   deltast   sort_permutationR7   RC   t   rt_mx_jiR‚   t   strR2   RN   R‹   RŒ   R�   R	   R   RŽ   (   R   R{   R|   R}   R�   R~   R   R€   t   data_to_sortt   i_proxies_sortedt   smallest_distance_modelRˆ   t   i_proxyR3   R   R   R�   R�   t	   restraintR5   RA   R“   R‰   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ   ï  sb    *  
	 		 
Rz   c         C   sg   | d  k r t j } n  | d | |  j ƒ  f IJt |  | d | d | d | d | d | d | ƒd  S(   Ns   %sBond restraints: %dR|   R}   R�   R†   R‡   R~   (   R   R„   R…   RL   R•   (   R   R{   R|   R}   R�   R†   R‡   R~   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   show_sorted'  s     c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   bond_deltas(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR™   9  s    c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   bond_residuals(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   @  s    N(   R   R   R   R#   Rƒ   R¢   R™   R˜   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   í  s   4c        	   B   s�   e  Z d  d d  d d d d e d „ Z d „  Z d „  Z d  d d d e d „ Z d d d e d „ Z d d	 „ Z	 d d d d d e d
 „ Z
 RS(   i   g      à?i   Rz   c
      	   C   sÌ  |  j  ƒ  d k r d  S| d  k r. t j } n  | d | IJd  }
 | d  k rf t d | d |  ƒ }
 nG |  j d d d | d | d |	 ƒ \ } } g  | D] } | d	 ^ q— }
 t j d
 t j |
 ƒ d | ƒ } | j	 ƒ  } x^ t
 | j ƒ  ƒ D]J \ } } | j	 ƒ  | j ƒ  | d } | d | | | | f IJ| } qí W| d  k	 rj| j	 ƒ  | k  rj| d | IJn  | d  k	 r™| j ƒ  | k r™| d | IJn/ | d  k	 rÈ| j ƒ  | k rÈ| d | IJn  | S(   Ni    s   %sHistogram of bond lengths:R|   t   sorted_asu_proxiesR{   R�   R   R€   i   R–   t   n_slotsi   s   %s  %8.2f - %8.2f: %ds#   %sWarning: very small bond lengths.s(   %sWarning: extremely large bond lengths.s#   %sWarning: very large bond lengths.(   t   n_totalR   R„   R…   t   bond_distances_modelRƒ   R   t	   histogramt   doublet   data_mint	   enumeratet   slotst
   slot_widtht   data_max(   R   R|   R¦   t   cutoff_warn_smallt   cutoff_warn_larget   cutoff_warn_extremeR†   R‡   R   R€   t   hdataRˆ   R‰   t   xR©   t
   low_cutoffRA   t   nt   high_cutoff(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt!   show_histogram_of_model_distancesJ  sF    
  			
c         C   s   t  d | d |  ƒ S(   NR|   R¥   (   R£   (   R   R|   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR™   x  s    c         C   s   t  d | d |  ƒ S(   NR|   R¥   (   R¤   (   R   R|   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   {  s    c      	   C   sO  | s t  d ƒ ‚ |  j ƒ  d k r) d  S| d  k rA t j } n  | d | IJd  } | d  k rv |  j d | ƒ } nG |  j d d d | d | d | ƒ \ } }	 g  | D] }
 |
 d	 ^ q§ } t j d
 t j	 | ƒ d | ƒ } | j
 ƒ  } x^ t | j ƒ  ƒ D]J \ } } | j
 ƒ  | j ƒ  | d } | d | | | | f IJ| } qý W| S(   Ns   Not implementedi    s   %sHistogram of bond deltas:R|   R{   R�   R   R€   i   R–   R¦   i   s   %s  %8.3f - %8.3f: %d(   R1   R§   R   R„   R…   R™   Rƒ   R   R©   RM   R«   R¬   R­   R®   (   R   R|   R¦   R†   R‡   R   R€   R³   Rˆ   R‰   R´   R©   Rµ   RA   R¶   R·   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   show_histogram_of_deltas~  s2      			
c         C   sb  | d k s t  ‚ | d  k s< t | ƒ | j ƒ  k s< t  ‚ |  j ƒ  d k rR d S| d  k	 rn | d k rn d S| d k r� |  j d | ƒ } n0 | d k r¹ t j |  j d | ƒ ƒ } n t  ‚ t j	 d | d t
 ƒ } | d  k rò t | ƒ } n  |  j j ƒ  d k rd  }	 n |  j ƒ  }	 d  }
 |  j j ƒ  } g  } | d  k rLg  } n  d } d } t | ƒ } d } xÝ| | k  rI| | k  rI| | } | | k  rÛ|  j | } | j \ } } d  } d } t d | d | ƒ } nW |  j | | } | j | j } } |	 j d	 | ƒ } d
 } t d | d |	 d | ƒ } g  } xF | | g D]8 } | d  k rft | ƒ } n
 | | } | j | ƒ qEW| | f | k rš| s²| | f | k r| r| j | | j | j | j | j t d | j ƒ | j | j ƒ  | | f
 ƒ | d 7} n
 | d 7} |
 d  k s0|
 | j k r<| j }
 n  | d 7} qmW| | | } | | f S(   NRŽ   R�   i    R|   R–   R—   Rz   R3   t   pairs    sym.op.t   asu_mappingsR   i   (   s   residuals   delta(   NN(   NN(   R1   R   RT   RL   R§   R˜   R   RM   R™   Rš   R7   t   asuR»   t   simpleRC   R‚   R   R   t   get_rt_mx_jiRœ   R2   RN   R‹   RŒ   R�   R	   R   RŽ   (   R   R{   R|   R}   R~   R   R€   R�   Rž   R»   RŸ   t   n_simpleRˆ   R¶   t   n_outputtedt	   n_proxiest
   n_excludedR    R3   R   R   R�   R�   R¡   R5   RA   R“   R‰   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ   ž  s‚    *  		
	 

c         C   sª  |  j  ƒ  } | d k r d  S|  j j ƒ  d k r: d  } n |  j ƒ  } | d  k rb |  j d | ƒ St j ƒ  } |  j j ƒ  } xv t	 | ƒ D]h } |  j | } | j
 \ }	 }
 |	 |
 f | k rŠ d  } d } t d | d | ƒ } | j | j ƒ qŠ qŠ Wx“ t	 | | ƒ D]‚ } |  j | | } | j | j }	 }
 |	 |
 f | k r| j d | ƒ } d } t d | d | d | ƒ } | j | j ƒ qqWt | ƒ d k r¢| Sd  Sd  S(   Ni    R|   Rz   R3   Rº   s    sym.op.R»   (   R§   R   R¼   RL   R»   R™   R   Rª   R½   t   rangeRC   R‚   R2   R�   R   R   R¾   RT   (   R   R|   R   RÁ   R»   RP   R¿   RA   R3   R   R   R�   R�   R¡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   get_filtered_deltasé  s@     			c	   	      C   s|   | d  k r t j } n  | d  k rA | d | |  j ƒ  f IJn  t |  | d | d | d | d | d | d | d | ƒd  S(	   Ns   %sBond restraints: %dR|   R}   R†   R‡   R~   R   R€   (   R   R„   R…   R§   R•   (	   R   R{   R|   R}   R†   R‡   R~   R   R€   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢     s    	 N(   R   R   R   R#   R¸   R™   R˜   R¹   Rƒ   RÄ   R¢   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   H  s4   %		G'c           B   sq   e  Z d  „  Z d d d d d „ Z d d d „ Z d d d „ Z d d e d „ Z d d d d d d	 d
 „ Z	 RS(   c         C   s   t  d | d |  ƒ S(   NR|   R¥   (   t   nonbonded_deltas(   R   R|   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR™   &  s    i   g      ð?Rz   c         C   s   |  j  ƒ  d k r d  S| d  k r. t j } n  | d | IJt j d |  j d | ƒ d | ƒ } | j ƒ  } x^ t | j	 ƒ  ƒ D]J \ } }	 | j ƒ  | j
 ƒ  | d }
 | d | | |
 |	 f IJ|
 } q W| d  k	 rü | j ƒ  | k  rü | d | IJn  | S(	   Ni    s/   %sHistogram of nonbonded interaction distances:R–   R|   R¦   i   s   %s  %8.2f - %8.2f: %ds6   %sWarning: very small nonbonded interaction distances.(   R§   R   R„   R…   R   R©   R™   R«   R¬   R­   R®   (   R   R|   R¦   R°   R†   R‡   R©   Rµ   RA   R¶   R·   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¸   )  s&      		

c         C   sˆ   | d k s t  ‚ t d | d |  ƒ } | j ƒ  d k r= d  S| d  k	 rY | d k rY d  St j d | ƒ } | d  k	 r„ | |  } n  | S(   NR�   R|   R¥   i    R–   (   s   delta(   R1   RÅ   RL   R   R   Rš   (   R   R{   R|   R}   R~   R™   Rž   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   get_sorted_i_proxiesA  s      c      	   C   sÄ   | d k s t  ‚ |  j d | d | d | d | ƒ } |  j j ƒ  d k rT d  } n |  j ƒ  } |  j j ƒ  } g  } xH | D]@ }	 |	 | k  rž |  j |	 }
 n |  j |	 | }
 | j |
 ƒ q| W| S(   NR�   R{   R|   R}   R~   i    (   s   delta(   R1   RÆ   R¼   RL   R   R»   R½   R2   (   R   R{   R|   R}   R~   Rž   R»   R¿   t   sorted_proxiesR    R3   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   get_sorted_proxiesP  s     		c      
   C   s(  | d	 k s t  ‚ t d | d |  ƒ } | j ƒ  d k r= d  S| d  k	 rY | d k rY d  St j d | ƒ } | d  k	 r„ | |  } n  |  j j ƒ  d k r¢ d  } n |  j ƒ  } |  j j ƒ  }	 g  }
 xB| D]:} | |	 k  r|  j | } | j	 \ } } d  } d } n< |  j | |	 } | j
 | j } } | j d | ƒ } d } g  } xF | | g D]8 } | d  k rwt | ƒ } n
 | | } | j | ƒ qVW| | | j } } | rÛ|
 j | | | | | | j | | | f ƒ qÊ |
 j | | | | | | j | | f ƒ qÊ W| j ƒ  | j ƒ  } |
 | f S(
   NR�   R|   R¥   i    R–   Rz   Rº   s    sym.op.(   s   delta(   R1   RÅ   RL   R   R   Rš   R¼   R»   R½   RC   R   R   R¾   Rœ   R2   t   vdw_distance(   R   R{   R|   R}   R~   t   include_proxyR™   Rž   R»   R¿   Rˆ   R    R3   R   R   R�   R�   R5   RA   R“   t   mR”   R‰   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ   j  sf      		 
gš™™™™™É?g      @c	            s”  | d k s t  ‚ | d  k r* t j } n  t d | d |  ƒ ‰ | d | ˆ j ƒ  f IJˆ j ƒ  d k ro d  S| d  k	 r‹ | d k r‹ d  St j d ˆ ƒ }	 | d  k	 r¶ |	 |  }	 n  |  j j ƒ  d k rÔ d  }
 n |  j	 ƒ  }
 | d | IJ|  j
 j ƒ  } xY|	 D]Q‰ ˆ | k  rA|  j
 ˆ ‰ ˆ j \ } } d  } d } n< |  j ˆ | ‰ ˆ j ˆ j } } |
 j d	 ˆ ƒ } d
 } ‡  ‡ ‡ ‡ ‡ f d †  } | ƒ  r§qn  d } xV | | g D]H } | d  k rÛt | ƒ } n
 | | } | d | | | f IJd } qºW| d | | f IJ| d | ˆ ˆ ˆ j f I| d  k	 rQ| | In  | JqWˆ j ƒ  |	 j ƒ  } | d k r�| | d | IJn  d  S(   NR�   R|   R¥   s   %sNonbonded interactions: %di    R–   s   %sSorted by model distance:Rz   Rº   s    sym.op.c             s\   ˆ ˆ ˆ j  }  } ˆ d  k r$ t S|  | ˆ k r8 t Sˆ  d  k rH t S|  ˆ  k rX t St S(   N(   RÉ   R   R#   R7   (   RË   R”   (   t   but_show_all_model_up_toR™   R    R3   t%   suppress_model_minus_vdw_greater_than(    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   suppressÊ  s        t	   nonbondeds   %s%9s %ss   %s   model   vdw%ss   %s  %6.3f %5.3fs   ... (remaining %d not shown)(   s   delta(   R1   R   R„   R…   RÅ   RL   R   Rš   R¼   R»   R½   RC   R   R   R¾   Rœ   RÉ   (   R   R{   R|   R}   R†   R‡   R~   RÍ   RÌ   Rž   R»   R¿   R   R   R�   R�   RÎ   R‘   RA   R“   R‰   (    (   RÌ   R™   R    R3   RÍ   sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢   §  s\    	   			  

N(
   R   R   R™   R   R¸   RÆ   RÈ   R#   Rƒ   R¢   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   $  s$   	;c           B   s   e  Z d  „  Z d „  Z RS(   c      
   C   sS   | d | IJ| d | |  j  |  j |  j t d |  j ƒ |  j |  j ƒ  f IJd  S(   Ns6   %s    ideal   model   delta    sigma   weight residuals'   %s  %7.2f %7.2f %7.2f %6.2e %6.2e %6.2eR   (   RY   t   angle_modelR�   R	   R   RŽ   (   Rx   R†   R‡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   _show_sorted_itemä  s    c         C   s4   |  j  |  j |  j t d |  j ƒ |  j |  j ƒ  g S(   NR   (   RY   RÐ   R�   R	   R   RŽ   (   Rx   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   _get_sorted_itemì  s    (   R   R   RÑ   RÒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   â  s   	c           B   s_   e  Z d d  „ Z d d „ Z d d d d d „ Z d d d d d d „ Z d d d d „ Z RS(   c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   angle_deltas(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR™   ò  s    c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   angle_residuals(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   ù  s    i   Rz   c         C   s7   t  d |  d d d d d | d | d | d	 | d
 | ƒ S(   NRx   t   proxy_labels
   bond anglet   format_cutoffss   %8.2fR�   R|   R¦   R†   R‡   (   t   _show_histogram_of_deltas_impl(   R   R|   R�   R¦   R†   R‡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¹      s
    c         C   sM   t  d |  d t d d d d d | d | d	 | d
 | d | d | d | ƒ d  S(   NRx   t
   proxy_typeRÕ   s
   Bond anglet
   item_labelt   angleR{   R�   R|   R}   R†   R‡   R~   (   t   _show_sorted_implRÚ   (   R   R{   R|   R}   R�   R†   R‡   R~   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢     s    c         C   s7   t  d |  d t d | d | d | d | d | d t ƒ S(	   NRx   RØ   R{   R�   R|   R}   R~   t   get_restraints_only(   t   _get_sorted_implRÚ   R#   (   R   R{   R|   R}   R�   R~   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ     s
    N(   R   R   R   R™   R˜   R¹   R¢   Rƒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   ð  s   	
c           B   s   e  Z d  „  Z d „  Z RS(   c         C   sz   | d | i d t  6d t 6|  j d k f IJ| d | |  j |  j |  j |  j t d |  j ƒ |  j |  j ƒ  f IJd  S(   NsA   %s    ideal   model   delta %        s    sigma   weight residualt
   sinusoidals
    harmonic i    s0   %s  %7.2f %7.2f %7.2f %5d      %6.2e %6.2e %6.2eR   (	   R#   R7   R   RY   RÐ   R�   R	   R   RŽ   (   Rx   R†   R‡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÑ   )  s    (c         C   s:   |  j  |  j |  j |  j t d |  j ƒ |  j |  j ƒ  g S(   NR   (   RY   RÐ   R�   R   R	   R   RŽ   (   Rx   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÒ   2  s    (   R   R   RÑ   RÒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   '  s   		c        	   B   sh   e  Z d d  „ Z d d „ Z d d d d d „ Z d d d d d e e e d „ Z d d d d „ Z RS(   c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   dihedral_deltas(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR™   8  s    c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   dihedral_residuals(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   ?  s    i   Rz   c         C   s7   t  d |  d d d d d | d | d | d	 | d
 | ƒ S(   NRx   RÕ   s   dihedral angleRÖ   s   %8.2fR�   R|   R¦   R†   R‡   (   R×   (   R   R|   R�   R¦   R†   R‡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¹   F  s
    c         C   sª   | r$ |	 r t  d ƒ ‚ q] d } n9 |	 rH | r? t  d ƒ ‚ q] d } n |
 rW d } n d } t d |  d t d | d	 d
 d | d | d | d | d | d | d | ƒ d  S(   Ns%   torsion restraint assignment conflicts   Reference torsion angles   NCS torsion angles   C-Beta improper torsion angles   Dihedral angleRx   RØ   RÕ   RÙ   t   dihedralR{   R�   R|   R}   R†   R‡   R~   (   R   RÛ   Rá   (   R   R{   R|   R}   R�   R†   R‡   R~   t   is_referencet   is_ncst	   is_c_betaRÕ   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢   R  s"    			c         C   s7   t  d |  d t d | d | d | d | d | d t ƒ S(	   NRx   RØ   R{   R�   R|   R}   R~   RÜ   (   RÝ   Rá   R#   (   R   R{   R|   R}   R�   R~   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ   r  s
    N(	   R   R   R   R™   R˜   R¹   R#   R¢   Rƒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   6  s"   	
c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s_   | d | IJ| d | t  |  j ƒ |  j |  j |  j t d |  j ƒ |  j |  j ƒ  f IJd  S(   Ns@   %s  both_signs  ideal   model   delta    sigma   weight residuals0   %s    %-5s   %7.2f %7.2f %7.2f %6.2e %6.2e %6.2eR   (   Rœ   t
   both_signsRg   t   volume_modelR�   R	   R   RŽ   (   Rx   R†   R‡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÑ   €  s    c         C   s@   t  |  j ƒ |  j |  j |  j t d |  j ƒ |  j |  j ƒ  g S(   NR   (   Rœ   Rå   Rg   Ræ   R�   R	   R   RŽ   (   Rx   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÒ   ˆ  s    (   R   R   RÑ   RÒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   ~  s   	c           B   sP   e  Z d  „  Z d „  Z d d d d „ Z d d d d d „ Z d d d „ Z RS(   c         C   s   t  d | d |  ƒ S(   NR|   R%   (   t   chirality_deltas(   R   R|   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR™   Ž  s    c         C   s   t  d | d |  ƒ S(   NR|   R%   (   t   chirality_residuals(   R   R|   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   ‘  s    i   Rz   c         C   s7   t  d |  d d d d d d  d | d | d	 | d
 | ƒ S(   NRx   RÕ   s   chiral volumeRÖ   s   %8.3fR�   R|   R¦   R†   R‡   (   R×   R   (   R   R|   R¦   R†   R‡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¹   ”  s
    c         C   sM   t  d |  d t d d d d d | d d  d	 | d
 | d | d | d | ƒ d  S(   NRx   RØ   RÕ   t	   ChiralityRÙ   t	   chiralityR{   R�   R|   R}   R†   R‡   R~   (   RÛ   Rê   R   (   R   R{   R|   R}   R†   R‡   R~   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢   Ÿ  s    c         C   s7   t  d |  d t d | d d  d | d | d | d t ƒ S(	   NRx   RØ   R{   R�   R|   R}   R~   RÜ   (   RÝ   Rê   R   R#   (   R   R{   R|   R}   R~   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ   ­  s
    N(   R   R   R™   R˜   R   R¹   R¢   Rƒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   Œ  s   		
c           B   sJ   e  Z d d  „ Z d d „ Z d d d d „ Z d d d d d d „ Z RS(   c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   planarity_deltas_rms(   Rx   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt
   deltas_rmsº  s    c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   planarity_residuals(   Rx   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   Á  s    c         C   sÖ  | d k s t  ‚ | d  k s< t | ƒ | j ƒ  k s< t  ‚ |  j ƒ  d k rR d S| d  k	 rn | d k rn d S| d k r¶ | d  k r› |  j d | ƒ } q|  j d | d | ƒ } nN | d k rþ | d  k rã |  j d | ƒ } q|  j d | d | ƒ } n t  ‚ t j d | d t ƒ } | d  k	 r5| |  } n  g  } xx| D]p}	 |  |	 }
 g  } xC |
 j	 D]8 } | d  k rƒt
 | ƒ } n
 | | } | j | ƒ qbW| d  k rÂt d | d |
 ƒ } n t d | d | d |
 ƒ } g  } xª t t |
 j	 |
 j | j ƒ  | ƒ ƒ D]� \ } \ } } } } d	 } |
 j rg|
 j | } | j ƒ  sgd
 t | j ƒ  f } qgn  | j | | t d | ƒ | | f ƒ qW| j | | j ƒ  | j ƒ  f ƒ qBW|  j ƒ  | j ƒ  } | | f S(   NRŽ   t
   rms_deltasi    R|   R�   R–   R—   R3   Rz   s   %s %sR   (   s   residuals
   rms_deltas(   NN(   NN(   R1   R   RT   RL   R˜   Rì   R   Rš   R7   RC   Rœ   R2   t	   planarityR¬   t   zipRm   R™   t   sym_opst
   is_unit_mxt
   rdr_spacert   as_xyzR	   Rî   RŽ   (   Rx   R{   R|   R}   R�   R~   R�   Rž   Rˆ   R    R3   R5   R   R“   R¡   t   restraint_atomsRA   R   R�   t   sym_opR�   R‰   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ   È  sZ    *  
 
	+	Rz   c         C   s¶  | d k s t  ‚ | d  k s< t | ƒ | j ƒ  k s< t  ‚ | d  k rT t j } n  | d | |  j ƒ  f IJ|  j ƒ  d k r„ d  S| d  k	 r  | d k r  d  S| d k rè | d  k rÍ |  j d | ƒ } q6|  j d | d | ƒ } nN | d k r0| d  k r|  j d | ƒ } q6|  j d | d | ƒ } n t  ‚ t j	 d | d t
 ƒ }	 | d  k	 rg|	 |  }	 n  | d	 | | f IJxý|	 D]õ}
 |  |
 } d } g  } xX | j D]M } | d  k rÉt | ƒ } n
 | | } t | t | ƒ ƒ } | j | ƒ q¨W| d  k r#t d | d
 | ƒ } d } n! t d | d | d
 | ƒ } d } | d | d | | f IJd } d  } x	t t | j | j | j ƒ  | ƒ ƒ D]à \ } \ } } } } | d  k rÜd | j ƒ  | j ƒ  f } d } n  d } | j r | j | } | j ƒ  s d | | j ƒ  f } q n  | d | | | d | t | ƒ | t d | ƒ | | | f IJd } d } d } q“Wq‚W|  j ƒ  |	 j ƒ  } | d k r²| | d | IJn  d  S(   NRŽ   Rî   s   %sPlanarity restraints: %di    R|   R�   R–   R—   s   %sSorted by %s:R3   Rz   s    sym.op.s;   %s      %s    delta    sigma   weight rms_deltas residual%st    t   planes      %6.2e %6.2es   %s %ss   %s%5s %s  %7.3f %6.2e %6.2e%s%sR   i   s   ... (remaining %d not shown)(   s   residuals
   rms_deltass                       (   R1   R   RT   RL   R„   R…   R˜   Rì   R   Rš   R7   RC   Rœ   R   R2   Rï   R¬   Rð   Rm   R™   Rî   RŽ   Rñ   Rò   Rô   R	   (   Rx   R{   R|   R}   R�   R†   R‡   R~   R�   Rž   R    R3   t   len_maxt   lsR   R“   R¡   t   sym_op_labelR‘   t   rdrRA   R   R�   Ró   Rö   R�   R‰   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢   þ  s~    *   
 
		+		N(   R   R   R   Rì   R˜   Rƒ   R¢   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   ¸  s   
4c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   d s t  ‚ | d | IJd  S(   Ni    s6   %s    ideal   model   delta    sigma   weight residual(   R1   (   Rx   R†   R‡   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÑ   H  s    c         C   s   |  j  ƒ  |  j |  j g S(   N(   RŽ   R   R�   (   R   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÒ   M  s    (   R   R   RÑ   RÒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   F  s   	c           B   sD   e  Z d d  „ Z d d „ Z d d d d d „ Z d d d „ Z RS(   c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   parallelity_deltas(   Rx   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR™   R  s    c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   parallelity_residuals(   Rx   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   Y  s    Rz   c      	   C   sä  | d  k r t j } n  |  j d | d | d | d | ƒ \ } } | d |  j ƒ  IJ|  j ƒ  d k rl d  S| d  k	 rˆ | d k rˆ d  S| d | | f IJx | D]}	 |	 d }
 |	 d	 } t j t j d | ƒ ƒ } |	 d
 } | d d IJd |
 | | f } |	 d d } |	 d d } d } t t	 | ƒ t	 | ƒ ƒ } xs | | k  r¶| d | t	 | ƒ k  rs| | n d d | t	 | ƒ k  r–| | n d | f IJd } | d 7} qDW| Jq£ W| d k rà| | d | IJn  d  S(   NR{   R|   R}   R~   s   Parallelity restraints: %di    s   %sSorted by %s:i   i   i   s$       plane 1                plane 2  s(                 residual  delta(deg) sigmas     %.2e %8.4f  %8.4fs       %s  %s%sR÷   i   Rz   s   ... (remaining %d not shown)(
   R   R„   R…   Rƒ   RL   R   t   degreest   acosR   RT   (   R   R{   R|   R}   R†   R‡   R~   Rˆ   R‰   t   infoRŽ   R�   t	   delta_degR   t   r_infot   i_labelst   j_labelsRA   t   long_len(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢   `  sF     	  


#
c         C   s7   t  d |  d t d | d d  d | d | d | d t ƒ S(	   NRx   RØ   R{   R�   R|   R}   R~   RÜ   (   RÝ   t   parallelityR   R#   (   R   R{   R|   R}   R~   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRƒ   ˆ  s
    N(   R   R   R   R™   R˜   R¢   Rƒ   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   P  s   
%c           B   s8   e  Z d d  „ Z d d „ Z d d d d d d „ Z RS(   c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   bond_similarity_deltas_rms(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRì   •  s    c         C   s<   | d  k r t d | d |  ƒ St d | d | d |  ƒ Sd  S(   NR|   R%   R�   (   R   t   bond_similarity_residuals(   R   R|   R�   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR˜   œ  s    Rz   c         C   sä  | d k s t  ‚ | d  k s< t | ƒ | j ƒ  k s< t  ‚ | d  k rT t j } n  | d | |  j ƒ  f IJ|  j ƒ  d k r„ d  S| d  k	 r  | d k r  d  S| d k rè | d  k rÍ |  j d | ƒ } q6|  j d | d | ƒ } nN | d k r0| d  k r|  j d | ƒ } q6|  j d | d | ƒ } n t  ‚ t j	 d | d t
 ƒ }	 | d  k	 rg|	 |  }	 n  | d	 | | f IJx+|	 D]#}
 |  |
 } d } g  } x† | j D]{ } | d  k rád
 t | d ƒ t | d ƒ f } n  d
 | | d | | d f } t | t | ƒ ƒ } | j | ƒ q¨W| d  k rQt d | d | ƒ } d } n! t d | d | d | ƒ } d } | d | d | | f IJd } d  } x	t t | j | j | j ƒ  | ƒ ƒ D]à \ } \ } } } } | d  k r
d | j ƒ  | j ƒ  f } d } n  d } | j rN| j | } | j ƒ  sNd | | j ƒ  f } qNn  | d | | | d | t | ƒ | t d | ƒ | | | f IJd } d } d } qÁWq‚W|  j ƒ  |	 j ƒ  } | d k rà| | d | IJn  d  S(   NRŽ   Rî   s    %sBond similarity restraints: %di    R|   R�   R–   R—   s   %sSorted by %s:s   %s-%si   R3   Rz   s    sym.op.s:   %s     %s    delta    sigma   weight rms_deltas residual%sR÷   R‚   s      %6.2e %6.2es   %s %ss   %s%4s %s  %7.3f %6.2e %6.2e%s%sR   i   s   ... (remaining %d not shown)(   s   residuals
   rms_deltass                       (   R1   R   RT   RL   R„   R…   R˜   Rì   R   Rš   R7   RC   Rœ   R   R2   t   bond_similarityR¬   Rð   Rm   R™   Rî   RŽ   Rñ   Rò   Rô   R	   (   Rx   R{   R|   R}   R�   R†   R‡   R~   R�   Rž   R    R3   Rù   Rú   Rº   R“   R¡   Rû   R‘   Rü   RA   R   R   R�   Ró   Rö   R�   R‰   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR¢   £  s~    *   
' 		+		N(   R   R   R   Rì   R˜   R¢   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   “  s   
c         C   s&  |  j  ƒ  d k r d  S| d  k r. t j } n  | d | | f IJ| d  k rl t j |  j d | ƒ ƒ } n! t j |  j d | d | ƒ ƒ } t j d | d | ƒ }	 d | | f }
 |	 j ƒ  } x^ t	 |	 j
 ƒ  ƒ D]J \ } } |	 j ƒ  |	 j ƒ  | d } | |
 | | | | f IJ| } qÔ W|	 S(	   Ni    s(   %sHistogram of %s deviations from ideal:R|   R�   R–   R¦   s   %%s  %s - %s: %%di   (   RL   R   R„   R…   R   RM   R™   R©   R«   R¬   R­   R®   (   Rx   RÕ   RÖ   R�   R|   R¦   R†   R‡   R–   R©   t   fmtRµ   RA   R¶   R·   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR×   í  s(      		
c         C   sR  | d
 k s t  ‚ | d  k s< t | ƒ | j ƒ  k s< t  ‚ |  j ƒ  d k rR d S| d  k	 rn | d k rn d S| d k r¶ | d  k r› |  j d | ƒ } q|  j d | d | ƒ } n` | d k r| d  k rì t j |  j d | ƒ ƒ } qt j |  j d | d | ƒ ƒ } n t  ‚ t j d | d t	 ƒ }	 | d  k	 rG|	 |  }	 n  g  }
 xâ|	 D]Ú} |  | } g  } g  } x‘ t
 | j ƒ D]€ \ } } | d  k r§t | ƒ } n
 | | } | ró| j ró| j | } | j ƒ  só| d | j ƒ  7} qón  | j | ƒ q€W| t k r³x‘ t
 | j ƒ D]€ \ } } | d  k rGt | ƒ } n
 | | } | r“| j r“| j | } | j ƒ  s“| d | j ƒ  7} q“n  | j | ƒ q W| | g } n  | d  k r×| d | d	 | ƒ } n | d | d | d	 | ƒ } | r|
 j | | f ƒ qT| j ƒ  } |
 j | g | ƒ qTW|  j ƒ  |	 j ƒ  } |
 | f S(   NRŽ   R�   i    R|   R�   R–   R—   s     %sR3   (   s   residuals   delta(   NN(   NN(   R1   R   RT   RL   R˜   R   RM   R™   Rš   R7   R¬   RC   Rœ   Rñ   Rò   Rô   R2   R  RF   RÒ   (   Rx   RØ   R{   R�   R|   R}   R~   RÜ   R�   Rž   Rˆ   R    R3   R5   t   labels_jR¶   R   R“   Rö   R¡   RŠ   R‰   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÝ   	  st    *  
 
 
	c         C   sœ  | d  k r t j } n  t |  d | d | d | d | d | d |
 d t ƒ\ } } | d |	 | |  j ƒ  f IJ|  j ƒ  d	 k r‡ d  S| t k rÖ |  j ƒ  } |  j ƒ  | } | |	 d
 | IJ| |	 d | IJn  |
 d  k	 rò |
 d	 k rò d  Sd t | ƒ } | d |	 | f IJx^ | D]V \ } } | } x+ | D]# } | d |	 | | f IJ| } q6W| j	 d | d |	 ƒ qW| d	 k r˜| |	 d | IJn  d  S(   NRØ   R{   R�   R|   R}   R~   RÜ   s   %s%s restraints: %di    s     sinusoidal: %ds       harmonic: %dR÷   s   %sSorted by %s:s   %s%s %sR†   R‡   s   ... (remaining %d not shown)(
   R   R„   R…   RÝ   R7   RL   Rá   t   count_harmonicRT   RÑ   (   Rx   RØ   RÕ   RÙ   R{   R�   R|   R}   R†   R‡   R~   Rˆ   R‰   t
   n_harmonict   n_sinusoidalt   item_label_blankR5   R¡   R‘   R“   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyRÛ   M  s<     	  
t   pair_proxiesc           B   s5   e  Z d d d d d d d d d d d d  d „ Z RS(   i   c         C   sŽ  d  |  _ d  |  _ | d  k	 r‹ | d  k s3 | j r‹ | d  k rT t d | ƒ |  _ q‹ t | ƒ d k sl t ‚ t d | d | d ƒ |  _ n  |	 d  k	 rŠ| d  k s¬ | j rŠ| d  k	 s¾ t ‚ | d  k	 sÐ t ‚ | d  k	 sâ t ‚ t | ƒ d k sú t ‚ |
 d  k r!t j	 |	 j
 ƒ  d ƒ }
 n  |	 j
 ƒ  |
 j
 ƒ  k s?t ‚ t d | d | d | d | d | d	 |	 d
 |
 d | d | d | ƒ 
|  _ n  d  S(   Nt   bond_params_tablei    t   bond_asu_tablet   model_indicest   conformer_indicest   sym_excl_indicest   donor_acceptor_excl_groupst   nonbonded_paramst   nonbonded_typest   nonbonded_chargest%   nonbonded_distance_cutoff_plus_buffert   min_cubicle_edget   shell_asu_tables(   R   t   bond_proxiest   nonbonded_proxiesR‚   t   bond_sorted_asu_proxiesRT   R1   RÏ   R   R.   RL   t   nonbonded_sorted_asu_proxies(   R   t   flagsR  R  R  R  R  R  R  R  R  R  R  (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR"   v  s>    		N(   R   R   R   R"   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR  t  s   c           B   sq   e  Z d d  d „ Z d d  d „ Z d d  d „ Z d d  d „ Z d d  d „ Z d d  d „ Z d d  d „ Z	 RS(	   Rz   c         C   sb  | d  k r t j } n  | | d IJ| | d t |  j ƒ IJ| | d t |  j ƒ IJx) |  j D] } | | d t | ƒ IJqf Wx) |  j D] } | | d t | ƒ IJq’ W|  j d | d | d ƒ |  j	 d | d | d ƒ |  j
 d | d | d ƒ |  j d | d | d ƒ |  j d | d | d ƒ |  j d | d | d ƒ | | d	 IJd  S(
   Ns   geometry_restraints.motif {s	     id = %ss     description = %ss     info = %ss     manipulation_id = %st   outR‡   s     t   }(   R   R„   R…   R   t   idt   descriptionR  t   manipulation_idst
   show_atomst
   show_bondst   show_anglest   show_dihedralst   show_chiralitiest   show_planarities(   R   R#  R‡   R  t   manipulation_id(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   show§  s"     
c      	   C   s€   |  j  ƒ  } t | ƒ d k r| | | d IJxM | D]B } | | d t | j ƒ t | j ƒ t | j ƒ | j f IJq3 Wn  d  S(   Ni    s;   atom = [name scattering_type nonbonded_type partial_charge]s   atom = %s %s %s %.6g(   t   atoms_as_listRT   R   t   namet   scattering_typet   nonbonded_typet   partial_charge(   R   R#  R‡   t   atomst   atom(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR(  ¹  s    
c         C   s�   |  j  ƒ  } t | ƒ d k r™ | | d IJxj | D]_ } | j } | | d t | d ƒ t | d ƒ t | j ƒ | j | j t | j ƒ f IJq3 Wn  d  S(   Ni    s2   bond = [atom_name*2 type distance_ideal weight id]s   bond = %s %s %s %.6g %.6g %si   (   t   bonds_as_listRT   t
   atom_namesR   t   typeRN   R   R%  (   R   R#  R‡   t   bondsR‚   R8  (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR)  Å  s    	
c         C   sž   |  j  ƒ  } t | ƒ d k rš | | d IJxk | D]` } | j } | | d t | d ƒ t | d ƒ t | d ƒ | j | j t | j ƒ f IJq3 Wn  d  S(   Ni    s+   angle = [atom_name*3 angle_ideal weight id]s   angle = %s %s %s %.6g %.6g %si   i   (   t   angles_as_listRT   R8  R   RY   R   R%  (   R   R#  R‡   t   anglesRÚ   R8  (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR*  Ô  s    	
c         C   s±   |  j  ƒ  } t | ƒ d k r­ | | d IJx~ | D]s } | j } | | d t | d ƒ t | d ƒ t | d ƒ t | d ƒ | j | j | j t | j ƒ f IJq3 Wn  d  S(   Ni    s:   dihedral = [atom_name*4 angle_ideal weight periodicity id]s&   dihedral = %s %s %s %s %.6g %.6g %d %si   i   i   (   t   dihedrals_as_listRT   R8  R   RY   R   R   R%  (   R   R#  R‡   t	   dihedralsRá   R8  (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR+  ã  s    	
c         C   sÒ   |  j  ƒ  } t | ƒ d k rÎ | | d IJxŸ | D]” } | j } | j rT d } n d } | | d t | d ƒ t | d ƒ t | d ƒ t | d ƒ t | j ƒ | | j | j t | j ƒ f	 IJq3 Wn  d  S(	   Ni    sG   chirality = [atom_name*4 volume_sign both_signs volume_ideal weight id]R7   R#   s*   chirality = %s %s %s %s %s %s %.6g %.6g %si   i   i   (	   t   chiralities_as_listRT   R8  Rå   R   t   volume_signRg   R   R%  (   R   R#  R‡   t   chiralitiesRê   R8  Rå   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR,  ô  s$    		 	
c         C   sã   |  j  ƒ  } t | ƒ d k rß x¾ | D]³ } | | d IJ| | d t | j ƒ IJ| j j ƒ  | j j ƒ  k sx t ‚ | | d IJxA t | j | j ƒ D]* \ } } | | d t | ƒ | f IJqœ W| | d IJq% Wn  d  S(   Ni    s   planarity {s	     id = %ss     atom = [name weight]s     atom = %s %.6gR$  (	   t   planarities_as_listRT   R   R%  Rm   RL   R8  R1   Rð   (   R   R#  R‡   t   planaritiesRï   t   ant   w(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR-    s    $""N(
   R   R   R   R/  R(  R)  R*  R+  R,  R-  (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   ¥  s   c           B   s   e  Z d d  d d „ Z RS(   Rz   c         C   sÓ  | d  k r t j } n  |  j } |  j } | d k rt |  j ƒ d k sQ t ‚ |  j } d } | d k râ | d | } | | k r“ | | IJn  | | d t	 |  j d ƒ t	 | j
 ƒ t	 | j ƒ t	 | j ƒ | j f IJqÏ| d k r©| d	 | d
 | } | | k r| | IJn  | | d t	 |  j d ƒ t	 |  j ƒ f IJ|  j ƒ  s`d }	 n d | j }	 | | d t	 | j
 ƒ t	 | j ƒ t	 | j ƒ |	 f IJqÏ| d k s»t ‚ | d } | | k rÞ| | IJn  | | d t	 |  j d ƒ t	 |  j ƒ f IJnÀ	| d k r�t |  j ƒ d k s6t ‚ |  j }
 d | } d | t	 |  j d ƒ t	 |
 j d ƒ t	 |  j d ƒ t	 |
 j d ƒ f } | d k rÞ| d | } | | k rÉ| | IJn  | | d | IJqÏ| d k r |  j ƒ  r d } n d |
 j } | d k r/|  j ƒ  r/d } n d |
 j } | d | } | | k rc| | IJn  | | d | | | t	 |
 j ƒ f IJnB| d k r+t |  j ƒ d k s´t ‚ |  j } d | } d | t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ f } | d k r|| d | } | | k rg| | IJn  | | d | IJqÏ| d k rž|  j ƒ  ržd } n d | j } | d k rÍ|  j ƒ  rÍd } n d | j } | d | } | | k r| | IJn  | | d | | | t	 | j ƒ f IJn¤| d k rt |  j ƒ d  k sRt ‚ |  j } d! | } d" | t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ f	 } | d k r:| d | } | | k r%| | IJn  | | d | IJqÏ| d k r\|  j ƒ  r\d } n d | j } | d k r‹|  j ƒ  r‹d } n d | j } | d k rº|  j ƒ  rºd } n d# | j } | d$ | } | | k rî| | IJn  | | d% | | | | t	 | j ƒ f IJn´| d& k r	t |  j ƒ d  k sBt ‚ |  j } d' | } d( | t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ t	 |  j d ƒ t	 | j d ƒ f	 } | d k r*| d | } | | k r| | IJn  | | d | IJqÏ| d k rL|  j ƒ  rLd } n d | j } | d k r{|  j ƒ  r{d } n d | j } | d) | | d* d+ t | ƒ d, } | | k rÉ| | IJn  | | d- | | d* d. t | ƒ t	 | j  ƒ | | t	 | j ƒ f IJn¼| d/ k r¿|  j! } | | d0 IJ| | d1 | IJ| | d2 t	 |  j" ƒ IJ| | d3 t	 | j ƒ IJ| d k r9
| | d4 IJ| j# j$ ƒ  | j j$ ƒ  k s¼	t ‚ |  j j$ ƒ  | j j$ ƒ  k sà	t ‚ xÅt% |  j | j | j# ƒ D]6 \ } } } | | d5 t	 | ƒ t	 | ƒ | f IJqü	Wno| d k r¨| j# j$ ƒ  | j j$ ƒ  k si
t ‚ |  j j$ ƒ  | j j$ ƒ  k s�
t ‚ |  j& ƒ  } t | ƒ | j j$ ƒ  k sº
t ‚ d  } xå t% | |  j | j | j# ƒ D]Â \ } } } } | d k rQ| d6 | } | | k r$| | IJn  | | d7 | t	 | ƒ t	 | ƒ | f IJnJ | d8 } | | k rt| | IJn  | | d9 | t	 | ƒ t	 | ƒ f IJ| } qß
Wn  | | d: IJd  } n t' d; | ƒ ‚ | S(<   NR6  i   s2   name scattering_type nonbonded_type partial_charget   adds   atom = add [motif_id %s]s   atom = add %s %s %s %s %si    t   changes*   atom = change [motif_id motif_atom_name \
s                  %s]s   atom = change %s %s \R   s   %.6gs                 %s %s %s %st   deletes(   atom = delete [motif_id motif_atom_name]s   atom = delete %s %sR‚   i   s!   bond = %s [(motif_id atom_name)*2s   bond = %s %s %s %s %ss   %s]s   %ss!   %s type distance_ideal weight id]s   %s %s %s %sRÚ   i   s"   angle = %s [(motif_id atom_name)*3s   angle = %s %s %s %s %s %s %ss   %s type angle_ideal weight id]Rá   i   s%   dihedral = %s [(motif_id atom_name)*4s%   dihedral = %s %s %s %s %s %s %s %s %ss   %ds%   %s angle_ideal weight periodicity id]s   %s %s %s %s %sRê   s&   chirality = %s [(motif_id atom_name)*4s&   chirality = %s %s %s %s %s %s %s %s %ss   %s \
R÷   i   s#   volume_sign volume_ideal weight id]s   %s \
%s%s%s %s %s %si   Rï   s   planarity {s     action = %ss     motif_id = %ss	     id = %ss     atom = [motif_id name weight]s     atom = %s %s %.6gs"     atom = %s [motif_id name weight]s     atom = %s %s %s %.6gs     atom = delete [motif_id name]s     atom = %s %s %sR$  s#   Internal Error: unknown operand: %s((   R   R„   R…   t   actiont   operandRT   t	   motif_idsR1   R6  R   R1  R2  R3  R4  t   motif_atom_namet   change_partial_chargeR‚   R8  t   change_distance_idealRN   t   change_weightR   R%  RÚ   t   change_angle_idealRY   Rá   t   change_periodicityR   Rê   t   change_volume_idealRg   R@  Rï   t   planarity_motif_idRm   RL   Rð   t   planarity_atom_actions_as_listt   RuntimeError(   R   R#  R‡   t   previous_helpRI  RJ  R6  t   attrt   helpR4  R‚   t	   help_leadt	   data_leadRN   R   RÚ   RY   Rá   R   Rê   Rg   Rï   t   miRD  RE  t   actionst   ac(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR/    s”    			 
 
	

 
	
 		 
 	
 		 
 	
 			 
	
 		( 
	$$
$$$!	 
#
 
	N(   R   R   R   R/  (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR     s   c           B   s   e  Z d d  d „ Z RS(   Rz   c         C   sÙ   | d  k r t j } n  | | d IJ| | d t |  j ƒ IJ| | d t |  j ƒ IJx) |  j D] } | | d t | ƒ IJqf Wd  } x6 |  j ƒ  D]( } | j d | d | d d | ƒ } q› W| | d	 IJd  S(
   Ns(   geometry_restraints.motif_manipulation {s	     id = %ss     description = %ss     info = %sR#  R‡   s     RV  R$  (	   R   R„   R…   R   R%  R&  R  t   alterations_as_listR/  (   R   R#  R‡   R  RV  t
   alteration(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR/  ê  s     	N(   R   R   R   R/  (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyR   è  s   (H   t
   __future__R    t   cctbx.crystal.direct_space_asut   cctbxt   cctbx.array_familyR   t   scitbx.array_family.sharedt   scitbxt   cctbx.geometryt   libtbx.test_utilsR   t   libtbx.str_utilsR   t   libtbx.utilsR   t   boost.pythont   boostt   pythont
   import_extt   extR   t   scitbx.stl.mapt   stdlibR   R„   t   stlt   mapt   stl_string_doublet   nonbonded_radius_tablet$   stl_string_stl_map_stl_string_doublet   nonbonded_distance_tablet   nonbonded_distance_dictR	   R   R   t   injectorR  R   t   objectR   R$   R=   RR   R_   Re   Rh   Rn   Rw   R   R#   R•   R>   R   R!  RÚ   RS   Rá   R`   Rê   Rf   Ri   R  Ro   t   shared_bond_similarity_proxyR×   R7   RÝ   RÛ   R  t   motift   motif_alterationt   motif_manipulation(    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/__init__.pyt   <module>   sp   
		447>--80[Ü¾7H,Ž
CZ	#=	'1"o"Ô