ó
+™xTc           @   s”  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d  d	 l m Z m Z m Z m Z d  d
 l m Z d  d l m Z d  d l Z d  d l Z e d d „ Z d „  Z d „  Z d e f d „  ƒ  YZ d d „ Z d d „ Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( e) d  k r�e( ƒ  n  d S(!   iÿÿÿÿ(   t   division(   t   flex(   t   geometry_restraints(   t   crystal(   t   sgtbx(   t   uctbx(   t   direct_space_asu(   t   matrix(   t   approx_equalt   not_approx_equalt   eps_eqt	   show_diff(   t   null_out(   t   StringIONg:Œ0âŽyE>c         C   s  d „  } g  } xï t  t | ƒ ƒ D]Û } g  } x¿ t  d ƒ D]± }	 d d d g }
 | |
 |	 <t j |
 ƒ }
 t j | | ƒ |
 | | <| |  | | | ƒ } t j | | ƒ d |
 | | <| |  | | | ƒ } | | d } | j | | ƒ q; W| j | ƒ q" W| S(   Nc         S   sH   | d  k r% |  d | d | ƒ j ƒ  S|  d | d | d | ƒ j ƒ  Sd  S(   Nt
   sites_cartt   proxyt	   unit_cell(   t   Nonet   residual(   t   restraint_typeR   R   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyR      s    i   i    i   (   t   xranget   lenR   t   colt   append(   R   R   R   R   t   epsR   t   resultt   it   result_it   jt   ht   qpt   qmt   dq(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   finite_difference_gradients   s     	

c       	   C   sR	  d) d* d+ f }  d, } t  j d |  d | ƒ } t | j ƒ |  k sH t ‚ t | j | ƒ s` t ‚ | j d  k su t ‚ d- } t	 j
 t g  | D] } | | ^ q‹ ƒ t | ƒ ƒ } t g  t d ƒ D]  } | | | | | | ^ qÁ ƒ t g  | D] } | ^ qñ ƒ } d. d/ f d0 d1 f d2 d3 f f }	 d4 d5 f d6 d7 f d8 d9 f g }
 t  j d |
 d | ƒ } t | j |
 ƒ syt ‚ t | j | ƒ s‘t ‚ t | j ƒ  d ƒ s¬t ‚ t | j ƒ  | ƒ sÇt ‚ t | j ƒ  | ƒ sât ‚ t | j ƒ  | ƒ sýt ‚ t | j ƒ  |	 ƒ st ‚ t j d: d; d< d= d> d? g ƒ } t  j d | d | ƒ } t | j |
 ƒ sit ‚ t | j | ƒ s�t ‚ t | j ƒ  d ƒ sœt ‚ t | j ƒ  | ƒ s·t ‚ t | j ƒ  | ƒ sÒt ‚ t | j ƒ  | ƒ sít ‚ t | j ƒ  |	 ƒ st ‚ t j ƒ  } d@ dA dB f }  | | t j d ƒ f } dC } t  j d |  d | d | ƒ } t | j ƒ |  k szt ‚ t | j ƒ | k s•t ‚ t | j | ƒ s­t ‚ dD } t	 j
 t g  | D] } | | ^ qÃƒ t | ƒ ƒ } t g  t d ƒ D]  } | | | | | | ^ qùƒ t g  | D] } | ^ q)ƒ } dE dF f dG dH f dI dJ f f }	 dK dL f dM dN f dO dP f g }
 t  j d |
 d | ƒ } t | j |
 ƒ s±t ‚ t | j | ƒ sÉt ‚ t | j ƒ  d ƒ sät ‚ t | j ƒ  | ƒ sÿt ‚ t | j ƒ  | ƒ st ‚ t | j ƒ  | ƒ s5t ‚ t | j ƒ  |	 ƒ sPt ‚ t j d  d! d" d# d# d# g ƒ } t j dQ dR dS dT dU dV g ƒ } t  j d% | d | d | ƒ } t | j |
 ƒ sÈt ‚ t | j | ƒ sàt ‚ t | j ƒ  d ƒ sût ‚ t | j ƒ  | ƒ st ‚ t | j ƒ  | ƒ s1t ‚ t | j ƒ  | ƒ sLt ‚ t | j ƒ  |	 ƒ sgt ‚ t  j | | g ƒ } t t  j d% | d | d& | ƒ | g d ƒ s°t ‚ t t  j d% | d | d& | ƒ | g d ƒ sät ‚ t  j d% | d | d& | d' d  ƒ } t | d | ƒ s!t ‚ t j | j  ƒ  dW ƒ } t  j d% | d | d& | d' | ƒ } t | d | ƒ svt ‚ t! d( t  j d% | d | d | ƒ } x? t" | | ƒ D]. \ } } t | t# j$ | ƒ d ƒ sªt ‚ qªWt  j d |  d | d | ƒ } | j | k st ‚ t  j d% | d | d | ƒ } t  j d |  d | ƒ } | j d  k sZt ‚ t  j d | d | ƒ } t  j | | g ƒ } t t  j d% | d | d& | ƒ | j ƒ  | j ƒ  g ƒ sÆt ‚ t t  j d% | d | d& | ƒ | j ƒ  | j ƒ  g ƒ s	t ‚ t  j d% | d | d& | d' d  ƒ } t | | j ƒ  | j ƒ  ƒ sN	t ‚ d  S(X   Ni    i   i   i   i   i   t   i_seqst   weightsgá¡¿gá±?gäqÀlÁ†?gäqÀlÁ†¿gäqÀlÁ¦¿gäqÀlÁ¦?gkU¡?gkU¡¿g      @i   gffffff@i   i   g      @t   sites_arrayg‡ˆˆˆˆˆø?R   R   s   1+x,y,zt   sym_opsi   i   g      /@i   i   i   iZ   g      à?R   t   proxiest   gradient_arrayR   (   i    i   (   i   i   (   i   i   (   i   i   i   (   gá¡¿gá±?gá¡¿(   i    i    gäqÀlÁ†?(   i    i    gäqÀlÁ†¿(   i    gäqÀlÁ¦¿i    (   i    gäqÀlÁ¦?i    (   gkU¡?i    i    (   gkU¡¿i    i    (   i   i   i   (   i   i   g      @(   i   i   i   (   i   gffffff@i   (   i   i   i   (   g      @i   i   (   i   i   i   (   i   i   i   (   i   i   g      @(   i   gffffff@i   (   i   i   i   (   g      @i   i   (   i    i   (   i   i   (   i   i   (   i   i   i   (   gá¡¿gá±?gá¡¿(   i    i    gäqÀlÁ†?(   i    i    gäqÀlÁ†¿(   i    gäqÀlÁ¦¿i    (   i    gäqÀlÁ¦?i    (   gkU¡?i    i    (   gkU¡¿i    i    (   i   i   i   (   i   i   g      @(   i   i   i   (   i   gffffff@i   (   i   i   i   (   g      /@i   i   (   i   i   i   (   i   i   i   (   i   i   g      @(   i   gffffff@i   (   i   i   i   (   g      à?i   i   (   i    i    i    (%   R   t   bond_similarity_proxyt   tupleR"   t   AssertionErrorR   R#   R%   R   t   matht   sqrtt   sumR   t   ranget   bond_similarityR$   t   mean_distancet   deltast
   rms_deltasR   t	   gradientsR   t   vec3_doubleR   t   rt_mxR   R   t   shared_bond_similarity_proxyR
   t   bond_similarity_residualst   bond_similarity_deltas_rmst   bond_similarity_residual_sumt   sizeR!   t   zipR   R   (   R"   R#   t   pt   expected_deltast   deltat   expected_rms_deltasR   t   wt   expected_residualt   expected_gradientsR$   t   bR   t   unit_mxR%   R   R&   t   residual_sumR'   t   fd_gradst   gt   et   p_symt   restraint_symt   p_no_symt   restraint_no_sym(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_bond_similarity*   s2   			 0 		!							 0 		!		!								&								''		c    /         sˆ  t  j d d d d ƒ }  t |  j d ƒ s0 t ‚ t |  j d ƒ sH t ‚ t |  j d ƒ s` t ‚ d |  _ t |  j d ƒ s� t ‚ d |  _ t |  j d ƒ s¢ t ‚ d |  _ t |  j d ƒ sÃ t ‚ d |  _ t |  j d ƒ sä t ‚ d |  _ t |  j d ƒ st ‚ d |  _ t |  j d ƒ s&t ‚ |  j d	 d
 ƒ } | j |  j k sPt ‚ t | j d
 ƒ sht ‚ | j |  j k s€t ‚ t  j ƒ  } | j	 ƒ  d k s¤t ‚ t  j
 ƒ  } t | ƒ d k sÈt ‚ t  j d d d d
 ƒ }  |  | d <t | d j d ƒ st ‚ | j | ƒ | j | ƒ t | d d j d ƒ s@t ‚ |  | d d <t | d d j d ƒ snt ‚ d | d d _ t | d d j d ƒ sŸt ‚ t | d d j d ƒ s¿t ‚ t  j d d d d ƒ | d d <x) | j	 ƒ  d k  r
| j t  j
 ƒ  ƒ qâW| j d t j d g ƒ ƒ } t | d d j d ƒ sIt ‚ t | d d j d ƒ sit ‚ t | j d d ƒ j d
 ƒ s�t ‚ d | j d d ƒ _ t | j d d ƒ j d ƒ sÆt ‚ d
 | j d d ƒ _ | j d t j t g d ƒ ƒ } g  | D] }  |  j	 ƒ  ^ qd g d k s/t ‚ | j d t j t g d ƒ ƒ } g  | D] }  |  j	 ƒ  ^ qXd
 d
 g d g d k s�t ‚ | j d t j t t g t g d ƒ ƒ } g  | D] }  |  j	 ƒ  ^ qÀd
 d g d g d k sõt ‚ | j d t j t t g t g d t g t g d ƒ ƒ } g  | D] }  |  j	 ƒ  ^ q:d d
 g d g d k sot ‚ | j d t j t t g t g d t g t g d ƒ ƒ } g  | D] }  |  j	 ƒ  ^ q´d g d g d k sæt ‚ t  j d d d d
 ƒ }  | d j	 ƒ  d k st ‚ | j d d d d d |  ƒ | d j	 ƒ  d k sRt ‚ t | d d j d ƒ srt ‚ t  j d d d d ƒ }  | j d d d d d |  ƒ | d j	 ƒ  d
 k sÂt ‚ t | d d j d ƒ sât ‚ t  j d d d d ƒ }  | j d d d d d |  ƒ | d j	 ƒ  d
 k s2t ‚ t | d d j d ƒ sRt ‚ t  j ƒ  j d ƒ d k sst ‚ | j d d ƒ d k s‘t ‚ t | j d ƒ d ƒ s¯t ‚ t | j d ƒ d ƒ sÍt ‚ t | j d ƒ d  ƒ sët ‚ t  j d! d d g d d d d ƒ }  |  j do k s$t ‚ t |  j d ƒ s<t ‚ t |  j d ƒ sTt ‚ |  j ƒ  }  |  j dp k sut ‚ t |  j d ƒ s�t ‚ t |  j d ƒ s¥t ‚ d |  _ t |  j d ƒ sÆt ‚ d |  _ t |  j d ƒ sçt ‚ d |  _ t |  j d ƒ s	t ‚ d |  _ t |  j d ƒ s)	t ‚ t  j d" dq dr g d d d d ƒ } t | j ds dt g ƒ sk	t ‚ t | j d ƒ sƒ	t ‚ t | j d ƒ s›	t ‚ t | j d
 d ƒ s·	t ‚ t | j d$ ƒ sÏ	t ‚ t | j ƒ  d% ƒ sê	t ‚ t | j ƒ  du dv f ƒ s
t ‚ t  j d" dw dx g d d d d ƒ } t | j d ƒ sG
t ‚ t | j ƒ  dy dz g ƒ sh
t ‚ t j  d{ d| g ƒ ‰ t  j d, ˆ d- |  ƒ } t | j d} d~ g ƒ s³
t ‚ t | j d ƒ sË
t ‚ t | j d ƒ sã
t ‚ t | j d
 d ƒ sÿ
t ‚ t  j! |  |  g ƒ } x/ | D]' } t | j d ƒ s9t ‚ d | _ qWx/ | D]' } t | j d ƒ skt ‚ d | _ qMWt  j" d. d
 d/ | ƒ }	 |	 d j# ƒ  d g k s¯t ‚ t |	 d j$ ƒ  d j d ƒ sÕt ‚ t |	 d j$ ƒ  d j d ƒ sût ‚ |	 d j# ƒ  g  k st ‚ t t  j% d, ˆ d0 | ƒ d g d
 ƒ sEt ‚ t t  j& d, ˆ d0 | ƒ d$ g d
 ƒ sst ‚ t t  j' d, ˆ d0 | ƒ d% g d
 ƒ s¡t ‚ t  j( d, ˆ d0 | d1 d  ƒ }
 t |
 d€ ƒ sÔt ‚ x÷ d  t* j+ d2 ƒ f D]à } | d  k r#t  j d! d d g d d d d ƒ }  nb xJ t  j t  j, f D]6 } | d! d d g d3 t* j+ d2 ƒ d d d d ƒ }  q6W|  j- | k s…t ‚ |  j d� k sšt ‚ t |  j d ƒ s²t ‚ t |  j d ƒ sêt ‚ qêWt. j/ d4 d5 d6 d7 d7 d7 g ƒ } t j  d d
 d g d
 d d g g ƒ ‰ t  j d8 | d, ˆ d- |  ƒ } t | j d‚ dƒ g ƒ sRt ‚ t | j d ƒ sjt ‚ t | j d ƒ s‚t ‚ t | j d
 d; ƒ sžt ‚ t j  d d
 d g d
 d d g g ƒ ‰ t0 j1 d, ˆ ƒ } t2 j3 d< | d= d ƒ } t  j4 d> | j5 ƒ  d d
 d d ƒ }  t  j4 d> |  d |  ƒ }  | j6 ƒ  s=t ‚ |  j7 d k sRt ‚ |  j8 d k sgt ‚ |  j9 d k s|t ‚ t |  j d
 ƒ s”t ‚ t |  j d ƒ s¬t ‚ d |  _ t |  j d ƒ sÍt ‚ d
 |  _ t |  j d
 ƒ sît ‚ d |  _ t |  j d ƒ st ‚ d |  _ t |  j d ƒ s0t ‚ |  j: ƒ  j d„ k sKt ‚ t |  j: ƒ  j d
 ƒ sit ‚ t |  j: ƒ  j d ƒ s‡t ‚ t  j; |  |  g ƒ } x/ | D]' } t | j d
 ƒ sÁt ‚ d? | _ q£Wx/ | D]' } t | j d? ƒ sót ‚ d
 | _ qÕWt  j< d< | ƒ } | j= d0 | ƒ t t  j% d, ˆ d@ | ƒ d… g d
 ƒ sPt ‚ t t  j& d, ˆ d@ | ƒ d
 d† g d
 ƒ s‚t ‚ t t  j' d, ˆ d@ | ƒ d d
 d‡ d
 g d
 ƒ s¼t ‚ t t  j( d, ˆ d@ | d1 d  ƒ d d
 dˆ d
 d
 ƒ sùt ‚ t j  d
 d d d g ƒ } t t  j( d, ˆ d@ | d1 | ƒ d d
 d‰ d
 d
 ƒ sQt ‚ t | dA g d dB g d g ƒ szt ‚ x› t t g D]� } t j  d
 d d d g ƒ } t t  j( d, ˆ d@ | d1 | dC | ƒ d d
 dŠ d
 d
 ƒ sët ‚ t | dA g d dB g d g ƒ s‡t ‚ q‡Wxn t  j! dD d
 ƒ D]Z }  |  j d k sFt ‚ |  j d k s[t ‚ |  j d k spt ‚ |  j d‹ k s+t ‚ q+Wt  j< d< | ƒ } | j> d- | d ƒ | j? j	 ƒ  d k sÊt ‚ | j@ j	 ƒ  d k såt ‚ t  j< d< | ƒ } | j= d- | d ƒ | j= d- | d ƒ | j? j	 ƒ  d
 k s:t ‚ | j@ j	 ƒ  d k sUt ‚ | jA ƒ  d
 k smt ‚ t  j d, ˆ d- | d ƒ j ƒ  } t  j d, ˆ d< | d- | d ƒ j ƒ  } t | d d
 dŒ d
 ƒ sØt ‚ t j  d
 d d d g ƒ } t t  j( d, ˆ d@ | d1 | ƒ | | ƒ s$t ‚ t | d� dŽ g ƒ s?t ‚ | j= | j? jB ƒ  ƒ | j? j	 ƒ  d k spt ‚ | j= | j@ jB ƒ  ƒ | j@ j	 ƒ  d k s¡t ‚ | j> | j@ jB ƒ  ƒ | j@ j	 ƒ  d k sÒt ‚ t2 jC d< | ƒ } | jD ƒ  d j# ƒ  g  k st ‚ t  jE dG | d/ | ƒ | jD ƒ  d j# ƒ  d g k sAt ‚ t2 jC d< | ƒ } t  j< dG | ƒ } | j? j	 ƒ  d k s€t ‚ | j@ j	 ƒ  d k s›t ‚ | jF d= d
 ƒ t  j< dG | ƒ } | j? j	 ƒ  d k sØt ‚ | j@ j	 ƒ  d k sót ‚ dH „  } t jG dI d ƒ } x»d d� d� d g D]§} xžtH dK ƒ D]�} | d } tI jJ d‘ ƒ | tI jJ | jK ƒ  ƒ } t  j d" d’ | g d d
 d d dL | ƒ } t | j | ƒ s¬t ‚ t | jL | | j ƒ tM d tN | j ƒ | j ƒ ƒ sêt ‚ x× tH d ƒ D]É } g  } dM } xq | | g D]b }  d d
 d g }! |! | c |  7<t  j d" |! | g d d
 d d dL | ƒ }" | j |" j ƒ  ƒ qW| d | d d
 | }# | j ƒ  d | }$ t |$ |# ƒ s÷t ‚ q÷Wq4Wq!Wt j  d“ d” g ƒ ‰ t j  d• d– g ƒ ‰  t j d d g ƒ ‰ t j  d— d˜ g ƒ ‰ t j d d g ƒ ‰ t t ‡  ‡ ‡ ‡ ‡ f dV † }% t |% d d ƒ dW d™ dš g g ƒ s€t ‚ t |% d d t ƒ dW ƒ s¡t ‚ t |% d d t t ƒ d[ ƒ sÅt ‚ t |% d d t t ƒ d[ d› dœ g g ƒ sõt ‚ t |% d d ƒ d_ d� dž g g ƒ st ‚ t |% d d ƒ dc dŸ d  g g ƒ sIt ‚ t j d d g ƒ ‰ t |% d d ƒ dd d¡ d¢ g g ƒ sˆt ‚ t j d d g ƒ ‰ t j d g ƒ ‰ t |% d d ƒ dd d£ d¤ g g ƒ sÙt ‚ t j g  ƒ ‰ t |% d d ƒ dc d¥ d¦ g g ƒ st ‚ t j d d g ƒ ‰ d d d g de d d g g }& t  j d! d d g d de d df ƒ }' t  j d! d d g d de d df dg dh di t ƒ }( xè tO dj ƒ D]Ú } de dk | dl |& d d <t j  |& ƒ ‰ t  j ˆ |' ƒ }) t  j ˆ |( ƒ }* |) j ƒ  }+ |* j ƒ  }, | dl k r2|+ |, k sDt ‚ n |, |+ k  sDt ‚ tP t  j ˆ |( ƒ }- |* j ƒ  }. t |- |. dm dn ƒs¦t ‚ q¦Wd  S(§   Nt   distance_idealg      @t   weighti   i    i#   i
   i   t   factori   i   i   i   i   t
   iselectioni0   t	   selectioni   i   gffffff@t   i_seqt   j_seqt   paramsgffffff@gÍÌÌÌÌÌü?t   bond_stretch_factorg      à?gš_,ù…"@g      ð?g¥_,ù…B@g       @g–À_,ù…b@R"   t   sitesi   gÒüƒ¡îÎ¿g;:‘‰aæ­?g¶¾t¯ˆÀ¿g¶¾t¯ˆÐ¿g‘/ÍØ¿g¶¾t¯ˆÀ?g¶¾t¯ˆÐ?g‘/ÍØ?R   R   t   n_seqt   bond_simple_proxiesR&   R'   s   -y,z,xt   rt_mx_jii   i   i   iZ   R   g333333ó¿g      @g{®Gáú,@t   asu_mappingst   distance_cutofft   pairiüÿÿÿt   sorted_asu_proxiesgÿ¡·ˆÀ@gÿ¡·ˆÀÀt   disable_cacheR:   gF,¯¸¶Š@gF,¯¸¶ŠÀt   pair_asu_tablec         S   s   |  d k  r d Sd S(   Ni    iÿÿÿÿi   (    (   t   x(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   sign  s     t   seedg      @i	   t   slackg�íµ ÷Æ°>i   i(   gš™™™™™ñ?gffffffþ?gffffff@gÍÌÌÌÌÌ @gš™™™™™	@g333333@c            sz   d  } | s ˆ  j ƒ  } n  d  } | s0 ˆ } n  t j d ˆ d | d | d ˆ d ˆ d |  d | ƒ } | sv | | g S| S(   NR   R3   t   site_symmetry_table_indicest   home_sites_cartRQ   RO   Rd   (   R   t	   deep_copyR   t0   home_restraints_summation_skip_special_positions(   RO   Rd   t   no_gradst   no_site_symR3   t   site_symRE   (   t   gradients_inpRf   RQ   Re   R   (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   getG  s"    			
g
×£p=
—?gš™™™™™#@g3333334@gfffffæ=@gÍÌÌÌÌÌÄ?gÍÌÌÌÌÌ3@gš™™™™™=@g33333³C@gHáz®G±?gÍÌÌÌÌÌ"@gš™™™™™4@g33333³=@g        gìQ¸…ëÁ?g      ø?i�  t   limitg333333ã?t   top_outiÈ   g{®Gáz„?id   R   g-Cëâ6?(   i   i    (   i    i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   g¶¾t¯ˆÀ¿g¶¾t¯ˆÐ¿g‘/ÍØ¿(   g¶¾t¯ˆÀ?g¶¾t¯ˆÐ?g‘/ÍØ?(   i   i   i   (   i   i   i   (   i    i    i    (   i    i    i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   gI?hêî@g;:‘‰aæ½?(   i   i    (   i   i   i   (   g333333ó¿g      @i   (   i    i   gªLXèz¶û?gªLXèz¶û?gªLXèz¶û?gªLXèz¶û?gªLXèz¶û?gªLXèz¶û?(   i    i    gªLXèz¶û?(   gF,¯¸¶Š@gF,¯¸¶Š@gF,¯¸¶Š@(   gF,¯¸¶ŠÀgF,¯¸¶ŠÀgF,¯¸¶ŠÀgUUUUUUÕ?gUUUUUUå?(   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i
   i   i   (   i   i   i(   (   gš™™™™™ñ?gffffffþ?gffffff@(   gÍÌÌÌÌÌ @gš™™™™™	@g333333@(   gš™™™™™#@g3333334@gfffffæ=@(   i   i   i(   (   gš™™™™™#@g3333334@gfffffæ=@(   gÍÌÌÌÌÌ3@gš™™™™™=@g33333³C@(   gÍÌÌÌÌÌ"@gš™™™™™4@g33333³=@(   i   i   i(   (   i
   i   i   (   i   i   i(   (   i
   i   i   (   gÍÌÌÌÌÌ3@gš™™™™™=@g33333³C@(   i
   i   i   (   gÍÌÌÌÌÌ3@gš™™™™™=@g33333³C@(   i
   i   i   (   i   i   i(   (Q   R   t   bond_paramsR   RN   R*   RO   Rd   t   scale_weightt   bond_params_tableR:   t   bond_params_dictR   R   t   proxy_selectR   t   size_tt   lookupt   proxy_removet   boolt   Truet   Falset   updatet   mean_residualt   bond_simple_proxyR"   t   sort_i_seqst   bondRW   t   distance_modelR>   R   R3   R4   t   shared_bond_simple_proxyt   extract_bond_paramst   keyst   valuest   bond_distances_modelt   bond_deltast   bond_residualst   bond_residual_sumR   R   R5   t   bond_sym_proxyRZ   R   R   R   t!   non_crystallographic_asu_mappingsR   t   neighbors_fast_pair_generatort   bond_asu_proxyt   nextt   at_endRS   RT   t   j_symt   as_simple_proxyt   shared_bond_asu_proxyt   bond_sorted_asu_proxiest   processt	   push_backt   simplet   asut   n_totalRg   R`   t   tablet	   add_pairst   add_all_pairst   mersenne_twisterR   R   R   t   random_double_point_on_spheret   delta_slackt   maxt   absR.   R!   (/   R<   t   ct   tt   dt   st   restRC   R&   R   t   tabRE   t   sym_opt   proxy_tR   R[   t   pair_generatort   sym_proxiesR^   R'   R_   t
   residual_0t
   residual_1R`   Rb   t   mtRd   t   isht   sht   site1R   t   rsR   t
   signed_epst   site0t   bet   g_fint   g_anaRm   RW   t   proxy1t   proxy2t   bond1t   bond2t   res1t   res2t   grads_fdt   grads_an(    (   Rl   Rf   RQ   Re   R   sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_bondÕ   s   								
       $$"2"<,<	5<	59   !										!			&&				!'		'															"		
	
						!"	%					
		5		!!!$					t   py_nonbonded_cosc           B   s    e  Z d  d „ Z d d „ Z RS(   i   c         C   s   | |  _  | |  _ d  S(   N(   t   max_residualt   exponent(   t   selfRÀ   RÁ   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   __init__�  s    	c         C   sI  | j  } | j \ } } t j | | ƒ t j | | ƒ } t | ƒ } | | k rX d S| | }	 |  j }
 |  j } t j } | |	 } t j	 | ƒ d } |
 | d | } | d  k	 rE| d k rE| |
 | | | d t j | ƒ d | } | | } | | | } t j | | ƒ | | | <t j | | ƒ | | | <n  | S(   Ni    i   i   (   t   vdw_distanceR"   R   R   RŸ   RÀ   RÁ   R+   t   pit   cosR   t   sin(   RÂ   R   R   R'   RÄ   R   R   t   diff_vecR¢   Ra   t   mRH   RÅ   t   pixt   cpixpoR   t   drdxt   drddt
   gradient_0(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   residual_and_gradients‘  s(    	$ 
			
0
N(   t   __name__t
   __module__RÃ   R   RÏ   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyR¿   ‹  s   g�íµ ÷Æ°>c      	   C   së   g  } xÌ | j  D]Á } t | | ƒ } xž t d ƒ D]� } | | } g  }	 xL | | g D]= }
 | |
 | | <| | | <|	 j |  j d | d | ƒ ƒ qW W| | | <| j |	 d |	 d d | ƒ q3 W| | | <q Wt j t j | ƒ ƒ S(   Ni   R   R   i    i   i   (   R"   t   listR   R   RÏ   R   R4   t   double(   t   nbfR   R   R   R   R   t   scR    t   scc0R°   R±   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt"   nb_cos_finite_difference_gradientsª  s     


%i    c         C   s_  |  r t  j } n	 t ƒ  } x=d d d g D],} t d d d | ƒ } t j d d g ƒ } t j d d d d ƒ } t j d d ƒ } | j d | d | d | ƒ } t	 d | d | d | ƒ } | t
 | ƒ IJ| t
 | ƒ IJt | | ƒ só t ‚ t j d t
 | ƒ d | j d t j d | j d | j ƒ ƒ }	 t |	 j ƒ  | ƒ sMt ‚ | |	 j ƒ  IJt |	 j ƒ  | ƒ sxt ‚ | Jt j | d ƒ }
 t j | d ƒ |
 } | d t | ƒ 9} xšt d d d ƒ D]†} x}d d d g D]l} | d | } |
 | | | d <t j d d ƒ } | j d | d | d | ƒ } | d I| I| IJ| d k rvt | ƒ d k sOt ‚ qãt	 d | d | d | ƒ } | t
 | ƒ IJ| t
 | ƒ IJt | | ƒ sÆt ‚ t j d t
 | ƒ d | j d t j d | j d | j ƒ ƒ }	 t |	 j ƒ  | ƒ s t ‚ | |	 j ƒ  IJt |	 j ƒ  | ƒ sKt ‚ | JqãWqÍWq+ Wd  S(    Ni   i   g      ø?RÀ   i   RÁ   i   g333333Ó?g333333@g      @R"   i    RÄ   R   R   R'   RÔ   RW   t   functioni   iÿÿÿÿgü©ñÒMbP?gü©ñÒMbP¿i
   s   d, r:g:Œ0âŽyE>(   i   i   i   (   g333333Ó?g333333@g      @(   i    i   (   i    i    i    (   i    i    i    (   t   syst   stdoutR   R¿   R   R4   R   t   nonbonded_simple_proxyRÏ   R×   RÒ   R   R*   t   nonbonded_cosRÄ   t   cos_repulsion_functionRÀ   RÁ   R   R3   R   R   RŸ   R   (   t   verboset   logRÁ   RÔ   R   R   R'   t   rRF   t   nct   sc0t   v01R   R   R¢   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_nonbonded_cos¼  sp     												c          C   sü  t  j ƒ  }  |  j j ƒ  d k s' t ‚ |  j j ƒ  d k sB t ‚ t |  j dU ƒ sZ t ‚ t |  j d ƒ sr t ‚ t |  j	 d ƒ sŠ t ‚ t |  j
 d ƒ s¢ t ‚ t  j d d d d d d	 d
 d ƒ }  t |  j d ƒ sÞ t ‚ t |  j d ƒ sö t ‚ t |  j	 d	 ƒ st ‚ t |  j
 d ƒ s&t ‚ d |  _ t |  j d ƒ sGt ‚ d |  _ t |  j d ƒ sht ‚ d |  _	 t |  j	 d ƒ s‰t ‚ d |  _
 t |  j
 d ƒ sªt ‚ t  j d d d	 g d d ƒ } | j dV k sÝt ‚ | j d  k sòt ‚ t | j d ƒ s
t ‚ t  j d d d g d t j d ƒ d d ƒ } | j dW k sLt ‚ t | j ƒ d k sgt ‚ t | j d ƒ st ‚ t  j d dX dY g d d d t  j ƒ  ƒ } t | j dZ d[ g ƒ sÇt ‚ t | j d ƒ sßt ‚ t | j j d ƒ sút ‚ t | j d ƒ st ‚ t | j ƒ  d ƒ s-t ‚ t | j ƒ  d\ d] g ƒ sNt ‚ t j d^ d_ g ƒ } t  j d# | d$ | d t  j ƒ  ƒ } t | j d` da g ƒ s¥t ‚ t | j d ƒ s½t ‚ t | j j d ƒ sØt ‚ t | j d ƒ sðt ‚ t  j | | g ƒ } x& | D] } t | j d ƒ st ‚ qWt t  j d# | d% | ƒ d g d ƒ s\t ‚ t t  j d# | d% | d t  j ƒ  ƒ d g d ƒ s–t ‚ t t  j d# | d% | d t  j  d& ƒ ƒ d' g d ƒ sÓt ‚ t t  j d# | d% | d t  j! d( d) ƒ ƒ d* g d ƒ st ‚ t t  j d# | d% | d t  j" d( d+ d, d ƒ ƒ d- g d ƒ sYt ‚ t  j# d# | d% | d. d  d t  j ƒ  ƒ } t | db ƒ s˜t ‚ t  j# d# | d% | d. d  d t  j  d& ƒ ƒ } t | dc ƒ sÚt ‚ t  j# d# | d% | d. d  d t  j! d( d) ƒ ƒ } t | dd ƒ st ‚ t  j# d# | d% | d. d  d t  j" d( d+ d, d ƒ ƒ } t | de ƒ sjt ‚ t j d	 d d g d d d g g ƒ } t$ j% d# | ƒ } t& j' d/ | d0 d ƒ }	 t  j( d1 |	 j) ƒ  d d ƒ } |	 j* ƒ  sët ‚ | j+ d k s t ‚ | j, d	 k st ‚ | j- d k s*t ‚ t | j d ƒ sBt ‚ d | _ t | j d ƒ sct ‚ d | _ t  j. | | g ƒ }
 x/ |
 D]' } t | j d ƒ s¦t ‚ d | _ qˆWx/ |
 D]' } t | j d ƒ sØt ‚ d | _ qºWt  j d2 d	 d3 d d4 d d5 d ƒ } t | j d	 ƒ s!t ‚ t | j/ d ƒ s9t ‚ t | j0 d ƒ sQt ‚ t | j1 d ƒ sit ‚ t | j d d d6 d7 ƒ d8 ƒ s�t ‚ t | j d d d6 d ƒ d9 ƒ s·t ‚ t  j d t2 | ƒ d | j d | ƒ } t | j j d	 ƒ sùt ‚ t | j3 d: d: d: g ƒ s	t ‚ t | j d d ƒ s6	t ‚ t | j ƒ  d; ƒ sQ	t ‚ t | j ƒ  df dg g ƒ sr	t ‚ t  j ƒ  } t | j d d d6 d7 ƒ d> ƒ s¥	t ‚ t | j d d d6 d ƒ d ƒ sÌ	t ‚ t  j d t2 | ƒ d | j d | ƒ } t | j j d ƒ s
t ‚ t | j j/ d	 ƒ s)
t ‚ t | j j0 d	 ƒ sD
t ‚ t | j j1 d ƒ s_
t ‚ t | j3 d: d: d: g ƒ s€
t ‚ t | j d d ƒ sœ
t ‚ t | j ƒ  d? ƒ s·
t ‚ t | j ƒ  dh di g ƒ sØ
t ‚ t | j d d d6 d7 ƒ d> ƒ sÿ
t ‚ t | j d d d6 d ƒ d ƒ s&t ‚ xÆd	 d d d d g D]¯} t  j  dB dC d3 d d4 | ƒ } t | j/ d ƒ sxt ‚ t | j0 | ƒ s�t ‚ | d	 k rít | j d d d6 d7 ƒ dD ƒ sÃt ‚ t | j d d d6 d ƒ d ƒ sít ‚ n  t  j4 d t2 | ƒ d | j d | ƒ } t | j3 d: d: d: g ƒ s5t ‚ t | j d d ƒ sQt ‚ t | j ƒ  | j/ | j | j | j0 ƒ s„t ‚ | j0 | j/ | j | j | j0 d	 | j } t | j ƒ  | | | f | | | f g ƒ s<t ‚ q<Wxà d	 d g D]Ò } t  j  dB | d3 d d4 d ƒ } t  j4 d t2 | ƒ d | j d | ƒ } | d	 k r’t | j ƒ  d ƒ snt ‚ t | j ƒ  dj dk g ƒ sÎt ‚ qüt5 | j ƒ  d ƒ s­t ‚ t5 | j ƒ  dl dm g ƒ süt ‚ qüWx¼d	 d d g D]«} t  j! d( d) dE | ƒ } t | j6 d) ƒ st ‚ t | j7 | ƒ s0t ‚ | d	 k r�t | j d d d6 d7 ƒ dF ƒ sct ‚ t | j d d d6 d ƒ d ƒ s�t ‚ n  t  j8 d t2 | ƒ d | j d | ƒ } t | j3 d: d: d: g ƒ sÕt ‚ t | j d d ƒ sñt ‚ t9 d( | j6 dE | j7 ƒ } t j | j ƒ  dn ƒ } | j: d$ t  j d do d | j ƒ d# | d. | ƒ } t | j ƒ  | ƒ srt ‚ t | j ƒ  | ƒ sât ‚ qâWt; dG dH dI g ƒ } t; dJ dK dL g ƒ } xZd d d g D]I} t  j" d( d+ d, | ƒ } t | j6 d+ ƒ st ‚ t | j< ƒ  | ƒ st ‚ t | j d d d6 d ƒ d+ | ƒ sGt ‚ t | j d d d6 d7 ƒ | j) ƒ  ƒ stt ‚ t  j= d t2 | ƒ d | j d | ƒ } t | j3 d: d: d: g ƒ s¼t ‚ t | j d d ƒ sØt ‚ | j) ƒ  } t | j ƒ  | g d | g d g ƒ sËt ‚ qËWt  j> d/ | ƒ } | j? d% |
 ƒ t t j@ t  j d# | dM | ƒ ƒ d g d ƒ sqt ‚ t t  j d# | dM | d t  j ƒ  ƒ d? g d ƒ s«t ‚ t t  j# d# | dM | d. d  d t  j ƒ  ƒ dp ƒ sät ‚ x‰ tA tB g D]{ } t j d d d d g ƒ } t t  j# d# | dM | d. | d t  j ƒ  dN | ƒ dq ƒ sQt ‚ t | dr ds g ƒ sñt ‚ qñWt  j> d/ | ƒ } | j? d$ | d ƒ | j? d$ |
 d dQ tA ƒ | jC j ƒ  d k sËt ‚ | jD j ƒ  d k sæt ‚ | jE ƒ  d k sþt ‚ t  j d# | d$ | d d t  j ƒ  ƒ j ƒ  } t  j d# | d/ | d$ |
 d d t  j ƒ  ƒ j ƒ  } t j d d d d g ƒ } t t  j# d# | dM | d. | d t  j ƒ  ƒ | | ƒ s¸t ‚ t | dt du g ƒ sÓt ‚ | j? | jC jF ƒ  ƒ | jC j ƒ  d k st ‚ | j? | jD jF ƒ  ƒ | jD j ƒ  d k s5t ‚ t  j ƒ  } t | j | j/ | j0 | j1 f dv ƒ snt ‚ | jG ƒ  } t | j | j/ | j0 | j1 f dw ƒ s§t ‚ | jG d2 dT d3 d d4 d d5 d ƒ } t | j | j/ | j0 | j1 f dx ƒ søt ‚ d  S(y   Ni    i   g      @t   factor_1_4_interactionsg      à?t   const_shrink_1_4_interactionsgš™™™™™¹?t   default_distancei   t   minimum_distancegš™™™™™Ù?gš™™™™™É?g333333Ó?g333333ã?R"   RÄ   i   i   RZ   s   y,y-x,0.5+Zi   s   y,-x+y,z+1/2RW   i   RØ   i   gžhêî@gÞ&_öÒD@gX©g_
A@gX©g_
Q@g~›žŽ�Y@gX©g_
AÀgX©g_
QÀg~›žŽ�YÀR   R   R&   i
   g4-¸ž‚aõ?RÀ   i   gGôÀîØþ?i   t   norm_height_at_vdw_distanceg«±ÒÜ‚}@R'   R[   R\   R]   t   c_rept   k_rept   irexpt   rexpR>   g333333@gtêÊ7³CAg   €kÅBAiÿÿÿÿi¥v g    €ÍÕ@g    €ÍÕÀg-Cëâ6Z?gª:¯,µ?gü7L)D¿æ?gü7L)D¿æ¿t   nonbonded_distance_cutoffid   g»ÇË=�@RÁ   gEÊ{+;¢?g-0îBTö?gœ`{û"V@gª`K*@g�kXC~§@gÝb¿{¢@góìtÞm@R^   R_   gü7L)D¿ö?gü7L)D¿ö¿t   sym_excl_flagg9Š )”@g9Š )”Ài   gUUUUUUå?(   i    i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   gX©g_
A@gX©g_
Q@g~›žŽ�Y@(   gX©g_
AÀgX©g_
QÀg~›žŽ�YÀ(   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   gÞ&_öÒT@g4-¸ž‚a@gGôÀîØ@g«±ÒÜ‚}#@(   g    €ÍÕ@g    €ÍÕ@g    €ÍÕ@(   g    €ÍÕÀg    €ÍÕÀg    €ÍÕÀ(   gü7L)D¿æ?gü7L)D¿æ?gü7L)D¿æ?(   gü7L)D¿æ¿gü7L)D¿æ¿gü7L)D¿æ¿(   i    i    i    (   i    i    i    (   i    i    i    (   i    i    i    (   i    i    i    (   i    i   gª:¯,Å?gª:¯,Å?(   gü7L)D¿ö?gü7L)D¿ö?gü7L)D¿ö?(   gü7L)D¿ö¿gü7L)D¿ö¿gü7L)D¿ö¿(   g9Š )”@g9Š )”@g9Š )”@(   g9Š )”Àg9Š )”Àg9Š )”À(   i   i   i   i   (   i   i   i   i   (   i   i   i   i   (H   R   t   nonbonded_paramst   distance_tableR:   R*   t   radius_tableR   Rå   Ræ   Rç   Rè   RÛ   R"   RZ   R   RÄ   R   R5   t   strt   nonbonded_prolsqt   prolsq_repulsion_functionRW   RØ   Rê   R>   R   R3   R   R4   t   shared_nonbonded_simple_proxyt   nonbonded_deltast   nonbonded_residualst    inverse_power_repulsion_functionRÝ   t   gaussian_repulsion_functiont   nonbonded_residual_sumR   RŠ   R   R‹   t   nonbonded_asu_proxyR�   RŽ   RS   RT   R�   t   shared_nonbonded_asu_proxyRë   Rì   Rí   RÒ   RÈ   t   nonbonded_inverse_powerR	   RÀ   RÁ   RÜ   R¿   RÏ   t   iterRé   t   nonbonded_gaussiant   nonbonded_sorted_asu_proxiesR“   t   pow2Rz   Ry   R•   R–   R—   Rg   t   customized_copy(   RU   R<   t   psRà   R   R&   R   RE   R[   R¨   R©   t   fRì   RG   Rî   RÁ   t   pynbcR'   t   prt   expected_residualsRB   Ré   RH   R^   R_   Rª   R«   R    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_nonbondedö  sŽ   																		'									''			!''			!''		'*			!31:					$%		$*			!					(*			!4									
	
--$c    #   
   C   sU  t  j d d d d g d d d d ƒ }  d „  } | |  ƒ d	 |  _ d
 |  _ d |  _ t |  j d	 ƒ sm t ‚ t |  j d
 ƒ s… t ‚ t |  j d ƒ s� t ‚ d |  _ d |  _ d |  _ | |  ƒ t  j d d d d g d d  d d d d ƒ }  | |  ƒ |  j ƒ  }  |  j	 dO k st ‚ t  j d d d d g d |  ƒ } | j	 dP k sPt ‚ | j
 d  k set ‚ t | j d ƒ s}t ‚ t | j d ƒ s•t ‚ |  j d d ƒ } | j	 dQ k s¼t ‚ | j
 d  k sÑt ‚ t | j d ƒ sét ‚ t | j d ƒ st ‚ t  j d dR dS dT g d d d d ƒ } t | j dU dV dW g ƒ sIt ‚ t | j d ƒ sat ‚ t | j d ƒ syt ‚ | j sˆt ‚ t | j d ƒ s t ‚ t | j d ƒ s¸t ‚ t | j ƒ  d ƒ sÓt ‚ t | j d d ƒ dX dY dZ f ƒ sýt ‚ | j d k st ‚ t j d[ d\ d] g ƒ } t  j d | d |  ƒ } t | j d^ d_ d` g ƒ sct ‚ t | j d ƒ s{t ‚ t | j d ƒ s“t ‚ | j s¢t ‚ t | j d ƒ sºt ‚ t  j |  |  g ƒ } x& | D] } t | j d ƒ sÖt ‚ qÖWt t  j d | d | ƒ d g d ƒ s&t ‚ t t  j d | d | ƒ d g d ƒ sTt ‚ t  j d | d | d d  ƒ } t | da ƒ s‡t ‚ t j d ƒ t j ƒ  t j ƒ  f } t  j d d d d g d | d d d d ƒ }  |  j	 db k sít ‚ |  j
 | k st ‚ t  j d d d d g d |  ƒ } | j	 dc k s8t ‚ | j
 | k sMt ‚ t | j d ƒ set ‚ t | j d ƒ s}t ‚ |  j d d ƒ } | j
 | k s¤t ‚ t | j d ƒ s¼t ‚ |  j ƒ  }  |  j	 dd k sÝt ‚ |  j
 t j ƒ  t j ƒ  t j d ƒ f k st ‚ t |  j d ƒ s(t ‚ t |  j d ƒ s@t ‚ t j d  d d! d d d g ƒ }	 t j de df dg g ƒ } t  j d# |	 d | d |  ƒ } t | j dh di dj g ƒ s¸t ‚ t | j d ƒ sÐt ‚ t | j d ƒ sèt ‚ | j s÷t ‚ t | j d ƒ st ‚ t | j d ƒ s't ‚ t | j ƒ  | j | j d ƒ sPt ‚ t  j ƒ  } x! t d% ƒ D] }
 | j |  ƒ qiWt t  j d# |	 d | d | ƒ d g d% ƒ s´t ‚ t t  j d# |	 d | d | ƒ d g d% ƒ sèt ‚ t j d g d% ƒ } t  j d# |	 d | d | d d  ƒ } t | dk ƒ s7t ‚ t  j d d d d g d | d d d d ƒ } | j
 | k syt ‚ t  j d# |	 d | d | ƒ } t  j d d d d g d d d d ƒ } | j
 d  k sÓt ‚ t  j d | d | ƒ } t  j | | g ƒ } t t  j d# |	 d | d | ƒ | j | j g ƒ s9	t ‚ t t  j d# |	 d | d | ƒ | j ƒ  | j ƒ  g ƒ sx	t ‚ t  j d# |	 d | d | d d  ƒ } t | | j ƒ  | j ƒ  ƒ sÁ	t ‚ t  j t  j d d d g d d ƒ t  j d d d g d d ƒ t  j d d d g d d ƒ t  j d d d g d d ƒ g ƒ } | j  d& d d' t j! d d g ƒ ƒ } | j" ƒ  d k s{
t ‚ | j  d& d d' t j! d d d g ƒ ƒ } | j" ƒ  d k s½
t ‚ | d j	 dl k sÖ
t ‚ | j  d& d d' t j! d d d g ƒ ƒ } | j" ƒ  d k st ‚ | d j	 dm k s1t ‚ | j  d& d d' t j! d d d g ƒ ƒ } | j" ƒ  d k sst ‚ | d j	 dn k sŒt ‚ | d j	 do k s¥t ‚ t | d j d ƒ sÁt ‚ t | d j d ƒ sÝt ‚ t | d j d ƒ sùt ‚ t | d j d ƒ st ‚ | j  d& d d' t j! d d d d g ƒ ƒ } | j" ƒ  d k sZt ‚ | j# d( t j$ t% t% t% t% g ƒ ƒ } | j" ƒ  d k s™t ‚ | j# d( t j$ t& t% t% t% g ƒ ƒ } | j" ƒ  d k sØt ‚ | d j	 dp k sñt ‚ | d j	 dq k s
t ‚ | j# d( t j$ t% t% t% t& g ƒ ƒ } | j" ƒ  d k sIt ‚ t j d  d) d* d d+ d g ƒ }	 t j dr ds dt g ƒ } t j d5 ƒ } t j ƒ  } d d d g } | | | g } | | | g } t  j d | d | d d6 d d ƒ } t  j d | d | d d6 d d ƒ } t  j d# |	 d | d | ƒ } t  j d# |	 d | d | ƒ } t | j | j ƒ sit ‚ t | j ƒ  | j ƒ  ƒ sŠt ‚ t' | j ƒ  | j ƒ  ƒ s«t ‚ t | j( ƒ  du dv dw dx dy dz g ƒ sØt ‚ t j | j" ƒ  ƒ } t  j d# |	 d | d t  j | g ƒ d | ƒ } t j | j" ƒ  ƒ } t  j d# |	 d | d t  j | g ƒ d | ƒ } x2 t) | | ƒ D]! \ } } t | | ƒ srt ‚ qrWt* dI t  j d# |	 d | d | ƒ }  x2 t) | |  ƒ D]! \ }! }" t |! |" ƒ sËt ‚ qËWt  j d d{ d| d} g d d d d dJ d ƒ } t | j d ƒ s5t ‚ t | j d ƒ sMt ‚ t | j+ d ƒ set ‚ t | j ƒ  d ƒ s€t ‚ t  j d d~ d d€ g d d d d dJ d ƒ } t | j d ƒ sÅt ‚ t | j+ d ƒ sÝt ‚ t  j d d� d‚ dƒ g d d d d dJ d ƒ } t | j d ƒ s"t ‚ t | j+ d ƒ s:t ‚ t  j d d„ d… d† g d d d d dJ dK ƒ } t | j d ƒ st ‚ t | j+ d ƒ s—t ‚ t  j d d‡ dˆ d‰ g d dL d d dJ d ƒ } t | j dM ƒ sÜt ‚ t | j+ dN ƒ sôt ‚ t  j d dŠ d‹ dŒ g d dL d d dJ d ƒ } t | j dM ƒ s9t ‚ t | j+ dM ƒ sQt ‚ d  S(�   NR"   i   i   i    t   angle_ideali_   RO   c         S   ss   |  j  d k s t ‚ |  j d  k s* t ‚ t |  j d ƒ sB t ‚ t |  j d ƒ sZ t ‚ |  j d k so t ‚ d  S(   Ni   i   i    i_   g        (   i   i   i    (   R"   R*   R%   R   R   R
  RO   Rd   (   R<   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   checkN  s
    iV   iN   i   R%   i   i   i   R   RP   g…ëQ¸	@RW   iZ   i   t   epsilong0Žä.ÿ++g        g;Y~�©ç�@g;Y~�©ç�ÀR   R&   R'   s
   -1+x,+y,+zgHáz®G@i   i   i   R   iÿÿÿÿi
   RX   RQ   RR   g      '@g     @0@g     àX@g=
×£p½)@gš™™™™™¹?g®Gáz"@g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@s
   2-X,-Y,1-Zix   gtßl_”žT@gILÇãÔÕ#@gm¯#—Ö4qÀgðq§qûqÀgd/Î�¬O@g…ïâÕp›u@gbp-™§i@g;àäRÀg` ýúhšQÀg³¬Àü%%�@g'K°m2«aÀg¢l�Æ%©²@g{[ñuÁ´@gª­}¤JŠzÀg�7Ñ±	¾@gkÛá>J£¤@gŒ–&ŒGÇk@gÛ‰Ö´™Ûy@R   Rd   i   iU   iûÿÿÿiþÿÿÿ(   i    i   i   (   i   i   i   (   i    i   i   (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i    (   i    i    i    (   i    i   i    (   g        g;Y~�©ç�@g        (   g;Y~�©ç�Àg;Y~�©ç�Àg        (   g;Y~�©ç�@g        g        (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i    (   i    i    i    (   i    i   i    i2   (   i   i   i    (   i   i   i   (   i    i   i   (   i   i    i    (   i    i   i    (   i   i    i    (   i   i    i    (   i    i   i    (   iÿÿÿÿi    i    iú   (   i    i   i   (   i   i   i    (   i    i   i   (   i   i    i   (   i    i   i   (   i   i   i    (   g=
×£p½)@gš™™™™™¹?g®Gáz"@(   g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@(   gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@(   gtßl_”žT@gILÇãÔÕ#@gm¯#—Ö4qÀ(   gðq§qûqÀgd/Î�¬O@g…ïâÕp›u@(   gbp-™§i@g;àäRÀg` ýúhšQÀ(   g³¬Àü%%�@g'K°m2«aÀg¢l�Æ%©²@(   g{[ñuÁ´@gª­}¤JŠzÀg�7Ñ±	¾@(   gkÛá>J£¤@gŒ–&ŒGÇk@gÛ‰Ö´™Ûy@(   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i    (   i    i    i    (   i    i   i    (,   R   t   angle_proxyR
  RO   Rd   R   R*   R   R~   R"   R%   Rq   t   angleRW   t   have_angle_modelt   angle_modelR>   R   R3   R   R4   t   shared_angle_proxyt   angle_deltast   angle_residualst   angle_residual_sumR   R5   R   R   R.   R   RÓ   Rt   Ru   R:   Rw   Rx   Ry   Rz   R	   t   grads_and_curvsR;   R!   R�   (#   R<   R  R    t   aR   R&   R   RE   R%   R   R   R'   RI   t	   angle_symRK   t   angle_no_symt   selectedR¤   R5   t   u_mxR"   t	   a_sym_opst	   b_sym_opst   a_proxyt   b_proxyt   a_anglet   b_anglet   a_gradient_arrayt   a_residual_sumt   b_gradient_arrayt   b_residual_sumRC   RF   RG   RH   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_angleH  sL   			
						
		
				!		!		$				3!		!) 										!'		%$'***-'''!								!!																		c    4      C   sW  t  j ƒ  }  |  t  j d ƒ |  t  j d ƒ f } t j d d d d d g d | d	 d
 d d d d d d g ƒ } | j dj k s„ t ‚ | j | k s™ t ‚ | j dk k s® t ‚ t j d d d d d g d | ƒ } | j dl k sç t ‚ | j | k sü t ‚ t | j	 d
 ƒ st ‚ t | j
 d ƒ s,t ‚ | j d k sAt ‚ | j dm k sVt ‚ | j d d ƒ } | j dn k s}t ‚ | j | k s’t ‚ t | j
 d ƒ sªt ‚ | j do k s¿t ‚ | j ƒ  } | j dp k sàt ‚ | j t  j d ƒ |  t  j d ƒ |  f k st ‚ t | j	 d
 ƒ s+t ‚ t | j
 d ƒ sCt ‚ | j d k sXt ‚ | j dq k smt ‚ d | _	 d | _
 d | _ d  | _ t | j	 d ƒ s©t ‚ t | j
 d ƒ sÁt ‚ | j d k sÖt ‚ | j d  k sët ‚ d
 | _	 d | _
 d | _ dr | _ t | j	 d
 ƒ s't ‚ t | j
 d ƒ s?t ‚ | j d k sTt ‚ | j ds k sit ‚ t  j ƒ  }  |  |  t  j d ƒ t  j d ƒ f } t j d d d d d d g ƒ } t j dt du dv dw g ƒ } x�d d d g D]Œ} t j d d d d d g d | d	 d d d d | ƒ } t j d | d  | d | ƒ } t | j dx dy dz d{ g ƒ sct ‚ t | j	 d ƒ s{t ‚ t | j
 d ƒ s“t ‚ | j s¢t ‚ t | j d ƒ sºt ‚ t | j d" ƒ sÒt ‚ | d k r)t | j ƒ  d ƒ sùt ‚ t | j d# d$ ƒ d| d} d~ d f ƒ sqt ‚ qåt | j ƒ  d' ƒ sDt ‚ t | j d# d$ ƒ d€ d� d‚ dƒ f ƒ såt ‚ qåWt j d d d d d g d | d	 d d d d d ƒ } t j | | g ƒ } | j ƒ  d k sØt ‚ t t j d | d  | d+ | ƒ d" g d ƒ st ‚ t t j d | d  | d+ | ƒ d g d ƒ s@t ‚ t j d | d  | d+ | d, d  ƒ }	 t |	 d„ ƒ syt ‚ t j d d d d d g d | d	 d d d ƒ }
 |
 j | k s¾t ‚ t j d | d  | d |
 ƒ } t j d d d d d g d	 d d d ƒ } | j d  k st ‚ t j d  | d | ƒ } t j |
 | g ƒ } t t j d | d  | d+ | ƒ | j | j g ƒ s�t ‚ t t j d | d  | d+ | ƒ | j ƒ  | j ƒ  g ƒ sÀt ‚ t j d | d  | d+ | d, d  ƒ }	 t |	 | j ƒ  | j ƒ  ƒ s	t ‚ t j d d- d. d d/ d g ƒ } t j d… d† d‡ g ƒ } t  j d9 ƒ } t  j ƒ  }  d d d d g } |  |  |  | g } |  | | | g } t j d | d | d	 d d d ƒ } t j d | d | d	 d d d ƒ } t j d | d  | d | ƒ } t j d | d  | d | ƒ } t | j | j ƒ s2	t ‚ t | j ƒ  | j ƒ  ƒ sS	t ‚ t | j ƒ  | j ƒ  ƒ st	t ‚ t j | j  ƒ  ƒ } t j d | d  | d+ t j | g ƒ d, | ƒ } t j | j  ƒ  ƒ } t j d | d  | d+ t j | g ƒ d, | ƒ } x2 t! | | ƒ D]! \ } } t | | ƒ s
t ‚ q
Wt" d: t j d | d  | d | ƒ } x2 t! | | ƒ D]! \ } } t | | ƒ sg
t ‚ qg
Wt j d d d d d g d	 d
 d d d d; d d  ƒ } | j dˆ k s×
t ‚ | j ƒ  } | j d‰ k sø
t ‚ t | j	 d
 ƒ st ‚ t | j
 d ƒ s(t ‚ | j d; k s=t ‚ | j d  k sRt ‚ d | _	 d | _
 d | _ t | j	 d ƒ s…t ‚ t | j
 d ƒ s�t ‚ | j d k s²t ‚ d
 | _	 d | _
 d; | _ t | j	 d
 ƒ såt ‚ t | j
 d ƒ sýt ‚ | j d; k st ‚ t j d< dŠ d‹ dŒ d� g d	 d
 d d ƒ } t | j dŽ d� d� d‘ g ƒ s`t ‚ t | j	 d
 ƒ sxt ‚ t | j
 d ƒ s�t ‚ | j sŸt ‚ t | j d= ƒ s·t ‚ t | j d ƒ sÏt ‚ t | j ƒ  d ƒ sêt ‚ t | j d# d$ ƒ d’ d“ d” d• f ƒ st ‚ t j d– d— d˜ d™ g ƒ } t j d  | d | ƒ } t | j dš d› dœ d� g ƒ snt ‚ t | j	 d
 ƒ s†t ‚ t | j
 d ƒ sžt ‚ | j d; k s³t ‚ | j sÂt ‚ t | j d@ ƒ sÚt ‚ t | j d ƒ sòt ‚ t j | | g ƒ } x# | D] } | j d; k st ‚ qWd | d _ | d j d k sSt ‚ | d j d; k slt ‚ d; | d _ | d j d; k s’t ‚ t t j d  | d+ | ƒ d g d ƒ sÀt ‚ t t j d  | d+ | ƒ d g d ƒ sît ‚ t j d  | d+ | d, d  ƒ }	 t |	 dž ƒ s!t ‚ t j dŸ d  d¡ d¢ f ƒ } t j d< t# | ƒ d	 d d d ƒ }  t j$ t% dM ƒ ƒ }! d }" d }# d }$ xÞ| j& |! ƒ }% t j d< t# |% ƒ d	 d d d ƒ }& t' |& j |  j ƒ dN k  sõt' |& j |  j ƒ dN k  rÁ|# d 7}# t j d t# |! ƒ d	 |& j d d ƒ } t j d  | d | ƒ }' t |' j |& j ƒ sYt ‚ t' | j	 |  j ƒ dN k  r‚|$ d 7}$ n  | j ƒ  }( |( j d£ k s£t ‚ t |( j	 |  j ƒ sÁt ‚ n  t j d t# |! ƒ d	 dO d d d d d
 g ƒ } | j ƒ  }( |( j	 d k r-t |( j d d
 g ƒ sKt ‚ n t |( j dP dQ g ƒ sKt ‚ |" d 7}" |! j( ƒ  sŠPqŠqŠ|" d k szt ‚ |# dM k sŒt ‚ |$ d k sžt ‚ t j t j d d d d g d d d ƒ t j d d d dM g d d dM ƒ t j d d d dM g d dM d ƒ t j d d d dM g dM d d ƒ g ƒ } | j) dR d dS t j$ d d dM g ƒ ƒ }) |) j  ƒ  d k sst ‚ | j) dR d dS t j$ d d d dM g ƒ ƒ }) |) j  ƒ  d k s¸t ‚ |) d j d¤ k sÑt ‚ |) d j d¥ k sêt ‚ t |) d j	 d ƒ st ‚ t |) d j	 dM ƒ s"t ‚ t |) d j
 d ƒ s>t ‚ t |) d j
 d ƒ sZt ‚ |) d j dM k sst ‚ |) d j d k sŒt ‚ | j* dT t j+ t, t, t, t, t, g ƒ ƒ }* |* j  ƒ  d k sÎt ‚ | j* dT t j+ t- t, t, t, t, g ƒ ƒ }* |* j  ƒ  d k st ‚ |* d j d¦ k s)t ‚ |* d j d§ k sBt ‚ | j* dT t j+ t, t, t, t, t- g ƒ ƒ }* |* j  ƒ  d k s„t ‚ d  dU „ }+ x¤ t% d d ƒ D]“ } t. dV | dW ƒ }, xm | | g D]^ }- xK t% d d¨ d ƒ D]7 }. |+ d	 dY dZ |. d |- ƒ } |, |. I| j ƒ  IJqàW|, d[ IJqÇW|, j/ ƒ  q Wd\ }/ xÖt% d d© d ƒ D]Â}0 x¹t% d d ƒ D]¨} xÉ | | g D]º }- g  }1 xN d |/ |/ g D]< }2 |+ d	 |0 dZ |0 |2 | d |- ƒ } |1 j0 | j ƒ  ƒ q—Wt |1 d d ƒ sðt ‚ t |1 d |1 d ƒ st ‚ t |1 d | j
 | j d ƒ szt ‚ qzWxÓ |/ |/ g D]Ä }2 x» d dP g D]­ }3 g  }1 xO | | g D]@ }- |+ d	 |0 dZ |0 |2 |3 | d |- ƒ } |1 j0 | j ƒ  ƒ qsW|2 d k |3 d k  k rì|1 d |1 d k st ‚ qY|1 d |1 d k  sYt ‚ qYWqFWqfWqPW|+ d	 d dZ d] d d ƒ } t | j d^ ƒ sIt ‚ | j d  k s^t ‚ |+ d	 d dZ d] d d d dª ƒ } t | j d^ ƒ s—t ‚ |+ d	 d dZ d_ d d d d« ƒ } t | j d` ƒ sÐt ‚ |+ d	 d dZ d_ d d d d¬ ƒ } t | j da ƒ s	t ‚ |+ d	 d dZ d_ d d d d­ ƒ } t | j da ƒ sBt ‚ |+ d	 d dZ dc d d d d® ƒ } t | j dd ƒ s{t ‚ |+ d	 d dZ de d d ƒ } t | j df ƒ s®t ‚ |+ d	 d dZ dP d d ƒ } t | j dg ƒ sát ‚ |+ d	 d dZ de d d d d¯ ƒ } t | j df ƒ st ‚ |+ d	 d dZ dh d d d d° ƒ } t | j di ƒ sSt ‚ d  S(±   Ns	   1+X,+Y,+Zs   +X,-1+Y,2+ZR"   i   i   i   i    R%   R
  iØÿÿÿRO   t   periodicityt   alt_angle_idealsi´   i   i   i   R   RP   g®Gáz®×?i2   i   içÿÿÿs	   +X,1+Y,+Zi   i   iZ   i   iÿÿÿÿi¯   R   R   i   iûÿÿÿR  g0Žä.ÿ++g;Y~�©ç�@g;Y~�©ç�Àg‘;ãyôCB@g        g.ïƒ �%Š@g.ïƒ �%ŠÀR&   R'   g      '@g     @0@g     àX@g=
×£p½)@gš™™™™™¹?g®Gáz"@g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@s
   2-X,-Y,1-ZR   iþÿÿÿRW   iÓÿÿÿg;Y~�©çq@g;Y~�©çqÀi‡   gR¸…ëF@g5^ºIÀgP�—nƒ!@g�•C‹ÌE@g\�Âõ(\ ÀgÁÊ¡E¶s!@gX9´ÈE@g}?5^ºI Àg´Èv¾Ÿš"@gbX9´èD@g°rh‘í|ï¿gP�—n$@i   g�íµ ÷Æ°>i   iâÿÿÿi(   RX   RQ   RR   c   	      S   s×   | t  j d } t  j | ƒ t  j | ƒ } } t j d d d d | | d f g d |  d d d d
 | d | ƒ } t  j | j | d ƒ } | d k  r¥ | d 7} n  | d k r¾ | d 8} n  t | d ƒ sÓ t	 ‚ | S(   Ni´   RW   i   i    iÿÿÿÿR
  RO   i   i   R&  R'  ih  g:Œ0âŽyE>(   i   i    iÿÿÿÿ(   i    i    iÿÿÿÿ(   i    i    i    iá   gÎPýÿÿv@(
   R+   RÅ   RÆ   RÇ   R   t   dihedralt   fmodR  R   R*   (	   R
  R  R&  R'  R  R    R£   R¢   t   v(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   get_dÖ  s    	
	  s)   plot_geo_restr_dihedral_periodicity_%d.xyR@   iÐ  iF   R  t   &ix   iª   g      $@i
   g      $Àg      @iY  iöÿÿÿg      Ài   g       @g      N@iäÿÿÿg       À(   i   i   i   i    (   i´   (   i   i   i   i   (   i´   (   i   i   i   i    (   i´   (   i    i   i   i   (   i´   (   i   içÿÿÿ(   i   içÿÿÿ(   i   i   i    (   i   i   i    (   i   i   i    (   i    i   i    (   i   i   i    (   i   i   i    (   i   i   i    (   i    i   i    (   i    i    g;Y~�©ç�@(   i    i    g;Y~�©ç�À(   i    i    g;Y~�©ç�À(   i    i    g;Y~�©ç�@(   g        g        g.ïƒ �%Š@(   g        g        g.ïƒ �%ŠÀ(   g        g        g.ïƒ �%ŠÀ(   g        g        g.ïƒ �%Š@i2   (   g=
×£p½)@gš™™™™™¹?g®Gáz"@(   g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@(   gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@(   i   i   i   i    (   i    i   i   i   (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i   (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i   (   i    i    g;Y~�©ç�À(   g;Y~�©çq@i    g;Y~�©çq@(   i    i    i    (   g;Y~�©çqÀi    g;Y~�©çq@(   i   i    i    (   i    i    i    (   i    i   i    (   iÿÿÿÿi    iÿÿÿÿ(   i   i    i    (   i    i    i    (   i    i   i    (   iÿÿÿÿi    iÿÿÿÿi2   (   gR¸…ëF@g5^ºIÀgP�—nƒ!@(   g�•C‹ÌE@g\�Âõ(\ ÀgÁÊ¡E¶s!@(   gX9´ÈE@g}?5^ºI Àg´Èv¾Ÿš"@(   gbX9´èD@g°rh‘í|ï¿gP�—n$@(   i    i   i   i   (   i    i   i   i   (   i   i    i   i   (   i    i   i   i   (   i   i   i    i   iÑ  iÕ  (   i   (   i   (   i   (   i   iY  (   i   iY  (   iâÿÿÿ(   iâÿÿÿ(1   R   R5   R   t   dihedral_proxyR"   R*   R%   R'  R   R
  RO   R&  Rq   R~   R   R   R   R   R4   R(  RW   R  R  R>   R   R3   t   shared_dihedral_proxyt   count_harmonict   dihedral_deltast   dihedral_residualst   dihedral_residual_sumR	   R:   R;   R!   RÒ   Ru   R   t   selectRŸ   t   next_permutationRt   Rw   Rx   Ry   Rz   t   opent   closeR   (4   R  R%   R<   R    R   R   R&  R¢   R&   RE   RI   t   dihedral_symRK   t   dihedral_no_symR5   R"   R  R  R  R  t
   a_dihedralt
   b_dihedralR!  R"  R#  R$  R  RC   RF   RG   RH   R   t   r_origt   permt   n_permst   n_equivt   n_equiv_directt
   sites_permRà   t   rpt   p_sortedR  R¤   R+  R  t   signed_periodicityR  t   intersection_angleR
  t	   residualst   offsett   offset2(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_dihedral{  s   $			-								$!				$												!'		!								!!																$		$				
						!
!!!**-***		+	*							c       	   C   s�  t  j d d d d d g d d d t d	 d ƒ }  |  j d k sE t ‚ t |  j d ƒ s] t ‚ |  j sm t ‚ t |  j d ƒ s… t ‚ t  j d d
 d d d g d |  ƒ } | j d k s¾ t ‚ t | j d ƒ sÖ t ‚ | j sæ t ‚ t | j d ƒ sþ t ‚ |  j	 d d ƒ } | j d k s%t ‚ t | j d ƒ s=t ‚ |  j
 ƒ  }  |  j d k s^t ‚ t |  j d ƒ svt ‚ t  j d d d d d g d d d t d	 d ƒ }  t |  j d ƒ s¾t ‚ |  j
 ƒ  }  |  j d  k sßt ‚ t |  j d ƒ s÷t ‚ t  j d d! d" d# d$ g d d d t d	 d ƒ } t | j d% d& d' d( g ƒ sKt ‚ t | j d ƒ sct ‚ t | j d ƒ s{t ‚ | j s‹t ‚ t | j d ƒ s£t ‚ t | j d ƒ s»t ‚ t | j d ƒ sÓt ‚ t | j ƒ  d ƒ sît ‚ t | j ƒ  d) d* d+ d, f ƒ st ‚ t j d- d. d/ d0 g ƒ } t  j d | d |  ƒ } t | j d1 d2 d3 d4 g ƒ slt ‚ t | j d ƒ s„t ‚ t | j d ƒ sœt ‚ | j s¬t ‚ t | j d ƒ sÄt ‚ t | j d ƒ sÜt ‚ t | j d ƒ sôt ‚ t  j |  |  g ƒ } x# | D] } | j d k st ‚ qWt t  j d | d | ƒ d g d ƒ s]t ‚ t t  j d | d | ƒ d
 g d ƒ s‹t ‚ t  j d | d | d d  ƒ } t | d5 ƒ s¾t ‚ t  j t  j d d d d g d t d ƒ t  j d d d d g d t d ƒ t  j d d d d g d t d ƒ t  j d d d d g d t d ƒ g ƒ } | j d d d t j d d d g ƒ ƒ } | j ƒ  d k s“t ‚ | j d d d t j d d d d g ƒ ƒ } | j ƒ  d k sØt ‚ | d j d6 k sñt ‚ | d j d7 k s
t ‚ t | d j d ƒ s&t ‚ t | d j d ƒ sBt ‚ | d j sUt ‚ | d j sit ‚ t | d j d ƒ s…t ‚ t | d j d ƒ s¡t ‚ | j d t j t t t t t g ƒ ƒ } | j ƒ  d k sãt ‚ | j d t j t t t t t g ƒ ƒ } | j ƒ  d k s%t ‚ | d j d8 k s>t ‚ | d j d9 k sWt ‚ | j d t j t t t t t g ƒ ƒ } | j ƒ  d k s™t ‚ d  S(:   NR"   i    i   i   i   t   volume_ideali   t
   both_signsRO   i	   i   R   RP   g¤p=
×£"@iüÿÿÿRW   iÿÿÿÿi   i   i
   iöÿÿÿR   R&   R'   RX   RQ   RR   (   i    i   i   i   (   i	   i    i   i   (   i    i   i   i   (   i    i   i   i   (   i    i   i   i   (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i   (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i   (   i
   i    iöÿÿÿ(   iöÿÿÿiöÿÿÿi    (   i    i
   i    (   i    i    i
   (   i   i    i    (   i    i    i    (   i    i   i    (   iÿÿÿÿi    iÿÿÿÿ(   i   i    i    (   i    i    i    (   i    i   i    (   iÿÿÿÿi    iÿÿÿÿi   (   i    i   i   i   (   i   i    i   i   (   i    i   i   i   (   i   i   i    i   (   R   t   chirality_proxyRz   R"   R*   R   RI  RJ  RO   Rq   R~   t	   chiralityRW   t   volume_modelt
   delta_signR>   R   R3   R   R4   t   shared_chirality_proxyt   chirality_deltast   chirality_residualst   chirality_residual_sumR   Ry   Rt   Ru   R:   Rw   Rx   (   R<   R    R   R&   R   RE   R  R¤   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_chirality,  sÆ    								$		$		!!!**-***c    !   
   C   s=  t  j d d d d g ƒ }  t j ƒ  } | t j d ƒ | t j d ƒ f } t j d t  j d d d d g ƒ d	 | d
 |  ƒ } t | j ƒ dl k s™ t	 ‚ t | j
 ƒ | k s´ t	 ‚ t | j |  ƒ sÌ t	 ‚ t j d t  j d d d d g ƒ d | ƒ } t | j ƒ dm k st	 ‚ | j
 | k s)t	 ‚ | j d d ƒ } | j j ƒ  | j j ƒ  k s_t	 ‚ | j j ƒ  | j j ƒ  k sƒt	 ‚ t | j | j d ƒ s¢t	 ‚ | j ƒ  } t | j ƒ dn k sÉt	 ‚ t | j ƒ do k sät	 ‚ t | j
 ƒ | t j d ƒ t j d ƒ | f k st	 ‚ t j d d d d d d g ƒ } t  j dp dq dr ds g ƒ } d } dt du dv dw g } t j d dx d	 | t j d ƒ t j d ƒ t j d ƒ g d
 dy ƒ } t j d | d | d | ƒ }	 t |	 j ƒ  dz ƒ sït	 ‚ t |	 j ƒ  d ƒ s
t	 ‚ t |	 j ƒ  | ƒ s%t	 ‚ t j | | g ƒ }
 x) |
 D]! } t | j ƒ d{ k sAt	 ‚ qAWt t j d | d | d" |
 ƒ d# g d ƒ sšt	 ‚ t t j d | d | d" |
 ƒ | g d ƒ sÎt	 ‚ t j d | d | d" |
 d$ d  ƒ } t | d | ƒ st	 ‚ t  j | j j ƒ  d| ƒ } t j d | d | d" |
 d$ | ƒ } t | d} ƒ s_t	 ‚ x? t | | ƒ D]. \ } } t | t j  | ƒ d ƒ sot	 ‚ qoWt  j d~ d d€ d� g ƒ } t  j d d d d g ƒ }  d1 } d‚ dƒ d„ d… g } t j d t  j d d d d g ƒ d
 |  ƒ } t | j ƒ d† k s7t	 ‚ t | j |  ƒ sOt	 ‚ t  j d d d d g ƒ } t j d t  j d d d d g ƒ j! | ƒ d
 |  j! | ƒ ƒ } t | j ƒ d‡ k sÄt	 ‚ t" | j |  ƒ sÜt	 ‚ | j ƒ  } t | j ƒ dˆ k st	 ‚ t | j |  ƒ st	 ‚ x¸t# d ƒ D]ª} | d k rUt j d> | d
 |  ƒ } n t j d | d | ƒ } t | j$ | ƒ s…t	 ‚ t | j |  ƒ s�t	 ‚ t | j ƒ  d‰ ƒ s¸t	 ‚ t | j% ƒ  dC ƒ sÓt	 ‚ t | j ƒ  | ƒ sît	 ‚ t | j ƒ  | ƒ s	t	 ‚ t | j& ƒ  dŠ ƒ s$t	 ‚ t | j ƒ  | j' ƒ  ƒ sEt	 ‚ t | j( ƒ  d‹ ƒ s`t	 ‚ t | j( ƒ  | j$ j) d
 | j ƒ ƒ s�t	 ‚ t | j* ƒ  dŒ ƒ s¨t	 ‚ t | j+ ƒ  j, ƒ  dP dQ dR g ƒ s(t	 ‚ q(Wt j | | g ƒ }
 x) |
 D]! } t | j ƒ d� k sòt	 ‚ qòWt t j d | d" |
 ƒ dS g d ƒ sEt	 ‚ t t j d | d" |
 ƒ | g d ƒ sst	 ‚ t j d | d" |
 d$ d  ƒ } t | d | ƒ sªt	 ‚ t  j | j j ƒ  dŽ ƒ } t j d | d" |
 d$ | ƒ } t | d | ƒ süt	 ‚ x? t | | ƒ D]. \ } } t | t j  | ƒ d ƒ s	t	 ‚ q	WdT „  } t j | d d d d g d d d dU g ƒ | d d d d g d d dU d g ƒ | d d d d g d dU d dV g ƒ | d d d d g dU d dV d g ƒ g ƒ }
 |
 j- dW dU dX t  j d d d g ƒ ƒ } | j ƒ  d k s(
t	 ‚ |
 j- dW dU dX t  j d d d d g ƒ ƒ } | j ƒ  d k sm
t	 ‚ t. | d j ƒ d d d d g k s˜
t	 ‚ t. | d j ƒ d d d d g k sÃ
t	 ‚ t | d j d d dU d g ƒ së
t	 ‚ t | d j dU d dV d g ƒ st	 ‚ xt/ dY d ƒ D]} t  j t/ dY | ƒ t/ | d d ƒ ƒ } t j d t  j dY dZ d[ d\ d g ƒ d
 t  j t/ dU ƒ ƒ d\ ƒ } t j ƒ  } | j0 | ƒ | j- d] | ƒ } t. | d j ƒ d d d d g k sët	 ‚ t | d j | j | dY  j1 | j | d dY ƒ ƒ s#t	 ‚ q#W|
 j2 d^ t  j3 t4 t4 t4 t4 t4 g ƒ ƒ } | j ƒ  d k spt	 ‚ |
 j2 d^ t  j3 t5 t4 t4 t4 t4 g ƒ ƒ } | j ƒ  d k s²t	 ‚ t. | d j ƒ d d d d g k sÝt	 ‚ t. | d j ƒ d d d d g k st	 ‚ |
 j2 d^ t  j3 t4 t4 t4 t4 t5 g ƒ ƒ } | j ƒ  d k sJt	 ‚ t j d d_ d` d da d g ƒ } t  j d� d� d‘ g ƒ } t j dj ƒ } t j ƒ  } t  j d d d d d d g ƒ } | | | | | | f } t  j d g d ƒ }  t j d | d	 | d
 |  ƒ } t j d | d | d | ƒ }	 t  j | j ƒ  ƒ } t j d | d | d" t j | g ƒ d$ | ƒ } t6 dk t j d | d | d | ƒ } x2 t | | ƒ D]! \ } } t | | ƒ s¢t	 ‚ q¢Wt j d | d	 | d
 |  ƒ } | j
 | k sút	 ‚ t j d | d | d | ƒ } t j d | d
 |  ƒ } | j
 d  k sEt	 ‚ t j d | d | ƒ }  t j | | g ƒ }
 t t j d | d | d" |
 ƒ | j% ƒ  |  j% ƒ  g ƒ s±t	 ‚ t t j d | d | d" |
 ƒ | j ƒ  |  j ƒ  g ƒ sðt	 ‚ t j d | d | d" |
 d$ d  ƒ } t | | j ƒ  |  j ƒ  ƒ s9t	 ‚ d  S(’   Ni   i   i   i   s   1+x,y,zs	   1+x,1+y,zR"   i    R%   R#   i   i   R   RP   gÃõ(\�Â@i   i   i   iZ   i   gš™™™™™ñ?i   gÍÌÌÌÌÌì?g{®Gáz¤?gš™™™™™Ù?gš™™™™™Ù¿s   x,y,zs   x,1+y,zs   1-x,y,zR   R   gš™™™™™¹?gš™™™™™¹¿R&   gcÿQ²?R'   gæ¨F~³šÀgtÖ¸¥áÓô?g}Q®™&÷¿gýtFnÊÀg¬`??Oð¿g}5åÛÄ?g%¾ßÖÀgG žà!cå¿gš‘b3rû¿g½ûÐ‘ÞbÀg$óG;#Òî?gûÎq³æzà?g,?ÖK}<?gùÁÙ±I$”?gqS@±Cd?gý¼œ€@ë”¿gêº	-Ý~”?g	]G})žd?glà7¶RI•¿gû2­ÞÁ”¿gå�¶�ád¿g{�}éŽ•?g'I6ÊHá“¿g´Êùw¤ÿc¿gœ!D¹©¥”?RW   gƒ ÖsU&�?gž·Yk©}?g‘úµ×ìt¿g1¿žA]Ål¿gƒúú¬çy�?g§Øxæ?g±•<>¶?gÜq.Oãöæ¿gº®–ÓÀgS…Ã­Wn¼?g ƒ¯7øìÚ¿g®øù(€$@gºØóhf!@gÈÀ¹]É‡$@g¦{©�‡È@gIæV£Áe$@gŒØº|f@gw8M'†ÿ5@g-« -Þ@g\ÖK}<?gòú¬çy�?c         S   s"   t  j t j |  ƒ t j | ƒ ƒ S(   N(   R   t   planarity_proxyR   Ru   RÓ   (   R"   R#   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt
   make_proxy#  s    i   i   RX   RQ   i
   i   i   i   i   RR   g      '@g     @0@g     àX@g=
×£p½)@g®Gáz"@g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@s
   2-X,-Y,1-ZR   (   i   i   i    i   (   i   i   i   i   (   i    i   i   i   (   i   i   i   i   (   i   i   gš™™™™™ñ?(   i   i   i   (   i   i   i   (   i   i   gÍÌÌÌÌÌì?(   i    i    gš™™™™™Ù?(   i    i    i    (   i    i    i    (   i    i    gš™™™™™Ù¿(   i    i   i   i   (   i   i   i   i   (   gš™™™™™¹?i    i    gš™™™™™¹¿(   i    i   i   i   (   i    i    i    g{®Gáz´?(   gæ¨F~³šÀgtÖ¸¥áÓô?g}Q®™&÷¿(   gýtFnÊÀg¬`??Oð¿g}5åÛÄ?(   g%¾ßÖÀgG žà!cå¿gš‘b3rû¿(   g½ûÐ‘ÞbÀg$óG;#Òî?gûÎq³æzà?(   gùÁÙ±I$”?gqS@±Cd?gý¼œ€@ë”¿(   gêº	-Ý~”?g	]G})žd?glà7¶RI•¿(   gû2­ÞÁ”¿gå�¶�ád¿g{�}éŽ•?(   g'I6ÊHá“¿g´Êùw¤ÿc¿gœ!D¹©¥”?(   i    i   i   i   (   i   i   i    i   (   i    i   i   i   (   gƒ ÖsU&�?gž·Yk©}?g‘úµ×ìt¿g1¿žA]Ål¿(   g§Øxæ?g±•<>¶?gÜq.Oãöæ¿(   gº®–ÓÀgS…Ã­Wn¼?g ƒ¯7øìÚ¿(   g®øù(€$@gºØóhf!@gÈÀ¹]É‡$@g¦{©�‡È@gIæV£Áe$@gŒØº|f@(   i    i   i   i   (   i    i    i    (   g=
×£p½)@gš™™™™™¹?g®Gáz"@(   g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@(   gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@(7   R   RÓ   R   R5   R   RT  Ru   R)   R"   R*   R%   R   R#   t   scale_weightst   idR~   R   R   R4   t	   planarityR1   R   R3   t   shared_planarity_proxyR
   t   planarity_deltas_rmst   planarity_residualst   planarity_residual_sumR   R:   R;   R   R   R3  R	   R   RW   R2   t   normalt
   lambda_mint   center_of_masst   mean_weightedt   residual_tensort   eigensystemR„   Rt   RÒ   R.   R   t   concatenateRw   Rx   Ry   Rz   R!   (!   R#   R  R%   R<   R    R   R   RA   RB   RX  R&   R   RE   R'   RG   RH   R<  t   i_constructort   lRU  R  t   i_removet   selt   ppt   ppsR¤   R5   R"   RF   RI   RJ   RK   RL   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_planarity“  sÌ   $				$$9!	-							&				$			!- 				&	$$$-*-++(()	+6**++*!!																''		c          C   s£  t  j j d ƒ r. t  j d  d� k  r. d GHd  St j d d� d
 d ƒ }  |  j ƒ  j ƒ  t j	 d‘ d’ g ƒ } |  j
 d d ƒ } | j d | ƒ t j d | ƒ } | j d d ƒ t j d | ƒ } t ƒ  } | j d d d | d | ƒ t | j ƒ  d ƒ st ‚ t j d | ƒ } t j d d ƒ } xk | j D]` } d | j ƒ  d  d! | _ d" | j ƒ  d# | _ | j ƒ  d  k r0| j ƒ  d$ | _ q0q0Wt ƒ  } | j d d d | d% d& d' g d | ƒ t | j ƒ  d( ƒ sát ‚ t ƒ  } | j d d d | d | d) d* d+ d ƒ t | j ƒ  d, ƒ s.t ‚ t ƒ  } | j d d d | d | d) d- d+ d. ƒ t | j ƒ  d/ ƒ s{t ‚ x¯ d  t j d0 d1 d2 d	 d3 d	 g ƒ g D]† } t j t j d“ d4 d5 ƒ t j d” t j  d6 ƒ d7 d8 ƒ g ƒ }	 t ƒ  } |	 j d | d | d | ƒt | j ƒ  d9 ƒ s£t ‚ q£Wt j d d: ƒ } t j	 | j d; d< ƒ ƒ }
 d= d> d? d@ dA d g } t j! ƒ  } t ƒ  } | j d d d t j	 ƒ  d | ƒ t | j ƒ  dB ƒ sÅt ‚ t j! t j" dC d d" d. g dD dE dF d ƒ t j" dC dG d. d" g dD dH dF dI ƒ g ƒ } t ƒ  } | j d d d |
 d | d) dJ ƒ t | j ƒ  dK ƒ sct ‚ t ƒ  } | j d dL d |
 d% | d | d) dM d+ d" ƒ t | j ƒ  dN ƒ s¶t ‚ t ƒ  } | j d d d |
 d | d+ d. ƒ t | j ƒ  dO ƒ sýt ‚ t j# ƒ  } t ƒ  } | j d d d t j	 ƒ  d | ƒ t | j ƒ  dP ƒ sPt ‚ t j# t j$ dC d. d" dG dQ g dD dE dF d dR dS ƒ t j$ dC dG d d. d g dD dH dF dI dR dS ƒ g ƒ } t ƒ  } | j d d d |
 d | d) dT ƒ t | j ƒ  dU ƒ s t ‚ t ƒ  } | j d dL d |
 d% | d | d) dV d+ d" ƒ t | j ƒ  dW ƒ sSt ‚ t ƒ  } | j d d d |
 d | d+ d. ƒ t | j ƒ  dX ƒ sšt ‚ t j% ƒ  } t ƒ  } | j d d d t j	 ƒ  d | ƒ t | j ƒ  dY ƒ sít ‚ t j% t j& dC d. d" dG dQ g dZ d[ d\ t' dF d ƒ t j& dC dG d d. d g dZ d] d\ t( dF dI ƒ g ƒ } t ƒ  } | j d d d |
 d | d) d^ ƒ t | j ƒ  d_ ƒ s�t ‚ t ƒ  } | j d dL d |
 d% | d | d) d- d+ d" ƒ t | j ƒ  d` ƒ sðt ‚ t ƒ  } | j d d d |
 d | d+ d. ƒ t | j ƒ  da ƒ s7t ‚ t j) ƒ  } t ƒ  } | j d d d t j	 ƒ  d | ƒ t | j ƒ  db ƒ sŠt ‚ t j) t j* dC d. d dQ d" g dc dd d! dd de g ƒ t j* dC d. d dG dQ d g dc df dg dh dd di g ƒ g ƒ } t ƒ  } | j d d d |
 d | d) dj ƒ t | j ƒ  dk ƒ s@	t ‚ t ƒ  } | j d dl d |
 d% | d | d) dm d+ d" ƒ t | j ƒ  dn ƒ s“	t ‚ t ƒ  } | j d d d |
 d | d+ d. ƒ t | j ƒ  do ƒ sÚ	t ‚ t j d0 d1 d2 d	 d3 d	 g ƒ } t j	 d• d– d— d˜ g ƒ }
 t j  dx ƒ } t j  ƒ  } t j" dC d d. d" g dy | | | g dD dz dF d" ƒ } t j! | | g ƒ } t ƒ  } | j d d d | d |
 d | d) d{ ƒ t | j ƒ  d| ƒ sÉ
t ‚ t j" dC d d" d. g dD dE dF d ƒ } t j! | | g ƒ } t ƒ  } | j d dL d | d |
 d | d) d} ƒ t | j ƒ  d~ ƒ sRt ‚ t j$ dC d d. d" d g dy | | | | g dD d. dF d" ƒ } t j# | | g ƒ } t ƒ  } | j d dL d | d |
 d | d) d ƒ t | j ƒ  d€ ƒ sðt ‚ t j* dC t j+ d. d" d d. d" d g ƒ dy | | | | | | g dc t j, d" g d ƒ ƒ } t j) | | g ƒ } t ƒ  } | j d d d | d |
 d | d) d� ƒ t | j ƒ  d‚ ƒ s­t ‚ t j* dC d. d dG d" g dc dd d! dd de g ƒ } t j) | | g ƒ } t ƒ  } | j d dl d | d |
 d | d) dƒ ƒ t | j ƒ  d„ ƒ s?t ‚ t j d0 d… d† d	 d	 d	 g ƒ } t j	 d™ dš d› dœ d� dž g ƒ }
 t j- dC dŸ d  d¡ g dy | | t j  dŒ ƒ g dc d¢ ƒ } t j. | | g ƒ } t ƒ  } | j d d d | d |
 d | d) d� ƒ t | j ƒ  d� ƒ st ‚ t ƒ  } t j- dC d£ d¤ d¥ g dc d¦ ƒ } t j. | | g ƒ } | j d dl d |
 d% | d | d) d� ƒ t | j ƒ  dŽ ƒ sŸt ‚ d  S(§   Nt   wini   i   s   Skipping exercise_proxy_show()R   gJ+‡–/@g¶óýÔxi"@g!°rh‘-!@iZ   t   space_group_symbols   C m c mg£’:M„Å?g¿}8gDå?g³êsµûÛ?g        gûËîÉÃBå?gˆc]ÜFâ?t   buffer_thicknessg      @t   original_sitesR[   R\   g333333@t   by_valueR   R   R  s   Bond restraints: 0
R`   Rc   i   g      à?gš™™™™™É?i   id   gš™™™™™¹?t   site_labelst   Si1t   Si2sÊ  Bond restraints: 3
Sorted by residual:
bond Si1
     Si2
  ideal  model  slack  delta    sigma   weight residual sym.op.
  2.979  2.866  0.004  0.112 1.71e-01 3.42e+01 4.01e-01 x,y,z
bond Si2
     Si1
  ideal  model  slack  delta    sigma   weight residual sym.op.
  2.822  2.866  0.042 -0.045 1.29e-01 6.05e+01 4.35e-04 x,y,z
bond Si2
     Si1
  ideal  model  delta    sigma   weight residual sym.op.
  2.867  2.866  0.001 1.26e-01 6.33e+01 6.17e-05 -x,y,z
t   prefixR,  t	   max_itemssf  &Bond restraints: 3
&Sorted by residual:
&bond 0
&     1
&  ideal  model  slack  delta    sigma   weight residual sym.op.
&  2.979  2.866  0.004  0.112 1.71e-01 3.42e+01 4.01e-01 x,y,z
&bond 1
&     0
&  ideal  model  slack  delta    sigma   weight residual sym.op.
&  2.822  2.866  0.042 -0.045 1.29e-01 6.05e+01 4.35e-04 x,y,z
&... (remaining 1 not shown)
t   *i    s   *Bond restraints: 3
i   g      '@g     @0@g     àX@g¢E¶óýÔ@i
   s   x,y,zgú~j¼t“@iú   s  Bond restraints: 2
Sorted by residual:
bond 1
     0
  ideal  model  delta    sigma   weight residual sym.op.
  2.822  2.866 -0.044 6.32e-02 2.50e+02 4.86e-01 x,y,z
bond 0
     1
  ideal  model  delta    sigma   weight residual
  2.979  2.866  0.113 3.16e-01 1.00e+01 1.27e-01
iI   R:   i   R  t   baR    t   dadaRH   s   Bond angle restraints: 0
R"   R
  i;   RO   i   ic   i   t   +s=  +Bond angle restraints: 2
+Sorted by residual:
+angle 3
+      0
+      1
+    ideal   model   delta    sigma   weight residual
+    99.00   99.72   -0.72 3.54e-01 8.00e+00 4.19e+00
+angle 2
+      1
+      0
+    ideal   model   delta    sigma   weight residual
+    59.00   58.06    0.94 7.07e-01 2.00e+00 1.76e+00
R>   t   @sÑ   @Bond angle restraints: 2
@Sorted by delta:
@angle c
@      ba
@      a
@    ideal   model   delta    sigma   weight residual
@    59.00   58.06    0.94 7.07e-01 2.00e+00 1.76e+00
@... (remaining 1 not shown)
s   Bond angle restraints: 2
s   Dihedral angle restraints: 0
i   R&  iÿÿÿÿt   -s¹  -Dihedral angle restraints: 2
-  sinusoidal: 0
-    harmonic: 2
-Sorted by residual:
-dihedral 3
-         2
-         0
-         5
-    ideal   model   delta  harmonic     sigma   weight residual
-    99.00   16.67   82.33    -1      3.54e-01 8.00e+00 5.42e+04
-dihedral 0
-         1
-         3
-         4
-    ideal   model   delta  harmonic     sigma   weight residual
-    59.00 -159.79 -141.21    -1      7.07e-01 2.00e+00 3.99e+04
t   ^s%  ^Dihedral angle restraints: 2
^  sinusoidal: 0
^    harmonic: 2
^Sorted by delta:
^dihedral a
^         ba
^         dada
^         e
^    ideal   model   delta  harmonic     sigma   weight residual
^    59.00 -159.79 -141.21    -1      7.07e-01 2.00e+00 3.99e+04
^... (remaining 1 not shown)
s=   Dihedral angle restraints: 2
  sinusoidal: 0
    harmonic: 2
s   Chirality restraints: 0
RI  g
×£p=
·?RJ  g{®GázÄ?t   $s–  $Chirality restraints: 2
$Sorted by residual:
$chirality 3
$          2
$          0
$          5
$  both_signs  ideal   model   delta    sigma   weight residual
$    True       0.16    0.05    0.11 3.54e-01 8.00e+00 9.34e-02
$chirality 0
$          1
$          3
$          4
$  both_signs  ideal   model   delta    sigma   weight residual
$    False      0.09   -0.04    0.13 7.07e-01 2.00e+00 3.33e-02
s   *Chirality restraints: 2
*Sorted by delta:
*chirality a
*          ba
*          dada
*          e
*  both_signs  ideal   model   delta    sigma   weight residual
*    False      0.09   -0.04    0.13 7.07e-01 2.00e+00 3.33e-02
*... (remaining 1 not shown)
s   Chirality restraints: 2
s   Planarity restraints: 0
R#   g×£p=
×Ó?gš™™™™™Ù?g{®Gáz„?g)\�Âõ(¼?gáz®GáÊ?g=
×£p=Ú?t   :s
  :Planarity restraints: 2
:Sorted by residual:
:           delta    sigma   weight rms_deltas residual
:plane 0    0.004 1.80e+00 3.10e-01   1.46e-01 2.52e-02
:      2   -0.196 2.24e+00 2.00e-01
:      4   -0.115 1.80e+00 3.10e-01
:      1    0.184 1.58e+00 4.00e-01
:           delta    sigma   weight rms_deltas residual
:plane 0   -0.332 1.00e+01 1.00e-02   1.78e-01 9.86e-03
:      2    0.152 3.02e+00 1.10e-01
:      3   -0.143 2.18e+00 2.10e-01
:      4   -0.030 1.80e+00 3.10e-01
:      5    0.063 1.56e+00 4.10e-01
R2   t   <s_  <Planarity restraints: 2
<Sorted by rms_deltas:
<              delta    sigma   weight rms_deltas residual
<plane a      -0.332 1.00e+01 1.00e-02   1.78e-01 9.86e-03
<      c       0.152 3.02e+00 1.10e-01
<      dada   -0.143 2.18e+00 2.10e-01
<      e      -0.030 1.80e+00 3.10e-01
<      f       0.063 1.56e+00 4.10e-01
<... (remaining 1 not shown)
s   Planarity restraints: 2
g=
×£p½)@g®Gáz"@g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@s
   2-X,-Y,1-ZR%   ix   t   !su  !Bond angle restraints: 2
!Sorted by residual:
!angle 2
!      0  -x+2,-y,-z+1
!      1  -x+2,-y,-z+1
!    ideal   model   delta    sigma   weight residual
!   120.00  122.78   -2.78 1.00e+00 1.00e+00 7.73e+00
!angle 2
!      0  -x+2,-y,-z+1
!      1  -x+2,-y,-z+1
!    ideal   model   delta    sigma   weight residual
!   120.00  122.78   -2.78 1.00e+00 1.00e+00 7.73e+00
t   ~sV  ~Bond angle restraints: 2
~Sorted by delta:
~angle 2
~      1
~      0
~    ideal   model   delta    sigma   weight residual
~    59.00  121.08  -62.08 7.07e-01 2.00e+00 7.71e+03
~angle 2
~      0  -x+2,-y,-z+1
~      1  -x+2,-y,-z+1
~    ideal   model   delta    sigma   weight residual
~   120.00  122.78   -2.78 1.00e+00 1.00e+00 7.73e+00
t   %sÒ  %Dihedral angle restraints: 2
%  sinusoidal: 0
%    harmonic: 2
%Sorted by delta:
%dihedral 2
%         0
%         1
%         2  -x+2,-y,-z+1
%    ideal   model   delta  harmonic     sigma   weight residual
%     0.00    5.16   -5.16     0      1.00e+00 1.00e+00 2.67e+01
%dihedral 2
%         0
%         1
%         2  -x+2,-y,-z+1
%    ideal   model   delta  harmonic     sigma   weight residual
%     0.00    5.16   -5.16     0      1.00e+00 1.00e+00 2.67e+01
t   >sL  >Planarity restraints: 2
>Sorted by residual:
>           delta    sigma   weight rms_deltas residual sym.op.
>plane 0    0.017 1.00e+00 1.00e+00   1.60e-02 1.53e-03
>      1   -0.015 1.00e+00 1.00e+00
>      2    0.016 1.00e+00 1.00e+00
>      0   -0.017 1.00e+00 1.00e+00                     -x+2,-y,-z+1
>      1    0.015 1.00e+00 1.00e+00                     -x+2,-y,-z+1
>      2   -0.016 1.00e+00 1.00e+00                     -x+2,-y,-z+1
>           delta    sigma   weight rms_deltas residual sym.op.
>plane 0    0.017 1.00e+00 1.00e+00   1.60e-02 1.53e-03
>      1   -0.015 1.00e+00 1.00e+00
>      2    0.016 1.00e+00 1.00e+00
>      0   -0.017 1.00e+00 1.00e+00                     -x+2,-y,-z+1
>      1    0.015 1.00e+00 1.00e+00                     -x+2,-y,-z+1
>      2   -0.016 1.00e+00 1.00e+00                     -x+2,-y,-z+1
t   #s£  #Planarity restraints: 2
#Sorted by rms_deltas:
#           delta    sigma   weight rms_deltas residual sym.op.
#plane 0   -0.053 1.80e+00 3.10e-01   6.02e-02 4.53e-03
#      2   -0.071 2.24e+00 2.00e-01
#      3   -0.005 1.80e+00 3.10e-01
#      1    0.081 1.58e+00 4.00e-01
#           delta    sigma   weight rms_deltas residual sym.op.
#plane 0    0.017 1.00e+00 1.00e+00   1.60e-02 1.53e-03
#      1   -0.015 1.00e+00 1.00e+00
#      2    0.016 1.00e+00 1.00e+00
#      0   -0.017 1.00e+00 1.00e+00                     -x+2,-y,-z+1
#      1    0.015 1.00e+00 1.00e+00                     -x+2,-y,-z+1
#      2   -0.016 1.00e+00 1.00e+00                     -x+2,-y,-z+1
i   i   g      @gffffff@i   i   i   s   1+x,y,zsô  >Bond similarity restraints: 2
>Sorted by residual:
>            delta    sigma   weight rms_deltas residual sym.op.
>bond 0-2   -0.033 1.00e+00 1.00e+00   4.71e-02 2.22e-03
>     1-3    0.067 7.07e-01 2.00e+00
>     4-5   -0.033 5.77e-01 3.00e+00                     x+1,y,z
>            delta    sigma   weight rms_deltas residual sym.op.
>bond 0-2   -0.033 1.00e+00 1.00e+00   4.71e-02 2.22e-03
>     1-3    0.067 7.07e-01 2.00e+00
>     4-5   -0.033 5.77e-01 3.00e+00                     x+1,y,z
sÎ  >Bond similarity restraints: 2
>Sorted by rms_deltas:
>                delta    sigma   weight rms_deltas residual
>bond a-c       -6.033 1.00e+00 1.00e+00   5.98e+00 3.56e+01
>     ba-dada   -5.933 7.07e-01 2.00e+00
>     e-f        5.967 5.77e-01 3.00e+00
>                delta    sigma   weight rms_deltas residual
>bond a-c       -6.033 1.00e+00 1.00e+00   5.98e+00 3.56e+01
>     ba-dada   -5.933 7.07e-01 2.00e+00
>     e-f        5.967 5.77e-01 3.00e+00
(   i   i   (   gJ+‡–/@g¶óýÔxi"@g!°rh‘-!@iZ   iZ   iZ   (   g£’:M„Å?g¿}8gDå?g³êsµûÛ?(   g        gûËîÉÃBå?gˆc]ÜFâ?(   i    i   (   i   i    (   g=
×£p½)@gš™™™™™¹?g®Gáz"@(   g®Gáz)@g)\�Âõ(Ü?gìQ¸…ë@(   gq=
×£ð*@gÃõ(\�ÂÕ?g×£p=
×@(   i   i   i   (   i   i   i   (   i   i   i   (   i   i   g      @(   i   gffffff@i   (   i   i   i   (   g      à?i   i   (   i    i   (   i   i   (   i   i   (   i   i   i   (   i    i   (   i   i   (   i   i   (   i   i   i   (/   RÙ   t   platformt
   startswitht   version_infoR   t   symmetryR   t   orthogonalization_matrixR   R4   R[   t   process_sites_cartR`   Rš   R   R’   R   t   show_sortedR   t   getvalueR*   R›   R–   t   random_doubleRN   RO   Rd   R   R   R�   R}   R   R5   R  R  R.  R-  RO  RK  Rz   Ry   RY  RT  Ru   RÓ   R(   R6   (   t   crystal_symmetryt   sites_cart_cryR[   R`   R^   t   sioR¬   R   R   t   simple_proxiesR   Rp  R&   R5   R  R<   t   p2(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_proxy_showˆ  s¸   %														.!																														
										
		!													!					!								c          C   sû  d d l  m }  |  d d ƒ } | j d d ƒ j ƒ  } t j d d d	 d d& ƒ } t j g  | j ƒ  D]3 } t j d | j	 | j
 g d | j d | ƒ ^ qf ƒ } t d j g  | D] } | j j ƒ  ^ q² ƒ d ƒ sÝ t ‚ t j d | j ƒ  d | j ƒ  d | ƒ } t | d d d d d d d g ƒ s1t ‚ t j d | j ƒ  d | j ƒ  d | ƒ } t | d d d d d d  d! g ƒ s…t ‚ t j | j ƒ  j ƒ  d' ƒ }	 | j ƒ  }
 t j d | j ƒ  d |
 d | d# |	 ƒ } d$ } t j ƒ  } xô t |
 j ƒ  ƒ D]à } |
 | } g  } x° t d% ƒ D]¢ } g  } xr | | g D]c } t | ƒ } | | c | 7<| |
 | <t j d | j ƒ  d |
 d | d# d  ƒ } | j | ƒ q;W| j | d" | d d | ƒ q!W| j | ƒ | |
 | <qþWt |	 | ƒ s÷t ‚ d  S((   Niÿÿÿÿ(   t   trial_structuret   choice_of_coordinatesi   R\   gš™™™™™	@RN   gÍÌÌÌÌÌ@RO   g{®Gáz„?i   R"   RZ   RU   s   
sO   -y+1,-x+1,-z+1/2
x,x-y+2,-z+1/2
x,y,z
x-y+1,x+1,-z+1
x,y,z
-y+1,-x+1,z
-x+y,y,zR   R   R&   gÁ,þ µb©?geéžÐF	µ¿gâCtÆÿ±¿g²Ô_=ƒ¿gc'¼§>¹¿g0ôˆÑsµ?g}ú(:Ü°¿g46<•8@g�Ï#„áP@gˆôÛ×�·H@gvT5AÔ=ì?g«‹Ã™OX@gp%;6åP@gÇô„%°E@i    R'   g�íµ ÷Æ°>i   g-Cëâ6?(   i    i    i    (   t   cctbx.crystal.tst_extR“  R`   t   extract_pair_sym_tableR   Rp   R�   t   iteratorR}   RS   RT   RZ   R   t   joint   as_xyzR*   R†   R   R   R   R‡   R   R4   t
   scatterersR:   Rˆ   R   RÒ   R   R   (   R“  t   xst   pstt   bpt   _R&   R<   R1   RE  t	   grads_anaR   RE   R   t	   grads_fint   i_sitet   sorit   gst   ixt   fsR±   t   seps(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_bonds_with_symopsÛ
  sj    	F(				$		

		%c          C   s   d! d" d# g d$ d% d& g f }  d' d( d) g d* d+ d, g f } d- d. d/ g d0 d1 d2 g f } d3 d4 d5 d6 d7 d8 g d9 d: d; g f } d< d= g d> d? d@ g f } t  j d |  d d |  d d	 d ƒ } t | j ƒ  d d
 ƒ sà t ‚ t  j d | d d | d d	 d ƒ } t | j ƒ  d d
 ƒ s$t ‚ t  j d | d d | d d	 d ƒ } t | j ƒ  d d
 ƒ sht ‚ t  j d | d d | d d	 d ƒ } t | j ƒ  d d
 ƒ s¬t ‚ t  j d | d d | d d	 d ƒ } t | j ƒ  d d
 ƒ sðt ‚ d „  } d
 } dA dB dC dD dE dF g } d d d d d d d d d d d d d d d d d d g }	 xbd d g D]T}
 t  j d | d  d | d d	 d d |
 ƒ } t | j ƒ  ƒ } g  } xã t t |	 ƒ ƒ D]Ï } |	 | c | 7<| |	 ƒ } t  j d | d  d | d d	 d d |
 ƒ } |	 | c d | 8<| |	 ƒ } t  j d | d  d | d d	 d d |
 ƒ } |	 | c | 7<| j	 | j ƒ  | j ƒ  d | ƒ q½W| | ƒ } t | | d ƒ s`t ‚ q`Wd „  } t  j
 | d d d d g d d d d g d ƒ | d d d d g d d d d g d ƒ | d d d d g d d d d g d ƒ | d d d d g d d d d g d ƒ g ƒ } | j d d d t j d d d g ƒ ƒ } | j ƒ  d k s®t ‚ | j d d d t j d d d d d g ƒ ƒ } | j ƒ  d k söt ‚ t | d j ƒ d d d g k st ‚ t | d j ƒ d d d g k sFt ‚ t | d j ƒ d d d d g k sqt ‚ t | d j ƒ d d d g k s™t ‚ t | d j d ƒ sµt ‚ t | d j d ƒ sÑt ‚ | j d  t j t g d ƒ ƒ } t | ƒ d k st ‚ | j d  t j t g d t g d ƒ ƒ } t | ƒ d k sPt ‚ t | d j ƒ d d d d g k s{t ‚ t | d j ƒ d d d d g k s¦t ‚ t | d j ƒ d d d d g k sÑt ‚ t | d j ƒ d d d d g k süt ‚ d  S(G   Ni   i    i   i   g©LXèz¶û?iÿÿÿÿt   i_sitest   j_sitesRO   gñhãˆµøä>g{®Gáz”?iÄ	  g      Ð?g      ð?c         S   sW   g  } xJ t  t t |  ƒ d ƒ ƒ D], } | j t |  | d | d d !ƒ ƒ q# W| S(   Ni   (   R.   t   intR   R   R)   (   t   one_dR   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   make_points>  s    #*i
   t   target_angle_degg       @gH¯¼šò×z>c         S   s%   t  j t j |  ƒ t j | ƒ | ƒ S(   N(   R   t   parallelity_proxyR   Ru   (   R"   t   j_seqsRO   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyRU  b  s    i   i   i   i   i   i   i   i   RX   i   RQ   RR   (   i   i   i    (   i   i   i    (   i   i   i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i    i    (   i   i    i    (   i   i   i    (   i   i    i    (   i   i    i    (   i   i    i   (   i   i    i    (   i   i    i    (   i   g©LXèz¶û?iÿÿÿÿ(   i   i    i    (   i   i    i    (   i   i    i   (   i   i    i    (   i   i    i    (   i   i   i    (   i   i    i    (   i   i   i    (   i   i   i    (   i   i    i    (   i   i    i    (   i   i    i   (   i   i    i    (   i   i    i    (   i   i    i    (   i   i    i    (   i   i    i   (   i   i    i    (   i   i    i    (   i   g©LXèz¶û?iÿÿÿÿ(   i   i    i    (   i   i    i    (   i   i    i   (   R   t   parallelityR   R   R*   RÒ   R3   R.   R   R   t   shared_parallelity_proxyRt   R   Ru   R:   R"   R¯  RO   Rw   Rx   Ry   Rz   (   t   test_sites_1t   test_sites_2t   test_sites_21t   test_sites_3t   test_sites_4R<   R¬  R   t
   test_sitest   test_sites_1dR­  t
   p_originalt   gradt   fin_dif_gradR   t   pointst   p1R‘  t	   sites_fdgRU  R&   R  R¤   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise_parallelity  sª    	
	
	
	
	
			!
	
	
	)	'''0*!((+("-+++c           C   sV   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  t
 ƒ  d GHd  S(   Nt   OK(   RM   R¾   R§  R	  Rä   R%  RH  RS  Rj  R’  R¿  (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   exercise‚  s    t   __main__(*   t
   __future__R    t   cctbx.array_familyR   t   cctbxR   R   R   R   t   cctbx.crystalR   t   scitbxR   t   libtbx.test_utilsR   R	   R
   R   t   libtbx.utilsR   t	   cStringIOR   R+   RÙ   R   R!   RM   R¾   t   objectR¿   R×   Rä   R	  R%  RH  RS  Rj  R’  R§  R¿  RÁ  RÐ   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_ext.pyt   <module>   sF   "	«	ÿ ·:	ÿ S	ÿ 4	ÿ ²	g	õ	ÿ ÿ U	A	f	