ó
D™xTc        #   @   s1	  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l	 m
 Z
 d  d l m Z m Z d  d l m Z d  d l m Z m Z d  d	 l Z d  d	 l Z e j d
 ƒ e
 j d
 ƒ d e f d „  ƒ  YZ d d „ Z d „  Z d „  Z d „  Z d „  Z d d d d „ Z d „  Z d „  Z  d „  Z! d
 d „ Z" d „  Z# d „  Z$ d d d g d  d! d" g d# d$ d% g d& d' d( g g d) d* d+ d, g d- d. d/ g d0 d1 d2 g d3 d4 d5 g d6 d7 d8 g g d
 d9 d: d; g d< d= d> g d? d@ dA g dB dC dD g dE dF dG g g dH d* d+ dI g dJ dK dL g dM dN dO g dP dQ dR g dS dT dU g g dH d* d+ dV g dW dX dY g dZ d[ d\ g d] d^ d_ g d` da db g g dH d* d+ dc g dd de df g dg dh di g dj dk dl g dm dn do g g dp d* d+ dq g dr ds dt g du dv dw g dx dy dz g d{ d| d} g g dH d* d+ d~ g d d€ d� g d‚ dƒ d„ g d… d† d‡ g dˆ d‰ dŠ g g dH d* d+ d‹ g d‚ dƒ d„ g d… d† d‡ g dˆ d‰ dŠ g dŒ d� dŽ g g d
 d* d� d� g d‘ d’ d“ g d” d• d– g d— d˜ d™ g dš d› dœ g g dH d* d+ d� g dž dŸ d  g d¡ d¢ d£ g d¤ d¥ d¦ g d§ d¨ d© g g dH d* d+ dª g d« d¬ d­ g d® d¯ d° g d± d² d³ g d´ dµ d¶ g g d
 d* d� d· g d¸ d¹ dº g d» d¼ d½ g d¾ d¿ dÀ g dÁ dÂ dÃ g g dÄ d* d+ dÅ g dÆ dÇ dÈ g dÉ dÊ dË g dÌ dÍ dÎ g dÏ dÐ dÑ g g dH d* d+ dÒ g dÓ dÔ dÕ g dÖ d× dØ g dÙ dÚ dÛ g dÜ dÝ dÞ g g dH d* d+ dß g dà dá dâ g dã dä då g dæ dç dè g dé dê dë g g dH d* d+ dì g dí dî dï g dð dñ dò g dó dô dõ g dö d÷ dø g g dH d* d+ dù g dð dñ dò g dó dô dõ g dö d÷ dø g dú dû dü g g dý dþ d: dÿ g d ddg dddg dddg d	d
dg g dH d* d+ dg dddg dddg dddg dddg g dp d* d+ dg dddg dddg dddg dddg g dd* d+ dg dd d!g d"d#d$g d%d&d'g d(d)d*g g dH d* d+ d+g d,d-d.g d/d0d1g d2d3d4g d5d6d7g g d
 d* d� d8g d9d:d;g d<d=d>g d?d@dAg dBdCdDg g dH d* d+ dEg dFdGdHg dIdJdKg dLdMdNg dOdPdQg g dH d* d+ dRg dSdTdUg dVdWdXg dYdZd[g d\d]d^g g dH d* d+ d_g d`dadbg dcdddeg dfdgdhg didjdkg g dH d* d+ dlg dfdgdhg didjdkg dmdndog dpdqdrg g d
 d9 d: dsg dtdudvg dwdxdyg dzd{d|g d}d~dg g dH d* d+ d€g d�d‚dƒg d„d…d†g d‡dˆd‰g dŠd‹dŒg g dH d* d+ d�g g Z% e& dŽk r-	e$ ƒ  n  d	 S(�  iÿÿÿÿ(   t   division(   t   dump_pdb(   t   geometry_restraints(   t	   pml_stickt	   pml_write(   t   flex(   t   colt   sqr(   t   euler_angles_as_matrix(   t   approx_equalt   not_approx_equalNi    t   residual_functorc           B   s   e  Z d  „  Z d „  Z RS(   c         K   s(   d | k s t  ‚ | |  _ | |  _ d  S(   Nt   sites(   t   AssertionErrort   restraint_typet   keyword_arguments(   t   selfR   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   __init__   s    	c         C   s-   | |  j  d <|  j |  j  �  j ƒ  S|  j  d =(   NR   (   R   R   t   residual(   R   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   __call__   s    (   t   __name__t
   __module__R   R   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyR      s   	g�íµ ÷Æ°>c         C   så   |  } g  } xÑ t  |  ƒ D]Ã \ } } g  } x¡ t d ƒ D]“ } g  }	 xc | | g D]T }
 d g d } |
 | | <| t | ƒ | | <| | ƒ } |	 j | ƒ | | | <qS W| j |	 d |	 d d | ƒ q9 W| j | ƒ q W| S(   Ni   i    i   i   (   t	   enumeratet   xrangeR   t   append(   R   t   residual_objt   epst	   sites_modt	   gradientst   i_sitet   sitet   gradt   i_xt   tt
   signed_epst   addt   r(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   finite_differences   s     
%c       	   C   s~  xwt  d ƒ D]i}  t d d ƒ } t j d | d d d d ƒ } | j } | d } d	 | d } t d
 t j d | d | ƒ } xô t  d ƒ D]æ } | d k r§ | } n] g  } xT | D]L }	 t g  t  d ƒ D] }
 t j d d ƒ | ^ qÊ ƒ } | j	 |	 | ƒ q´ Wt j d | d | d | ƒ } | j
 ƒ  } t | | ƒ } x2 t | | ƒ D]! \ } } t | | ƒ sMt ‚ qMWqŒ Wq Wd  S(   Ni   t   n_sitesi   R   t   distance_ideali    t   weightg{®Gáz„?i   R   i   iýÿÿÿ(   R   t   random_sitesR   t   bondt   distance_modelR   R   t   randomt   uniformR   R   R%   t   zipR	   R   (   t   i_trialR   t   bR'   t   sigmaR(   R   t   i_pertR   R   t   it   shiftt   agt   fgt
   analyticalt   finite(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exercise_bond.   s.    	
			5	c      	   C   sg  x¾t  d ƒ D]°} t d d ƒ } |  d | d d d | ƒ } | j } t d |  d | d | ƒ } xYt  d ƒ D]K} | d	 k r‰ | } na g  } xX | D]P }	 t g  t  d
 ƒ D]  }
 t j d d ƒ | d ^ q¬ ƒ } | j |	 | ƒ q– W|  d | d | d | ƒ } t | d ƒ s9| j	 d k s9t
 | j ƒ  d	 ƒ rn t j t | | ƒ ƒ j ƒ  } t j | j ƒ  ƒ j ƒ  } t d t j t j | ƒ ƒ ƒ } t | | | | d d ƒs¹t ‚ qn qn Wq Wd	 d	 d	 g d	 d	 d	 g g } d } x{ t  d d ƒ D]j } | d } | | d d	 <|  d g  | D] }	 t |	 ƒ ^ q d | d | ƒ } t | | j ƒ sõt ‚ qõWd  S(   Ni   R&   i   R   t   vdw_distancei   t   functionR   i    i   iÿÿÿÿgš™™™™™©?t   irexpR   g{®Gáz„?gÍÌÌÌÌÌü?id   g      I@(   R   R)   t   deltaR   R   R,   R-   R   t   hasattrR<   R
   R   R   t   vec3_doubleR%   t	   as_doubleR   t   maxt   meant   absR	   R   (   t   nonbonded_typet   repulsion_functionR/   R   R$   R:   R   R2   R   R   R3   R4   R6   R5   t   scalet   i_stepR=   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exercise_nonbondedH   sP    				3	!.
	c          C   sN  d }  d } x;t  | ƒ D]-} | d k  rˆ | | d k rD d }  n
 |  d 9}  g  d d d |  d f g D] } t | ƒ ^ qg } d } nC x@ t d d	 ƒ } t j | d
 d d d ƒj } | d k r‹ Pq‹ q‹ | d } d | d } t d t j d
 | d | ƒ } xBt  d ƒ D]4}	 |	 d k r)| }
 n] g  }
 xT | D]L } t g  t  d	 ƒ D] } t j d	 d	 ƒ | ^ qLƒ } |
 j	 | | ƒ q6Wt j d |
 d
 | d | ƒ } |  d k r¿| j
 ƒ  } n  t |
 | ƒ } |  d k rôxe | D] } | GHHqáWqxK t | | ƒ D]: \ } } t | | d t d t | ƒ d ƒ ƒst ‚ qWqWq Wd  S(   Ni   i   i�ÿÿÿi    gš™™™™™¹?iÿÿÿÿiª   R&   i   t   angle_idealR(   i
   i   R   i   R   R   g�íµ ÷Æ°>(   iÿÿÿÿi    i    (   i    i    i    (   R   R   R)   R   t   anglet   angle_modelR   R,   R-   R   R   R%   R.   R	   RA   R   (   R   t   n_trialsR/   R   R   RI   R1   R(   R   R2   R   R3   R4   t   aR5   R6   R8   R7   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exercise_anglet   sP    	
1	
			5	c         C   s0   t  g  t d ƒ D] } t j |  |  ƒ ^ q ƒ S(   Ni   (   R   R   R,   R-   (   t   max_coordinateR3   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   random_site¬   s    i
   g      à?iè  c   	      C   s«   g  } d } x˜ | d 7} | | k  s+ t  ‚ t | ƒ } t } x2 | D]* } | | j ƒ  | d k  rD t } PqD qD W| r | j | ƒ d } t | ƒ |  k r¤ Pq¤ q q | S(   Ni    i   i   (   R   RP   t   Truet   norm_sqt   FalseR   t   len(	   R&   RO   t   min_distancet
   max_trialsR   t   run_away_countert   new_sitet   okR   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyR)   °   s"    

c      
   C   s(  | d k s t  ‚ x| | g D] } t j d |  d | d d | d d | ƒ } | d  k	 ry t | | j ƒ sy t  ‚ n  t j | j ƒ  ƒ } t	 d t j d | j
 d | j d | ƒ } t j t |  | ƒ ƒ j ƒ  }	 | j ƒ  } t d	 t j t j |	 ƒ ƒ ƒ }
 t | |
 |	 |
 ƒ s  t  ‚ q  Wd  S(
   Ni    R   RI   R(   g      ð?i   t   periodicityR   i   (   R   R   t   dihedralt   NoneR	   RK   R   R?   R   R   RI   R(   R%   R@   RA   RB   RC   (   R   RI   t	   angle_esdRZ   RK   t   signed_periodicityt   dihR5   R   R6   RF   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exercise_dihedral_coreÄ   s&    						!c          C   sØ  g  d d d d g D] }  t  |  ƒ ^ q } d } xKt d ƒ D]=} | d k r† g  d d d d g D] } | | ^ qc } | d 9} n  t j d | d | d	 d ƒ } t | j | ƒ s¼ t ‚ t | j | ƒ sÔ t ‚ t | j d ƒ sì t ‚ xŒ t d
 ƒ D]~ } g  } xP | D]H }  t  g  t d ƒ D] } t	 j
 d d ƒ ^ q"ƒ } | j |  | ƒ qWt | | d d d d d d  ƒqù Wq> WxR t D]J \ } } }	 }
 } g  | D] }  t  |  ƒ ^ q¢} t | | |	 |
 | ƒ q†Wd  S(   Ni   i    iÓÿÿÿi   i   iÿÿÿÿR   RI   R(   i   gš™™™™™¹¿gš™™™™™¹?R]   RZ   RK   (   i   i    i    (   i    i    i    (   i    i   i    (   i   i    i   (   R   R   R   R[   R	   RI   R   RK   R=   R,   R-   R   R`   R\   t   dihedral_test_data(   R   R   RI   t   flipR3   R_   R/   R   R4   R]   t   periodRK   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exercise_dihedralÚ   s2    ()		1$c         C   s    |  d |  d |  d |  d g S(   Ni    i   i   i   (    (   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   improper_permutationõ   s    c         C   s‚  g  d6 d7 d8 d9 g D] } t  | ƒ ^ q } t j d | d d d t d d ƒ } t | j d ƒ sg t ‚ t | j ƒ  d ƒ s‚ t ‚ t j d t	 | ƒ d d d d ƒ } t | j
 d ƒ s¾ t ‚ t | j ƒ  d ƒ sÙ t ‚ |  rt d | ƒ d G| j GHd G| j GHd G| j GHd G| j
 GHn  x\t d ƒ D]N} | j } x<t t g D].} g  } xP | D]H } t  g  t d ƒ D] }	 t j d  d! ƒ ^ qqƒ }
 | j | |
 ƒ q[W| r¼t | ƒ } n  t j d | d | d | d d: d; ƒ } t d% t j d | j d | j d | j ƒ } t j t | | ƒ ƒ j ƒ  } t j | j ƒ  ƒ j ƒ  } t d t j t j | ƒ ƒ ƒ } t | | | | ƒ sˆt ‚ t j d t	 | ƒ d | j d d& ƒ } | j ƒ  } |  rH| d' k rH| rHt d( | ƒ d' } x) | D]! } t | t t  | ƒ ƒ ƒ } qîWx2 t j | ƒ D]! } t | t t  | ƒ ƒ ƒ } q#Wg  } xi t t	 | ƒ | ƒ D]R \ } } | j t d) | d* | t  | ƒ | d+ d d' d' g g d$ d, d- ƒ ƒ qdWt  d. t! d/ d0 ƒ d1 d2 d3 | ƒ g  } xl t | t j | ƒ ƒ D]R \ } } | j t d) | d* | t  | ƒ | d+ d' d d' g g d$ d, d- ƒ ƒ qûWt  d. t! d4 d0 ƒ d1 d5 d3 | ƒ qHqHWq,Wd  S(<   Ng)\�Âõ¨;@gu“VÎ#@g9´Èv¾Ÿ @g�•C‹<@gš™™™™Y#@gÙÎ÷Sã@g+‡Ù.<@g}?5^º‰&@g      ú?gö(\�Â<@gøSã¥›„!@g¤p=
×£ò?R   t   volume_idealg×£p=
×Àt
   both_signsR(   i   gÔ­íÙJÀgûUÅ81s?RI   gÙ±ˆ×¡A@gð»Mæ!@@g»×6_k"@s	   sites.pdbs   volume_ideal:s   volume_model:s   angle_ideal:s   angle model:i2   i   g      à¿g      à?iô  gš™™™™™É?i   R   iî  i    s   sites_mod.pdbt   begint   endt   colorst   widthg{®Gáz„?t   fs   dih.pmlt   wt   labelR_   t   stickss   chir.pmlt   chir(   g)\�Âõ¨;@gu“VÎ#@g9´Èv¾Ÿ @(   g�•C‹<@gš™™™™Y#@gÙÎ÷Sã@(   g+‡Ù.<@g}?5^º‰&@g      ú?(   gö(\�Â<@gøSã¥›„!@g¤p=
×£ò?iô  g|®Gáz¤?("   R   R   t	   chiralityRS   R	   t   volume_modelR   R   R[   Re   RK   R   Rf   RI   R   RQ   R,   R-   R   RC   R   Rg   R(   R   R?   R%   R@   R   RA   RB   R.   R   R   t   open(   t   verboseR   R   Rp   R_   R/   Rf   Rg   R   R3   R4   t   cR   R6   R5   RF   t   dt   ag_diht	   max_g_lent   gRo   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exercise_chiralityø   sž    					1 				!			""%c       
   C   sB  t  j d d d d g ƒ }  x d d d d g d f d d d d g d f d d d d g d f d  d! d" d# g d$ f g D]Ä\ } } t | ƒ } | t | ƒ } x™t d ƒ D]‹} x‚t d ƒ D]t} | d k r| d k rg  | D] } t | ƒ ^ qã } | } nt g  t d ƒ D] } t j d d	 ƒ ^ qƒ }	 t t g  t d ƒ D] } t j d d
 ƒ ^ qHƒ ƒ }
 |
 | } | d k r¬g  | D] } |
 t | ƒ |	 ^ q‰} no g  } xf | D]^ } d } t g  t d ƒ D] } t j ƒ  d | ^ qÕƒ } | j	 |
 t | ƒ |	 | ƒ q¹Wt
 j d | d |  ƒ } t | j ƒ  ƒ } | j ƒ  } | d k rÕt t | j | ƒ ƒ d ƒ d k  sˆt ‚ t | j ƒ  d ƒ s£t ‚ x/ | D]$ } t | d d d g ƒ sªt ‚ qªWn  t | j ƒ  | j ƒ  ƒ söt ‚ t d t
 j d |  ƒ } t | | ƒ } t | | ƒ s¾ t ‚ q¾ Wq« Wqv Wd  S(%   Ni   i   i   i   i    iÿÿÿÿi   iöÿÿÿi
   ih  gš™™™™™¹?g      à?R   t   weightsgñhãˆµøä>R   (   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   doubleR   RC   R   R,   R-   R   R   R   R   t	   planarityt   normalR   t   dotR   R	   R   t
   lambda_minR   R%   (   R{   t   pointst   normR/   R2   t   vR   t   rot_normR3   R4   t   rotRl   t   pertt   plt   nt   gradients_analyticalR   R   t   gradients_finite(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exercise_planarityI  sJ    %	11
*3#+%!		c          C   sj  t  ƒ  x\ d d d d d g D]E }  x< d d g D]. } t d t j d t j d |  d	 | ƒ ƒ q0 Wq WxE d d d d d g D]. }  t d t j d t j d
 d d |  ƒ ƒ q| Wx? d d d g D]. } t d t j d t j d d d | ƒ ƒ q¾ Wx? d d d g D]. } t d t j	 d t j
 d d d | ƒ ƒ q Wt ƒ  t ƒ  t d d t j d k ƒ t ƒ  d GHd  S(   Ni   i   i   i   i   RD   RE   R<   t   rexpt   nonbonded_distance_cutoffg@Œµx¯Dt   max_residuali   t   exponentgš™™™™™¹?gš™™™™™É?g333333Ó?i   t   norm_height_at_vdw_distanceRt   s	   --verboset   OK(   R9   RH   R   t   nonbonded_prolsqt   prolsq_repulsion_functiont   nonbonded_inverse_powert    inverse_power_repulsion_functiont   nonbonded_cost   cos_repulsion_functiont   nonbonded_gaussiant   gaussian_repulsion_functionRN   Rd   Rz   t   syst   argvR‹   (   R<   RŒ   R�   R�   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   exerciser  s>    								g/Ý$IQ@gHáz®Ç"@gð§ÆK7‰@g‹lçû©©Q@g‹lçû©1#@gî|?5^º@g¶óýÔx¹Q@g‡ÙÎ÷&@gX9´Èv@gÙÎ÷ScQ@gd;ßO�—'@gh‘í|?5@i#   i   i   gbNÐ&‡Ÿ;Àg¼t“FQ@g#Ûù~j¼"@gÉv¾Ÿ¯@gF¶óýÔ˜Q@gƒÀÊ¡E6$@gh‘í|?5@g‹lçû©¡Q@gòÒMbX&@gú~j¼t@g�•C‹lïQ@g‹lçû©±&@g+‡Ù@i   i   g%;6ñ§bÀgÍÌÌÌÌŒP@gD‹lçû©Á?g‰A`åÐ¢@gìQ¸…ÃP@gÝ$�•Cñ¿g333333@g¾Ÿ/ÝQ@gD‹lçû©é¿gV-²@g¨ÆK7‰Q@g–C‹lçûá¿gP�—nƒ@i´   g ~þ{ðKRÀg…ëQ¸ÕP@gÛù~j¼tù¿g“Vm"@gƒÀÊ¡EîP@g¤p=
×£à¿g=
×£p}$@gR¸…ëIQ@gìQ¸…ë±?g“V-$@g…ëQ¸…Q@gþÔxé&1ò¿gL7‰A`¥$@gž^)Ë¤OÀgú~j¼t;P@gƒÀÊ¡E¶ù¿gsh‘í|?"@gªñÒMbÐO@gw¾Ÿ/ÝÀg-²�ïç"@gX9´Èv>O@gÉv¾Ÿ/ó¿gö(\�Â5"@g     �N@gsh‘í|? Àgð§ÆK7I"@g½ûã½jÛd@gÕxé&1ˆQ@gTã¥›Ä  @gìQ¸…ë/@gƒÀÊ¡E¾Q@g!°rh‘í@g¾Ÿ/ÝÄ0@gV-²�ÏQ@gTã¥›Ä @gþÔxé&±/@gôýÔxé†Q@g/Ý$@g‰A`åÐ¢-@içÿÿÿgoJy­„z5@gé&1¬œI@gé&1¬@g¶óýÔx)3@gL7‰A`åH@g¨ÆK7‰Á@g`åÐ"Ûy3@gHáz®ÇH@gôýÔxé¦@gã¥›Ä Ð4@gÓMbX	I@gžï§ÆK7@gR¸…ëñ5@gv28J^ªRÀg²�ï§Æ»G@gD‹lçû)#@gyé&1ì4@g9´Èv¾_G@gòÒMbØ$@gJ+‡ö5@g7‰A`å°G@gªñÒMb�$@g®GázT7@g=
×£p]G@g‘í|?5ž"@gÑ"Ûù~*8@gq:ÉV—XÀg¶óýÔxùF@gF¶óýÔx!@g�Âõ(\9@i   g‚�,`ÏWÀg5^ºI2K@gÏ÷Sã¥›ô?g¶óýÔx)-@gÙÎ÷SÓK@g‘í|?5^ô?g /Ý$Æ.@g²�ï§Æ;L@gü©ñÒMbp¿g²�ï§Æ‹.@gºI+×K@g+‡ÙÎ÷ñ¿g1¬Z¤/@g@3ˆìôOÀg`åÐ"ÛñP@g¼t“–"@g}?5^º	'@gTã¥›Ä8Q@gJ+‡V$@gV-²(@g+‡‘Q@gË¡E¶ó½"@gÑ"Ûù~*(@g‡ÙÎ÷ÛQ@g/Ý$�Õ$@g²�ï§Æ‹(@gæ"¾³žd@gÅ °rh‘R@g‹lçû©‘1@g×£p=
W4@gÙÎ÷S“R@g®GázÔ2@gu“V5@gP�—nCR@gÏ÷Sã¥›3@gÓMbXù4@g+‡)R@g×£p=
w4@gÑ"Ûù~ê5@g;Sè¼Æc@gáz®GÁP@g�—nƒ (@gžï§ÆK2@gË¡E¶ó…P@gÁÊ¡E¶ó%@g�Âõ(\¯2@g5^ºI¢P@gÝ$�•ƒ#@gj¼t“d3@g“VeP@gÛù~j¼4!@g}?5^ºi3@i<   gV‚ÅáÌecÀg33333ÃM@gÇK7‰Aà@gÙÎ÷S#$@gžï§ÆK'N@gåÐ"Ûùþ@gçû©ñÒM"@gºI+wN@g /Ý$†@g;ßO�—î@gìQ¸…ëN@gøSã¥›Ä@g¬Zd»@gv7OuÈ§e@gš™™™™)K@gåÐ"Ûù~Àg®Gáz®@gq=
×£`K@gÁÊ¡E¶ó÷¿gÃõ(\�Â@g…ëQ¸>K@gåÐ"Ûù~ô¿gÙÎ÷Sã¥ç?gÏ÷Sã¥kK@g+‡ÙÎ÷Àg¤p=
×£Ø¿gÐši?HÀg¶óýÔx9K@gyé&1¬@g¼t“V@gÍÌÌÌÌ¼K@g²�ï§ÆK	@gçû©ñÒÍ@gD‹lçûyL@gçû©ñÒM@gÍÌÌÌÌL@g1¬Z”L@g5^ºIõ?g×£p=
W@gºô/IeMÀgmçû©ñ¢K@gú~j¼t“@g´Èv¾Ÿ@g)\�ÂõˆK@g®Gáz.@g²�ï§ÆË@g;ßO�—îJ@gP�—n@g-²�ï§@gyé&1LJ@gbX9´È@g�—nƒ@@g	©ÛÙW–KÀg`åÐ"Û)J@gJ+‡@gÍÌÌÌÌ @iZ   i   gÐïû_W@gÙÎ÷SóM@gþÔxé&1@gÝ$�•CÀgÛù~j¼N@g+‡ÙÎ÷ó?gžï§ÆK7õ¿gžï§ÆKN@g}?5^ºIú?gÓMbX9Ä?g®GázN@g9´Èv¾ŸÚ?g?5^ºIð?gá+Ù±f@g�•C‹lA@g¨ÆK7‰A@g¨ÆK7‰A
@gœÄ °r8A@g!°rh‘í @g-²�ï§@g®GázÔA@g�•C‹lõ?g…ëQ¸…@gV-âA@g!°rh‘íø?gX9´Èv¾@gš$–”G0Àgã¥›Ä  A@g‹lçû©ñ@gj¼t“@iâÿÿÿg�,µÞBÀgú~j¼t³2@g{®Gáz@g33333³2@gÇK7‰A`1@gžï§ÆK7@gÝ$�•C3@gP�—nc1@gw¾Ÿ/Ýø?gB`åÐ"[4@g¾Ÿ/ÝÄ1@gÁÊ¡E¶óÍ?g?5^ºI¬3@g³ï«rœPÀgš™™™™Y1@g9´Èv¾Ÿ @gNbX9Ô8@g¼t“2@g‡ÙÎ÷Sý?gåÐ"Ûù:@gš™™™™Ù1@gþÔxé&1@gÅ °rhq;@g�•C‹l'1@gbX9´È@gÕxé&1ˆ<@g‡¢@ŸÈÑJ@gÝ$�•Ã/@gþÔxé&1@g´Èv¾ŸÚ8@gÛù~j¼t.@g®Gáz.@gj¼t“Ä9@gJ+‡60@g‘í|?5ž @g?5^ºI¬:@g×£p=
·1@g!°rh‘­ @gçû©ñÒM:@g©N²žz2@gƒÀÊ¡…-@gV-²�o(@gsh‘í|3@gHáz®‡/@g^ºI+'@g/Ý$!2@gƒÀÊ¡E1@gªñÒMbÐ'@g)\�ÂõH2@g–C‹lç›1@g�•C‹l§*@g33333ó1@g±¦²(ìBQÀgsh‘í|ÿ/@g‘í|?5+@g×£p=
×@g-²�ï'1@g…ëQ¸^,@g'1¬Z@gºI+§0@g?5^ºIŒ-@g+‡ÙÎ÷ @gHáz®Ç/@gX9´Èv+@g¢E¶óýÔô?gTÿ ’!{IÀgÑ"Ûù~*3@g¢E¶óý.@gš™™™™@gV-²�Ï3@g²�ï§Æ0@gyé&1¬@g^ºIk3@gøSã¥›„1@gV-²�@g�•C‹Œ3@gÁÊ¡E¶32@gÃõ(\�B@g’ìj†|KÀgé&1¬ü4@gu“VN2@gq=
×£p@g¤p=
×ƒ5@g“Vm3@gL7‰A`å@g˜Q,·´ú[ÀgÇK7‰A 5@gÅ °rhq0@g¬Zd{5@g?5^ºIL5@gZd;ßO0@gìQ¸…4@g-²�ïg4@gú~j¼t“.@gÇK7‰A`3@gÛù~j¼´4@gV-²�¯+@gX9´È¶3@gíò­ë0QÀgøSã¥›$7@g^ºI«5@gd;ßO�—$@g+‡Ùî6@gL7‰A`…6@g?5^ºIL"@gq=
×£�6@g¤p=
×ã7@gq=
×£0#@gZd;ßOM6@gyé&1Ì8@gbX9´È @gÐ›ŠTOfÀt   __main__('   t
   __future__R    t   iotbx.pdb.tst_pdbR   t   cctbxR   t   iotbx.pymolR   R   t   cctbx.array_familyR   t   scitbx.matrixR   R   t   scitbx.mathR   t   libtbx.test_utilsR	   R
   R,   Rš   t   seedt   set_random_seedt   objectR   R%   R9   RH   RN   RP   R)   R`   Rd   Re   Rz   R‹   Rœ   Ra   R   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_geometry_restraints.pyt   <module>   sb  		,	8				Q	)	"