ó
,™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 m Z d  d l m Z 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   geometry_restraints(   t   flex(   t   phil(   t   format_cpu_times(   t   Exception_expectedt	   show_diff(   t   StringIOc       	   C   sZ  t  j d d ƒ }  |  j d k s' t ‚ |  j d k s< t ‚ |  j d k sQ t ‚ |  j d k sf t ‚ t  j d d d d d d	 d
 d ƒ }  |  j d k sŸ t ‚ |  j d k s´ t ‚ |  j d	 k sÉ t ‚ |  j d k sÞ t ‚ d |  _ |  j d k sü t ‚ d |  _ |  j d k st ‚ d |  _ |  j d k s8t ‚ d |  _ |  j d k sVt ‚ d  S(   Nt   namet   at    i    t   bt   scattering_typet   ct   nonbonded_typet   dt   partial_chargeg      à?t   xt   yt   zg      ø?(   R   t
   motif_atomR   t   AssertionErrorR   R   R   (   R	   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_atom	   s&    					c          C   sº  t  j d d d g ƒ }  |  j d k s- t ‚ |  j d k sB t ‚ |  j d k sW t ‚ |  j d k sl t ‚ |  j d k s� t ‚ t  j d d d g d d	 d
 d d d d d ƒ }  |  j d k sÆ t ‚ |  j d	 k sÛ t ‚ |  j d k sð t ‚ |  j d k st ‚ |  j d k st ‚ d d g |  _ |  j d k s>t ‚ d |  _ |  j d k s\t ‚ d |  _ |  j d k szt ‚ d |  _ |  j d k s˜t ‚ d |  _ |  j d k s¶t ‚ d  S(   Nt
   atom_namesR	   R   R
   i    R   R   t   typet   singlet   distance_idealg      ø?t   weightg      @t   idt   tR   R   t   doubleg      @g      @t   u(   R	   R   (   R   R   (   R   R   (   R   t
   motif_bondR   R   R   R   R   R   (   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_bond   s0    						c       	   C   su  t  j d d d d g ƒ }  |  j d k s0 t ‚ |  j d k sE t ‚ |  j d k sZ t ‚ |  j d k so t ‚ t  j d d d d	 g d
 d d d d d ƒ }  |  j d k s± t ‚ |  j d k sÆ t ‚ |  j d k sÛ t ‚ |  j d k sð t ‚ d d d g |  _ |  j d k st ‚ d |  _ |  j d k s5t ‚ d |  _ |  j d k sSt ‚ d |  _ |  j d k sqt ‚ d  S(   NR   R	   R   R   i    R
   R   R   R   t   angle_idealg      @R   g      @R   R   t   pt   qt   rg      !@g      #@R   (   R	   R   R   (   R   R   R   (   R#   R$   R%   (   R   t   motif_angleR   R   R"   R   R   (   R	   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_angle8   s&    	$			c          C   sÌ  t  j d d d d d g ƒ }  |  j d k s3 t ‚ |  j d k sH t ‚ |  j d k s] t ‚ |  j d k sr t ‚ |  j d k s‡ t ‚ t  j d d d	 d
 d g d d d d d d d d ƒ }  |  j d k sÒ t ‚ |  j d k sç t ‚ |  j d k sü t ‚ |  j d k st ‚ |  j d k s&t ‚ d d d d g |  _ |  j d k sPt ‚ d |  _ |  j d k snt ‚ d |  _ |  j d k sŒt ‚ d |  _ |  j d k sªt ‚ d |  _ |  j d k sÈt ‚ d  S(   NR   R	   R   R   R   i    R
   t   et   ft   gt   hR"   g      @R   g      @t   periodicityi   R   R   t   kt   lt   mg      )@g      /@i   R   (   R	   R   R   R   (   R(   R)   R*   R+   (   R+   R-   R.   R/   (   R   t   motif_dihedralR   R   R"   R   R,   R   (   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_dihedralM   s0    	$					c          C   s
  t  j d d d d d g ƒ }  |  j d k s3 t ‚ |  j d k sH t ‚ |  j sX t ‚ |  j d k sm t ‚ |  j d k s‚ t ‚ |  j d k s— t ‚ t  j d d d	 d
 d g d d d t	 d d d d d d ƒ }  |  j d k sè t ‚ |  j d k sý t ‚ |  j st ‚ |  j d k s!t ‚ |  j d k s6t ‚ |  j d k sKt ‚ d d d d g |  _ |  j d k sut ‚ d |  _ |  j d k s“t ‚ t
 |  _ |  j s¬t ‚ d |  _ |  j d k sÊt ‚ d |  _ |  j d k sèt ‚ d |  _ |  j d k st ‚ d  S(   NR   R	   R   R   R   R
   i    R(   R)   R*   R+   t   volume_signt   positivet
   both_signst   volume_idealg      @R   g      @R   R   R-   R.   R/   t   bothg      )@g      /@R   (   R	   R   R   R   (   R(   R)   R*   R+   (   R+   R-   R.   R/   (   R   t   motif_chiralityR   R   R2   R4   R5   R   R   t   Truet   False(   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_chiralityg   s8    						c          C   s„  t  j ƒ  }  |  j j ƒ  d k s' t ‚ |  j j ƒ  d k sB t ‚ |  j d k sW t ‚ t  j d t j d d g ƒ d t j	 d d g ƒ d	 d
 ƒ }  t
 |  j ƒ d d g k s´ t ‚ t
 |  j ƒ d d g k sÕ t ‚ |  j d
 k sê t ‚ t j d d d g ƒ |  _ t
 |  j ƒ d d d g k s)t ‚ t j	 d d g ƒ |  _ t
 |  j ƒ d d g k sbt ‚ d |  _ |  j d k s€t ‚ d  S(   Ni    R
   R   R	   R   t   weightsg      ø?g      @R   R   R   R   R   g      @g      @R   (   R   t   motif_planarityR   t   sizeR   R;   R   R   t
   std_stringR   t   list(   R#   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_planarity…   s"    		!!$!	c          C   s  t  j ƒ  }  |  j d k s! t ‚ |  j d k s6 t ‚ |  j j ƒ  d k sQ t ‚ |  j j ƒ  d k sl t ‚ t |  j	 ƒ  ƒ d k sŠ t ‚ t |  j
 ƒ  ƒ d k s¨ t ‚ t |  j ƒ  ƒ d k sÆ t ‚ t |  j ƒ  ƒ d k sä t ‚ t |  j ƒ  ƒ d k st ‚ t |  j ƒ  ƒ d k s t ‚ d |  _ |  j d k s>t ‚ d |  _ |  j d k s\t ‚ |  j j d ƒ |  j j d ƒ |  j j ƒ  d k s—t ‚ |  j j d ƒ |  j j d	 ƒ |  j j ƒ  d k sÒt ‚ g  d, i d d
 6d d 6d d 6d d 6f d i  f g D] \ } } t  j | | Ž  ^ q} |  j | ƒ g  |  j	 ƒ  D] } | j ^ qEd d g k slt ‚ g  d- i d. d 6d d 6d d 6d d 6d d 6f d0 i  f g D] \ } } t  j | | Ž  ^ q¨} |  j | ƒ g  |  j
 ƒ  D] } | j ^ qæd1 d2 g k st ‚ g  d3 i d4 d 6d d 6d d 6d d 6f d6 i  f g D] \ } } t  j | | Ž  ^ qB} |  j | ƒ g  |  j ƒ  D] } | j ^ q€d7 d8 g k s§t ‚ g  d9 i d: d 6d d 6d d 6d d 6d d 6f d< i  f g D] \ } } t  j | | Ž  ^ qã} |  j | ƒ g  |  j ƒ  D] } | j ^ q!d= d> g k sHt ‚ g  d? i d@ d 6d d  6t d! 6d" d# 6d d 6d	 d 6f dB i  f g D] \ } } t  j | | Ž  ^ q‹} |  j | ƒ g  |  j ƒ  D] } | j ^ qÉdC dD g k sðt ‚ t  j d t j d d g ƒ d% t j  d& d g ƒ d d ƒ t  j d t j d g ƒ d% t j  d g ƒ ƒ g } |  j! | ƒ g  |  j ƒ  D] }	 t" |	 j ƒ ^ qvd d g d g g k s¬t ‚ t# ƒ  }
 |  j$ d' |
 d( d) ƒ t% |
 j& ƒ  d* ƒ sçt ‚ t# ƒ  }
 |  j$ d' |
 ƒ t' j( d+ |
 j& ƒ  ƒ d  S(E   NR
   i    R	   R   R   R   i   R(   R)   R   R   R   gš™™™™™¹¿R   R   R   gffffff@R   g      '@R   R   gš™™™™™	@R"   g333333.@R*   g333333@g      ø?i   R,   R+   t   iR2   R4   gš™™™™™$@R5   t   jR;   i   t   outt   prefixs   &*sô  &*geometry_restraints.motif {
&*  id = "a"
&*  description = "b"
&*  info = "c"
&*  info = "d"
&*  manipulation_id = "e"
&*  manipulation_id = "f"
&*  atom = [name scattering_type nonbonded_type partial_charge]
&*  atom = "a" "b" "c" -0.1
&*  atom = "d" "" "" 0
&*  bond = [atom_name*2 type distance_ideal weight id]
&*  bond = "a" "b" "c" 2.3 11.5 "d"
&*  bond = "e" "f" "" 0 0 ""
&*  angle = [atom_name*3 angle_ideal weight id]
&*  angle = "a" "b" "c" 3.2 15.1 "d"
&*  angle = "e" "f" "g" 0 0 ""
&*  dihedral = [atom_name*4 angle_ideal weight periodicity id]
&*  dihedral = "a" "b" "c" "d" 4.3 1.5 3 "e"
&*  dihedral = "f" "g" "h" "i" 0 0 0 ""
&*  chirality = [atom_name*4 volume_sign both_signs volume_ideal weight id]
&*  chirality = "a" "b" "c" "d" "e" True 10.3 1.5 "f"
&*  chirality = "g" "h" "i" "j" "" False 0 0 ""
&*  planarity {
&*    id = "c"
&*    atom = [name weight]
&*    atom = "a" 1
&*    atom = "b" 2
&*  }
&*  planarity {
&*    id = ""
&*    atom = [name weight]
&*    atom = "d" 3
&*  }
&*}
t   input_string(    (    (   R	   R   (   R(   R)   (   (   R(   R)   (   R	   R   (   R(   R)   (    (   R	   R   R   (   R(   R)   R*   (   (   R(   R)   R*   (   R	   R   R   (   R(   R)   R*   (    (   R	   R   R   R   (   R)   R*   R+   RA   (   (   R)   R*   R+   RA   (   R	   R   R   R   (   R)   R*   R+   RA   (    (   R	   R   R   R   (   R*   R+   RA   RB   (   (   R*   R+   RA   RB   (   R	   R   R   R   (   R*   R+   RA   RB   ()   R   t   motifR   R   t   descriptiont   infoR=   t   manipulation_idst   lent   atoms_as_listt   bonds_as_listt   angles_as_listt   dihedrals_as_listt   chiralities_as_listt   planarities_as_listt   appendR   t	   set_atomsR   R    t	   set_bondsR   R&   t
   set_anglesR0   t   set_dihedralsR8   R7   t   set_chiralitiesR<   R   R>   R   t   set_planaritiesR?   R   t   showR   t   getvalueR   t   parse(   R/   R	   R-   R.   t   atomt   bondt   anglet   dihedralt	   chiralityt	   planarityRC   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_motif˜   s’    		
141111		"	#	c          C   sj  t  j ƒ  }  |  j d k s! t ‚ |  j d k s6 t ‚ t  j d d ƒ }  |  j d k s] t ‚ |  j d k sr t ‚ t  j d d d d ƒ }  |  j d k sŸ t ‚ |  j d k s´ t ‚ |  j j ƒ  d k sÏ t ‚ |  j j d k sç t ‚ |  j	 d k sü t ‚ |  j
 j d+ k st ‚ |  j j d, k s,t ‚ |  j j d- k sDt ‚ |  j j d. k s\t ‚ |  j j j ƒ  d k szt ‚ |  j d k s�t ‚ |  j ƒ  g  k s§t ‚ |  j ƒ  sºt ‚ |  j ƒ  sÍt ‚ |  j ƒ  sàt ‚ |  j ƒ  sót ‚ |  j ƒ  st ‚ |  j ƒ  st ‚ |  j ƒ  s,t ‚ x8 d d d d g D]$ } | |  _ |  j | k s?t ‚ q?Wy d	 |  _ Wn+ t k
 r¡} t | ƒ d
 k s¨t ‚ n Xt ‚ xA d d d d d d d g D]$ } | |  _ |  j | k sÄt ‚ qÄWy d |  _ Wn+ t k
 r&} t | ƒ d k s-t ‚ n Xt ‚ t j d d g ƒ |  _ t |  j ƒ d d g k sft ‚ t  j d d ƒ |  _ |  j j d k s“t ‚ d |  _	 |  j	 d k s±t ‚ t  j  d d d g ƒ |  _
 |  j
 j d/ k sät ‚ t  j! d d d d g ƒ |  _ |  j j d0 k st ‚ t  j" d d d d d  g ƒ |  _ |  j j d1 k sSt ‚ t  j# d d! d" d# d$ g ƒ |  _ |  j j d2 k sŒt ‚ t  j$ d t j d% d& g ƒ d' t j% d( d) g ƒ ƒ |  _ d |  _ |  j d k sãt ‚ |  j& d d d g ƒ |  j ƒ  d d d g k st ‚ y |  j& d d	 d g ƒ Wn+ t k
 ra} t | ƒ d
 k sht ‚ n Xt ‚ |  j ƒ  g  k s€t ‚ t |  j j ƒ d% d& g k s¤t ‚ |  j' d* t( ƒ |  k sÂt ‚ |  j ƒ  sÔt ‚ |  j ƒ  sçt ‚ |  j) d* t( ƒ |  k st ‚ |  j ƒ  st ‚ |  j ƒ  s*t ‚ |  j* d* t( ƒ |  k sHt ‚ |  j ƒ  sZt ‚ |  j ƒ  smt ‚ |  j+ d* t( ƒ |  k s‹t ‚ |  j ƒ  s�t ‚ |  j ƒ  s°t ‚ |  j, d* t( ƒ |  k sÎt ‚ |  j ƒ  sàt ‚ |  j ƒ  sót ‚ |  j- d* t( ƒ |  k st ‚ |  j ƒ  s#t ‚ |  j ƒ  s6t ‚ |  j. d* t( ƒ |  k sTt ‚ |  j ƒ  sft ‚ d  S(3   NR
   t   actiont   addt   changet   operandR\   i    t   deletet   chnages‡   Unknown cctbx::geometry_restraints::motif::alteration::action_type: "chnage"
  Possible action types are: "", "add", "delete", "change"R[   R]   R^   R_   R`   t   diehdrals¯   Unknown cctbx::geometry_restraints::motif::alteration::operand_type: "diehdral"
  Possible operand types are: "", "atom", "bond", "angle", "dihedral", "chirality", "planarity"t   -t   +R   R	   R   R   R   R   R   R(   R)   R+   RA   RB   R-   R.   R/   t   nt   oR#   R$   R;   i   i   t   state(   R
   R
   (   R
   R
   R
   (   R
   R
   R
   R
   (   R
   R
   R
   R
   (   R   R   (   R   R(   R)   (   R+   RA   RB   R-   (   R.   R/   Rk   Rl   (/   R   t   motif_alterationRb   R   Re   t	   motif_idsR=   R[   R   t   motif_atom_nameR\   R   R]   R^   R_   R`   t   planarity_motif_idt   planarity_atom_actions_as_listt   change_partial_charget   change_distance_idealt   change_weightt   change_angle_idealt   change_periodicityt   change_both_signst   change_volume_idealt   RuntimeErrort   strR   R   R>   R?   R   R    R&   R0   R7   R<   R   t   set_planarity_atom_actionst   set_change_partial_chargeR8   t   set_change_distance_idealt   set_change_weightt   set_change_angle_idealt   set_change_periodicityt   set_change_both_signst   set_change_volume_ideal(   R	   Rb   R(   Re   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_alteration  s¸    	 	 !	!			! $c          C   s¬  t  j ƒ  }  |  j d k s! t ‚ |  j d k s6 t ‚ |  j j ƒ  d k sQ t ‚ t |  j ƒ  ƒ d k so t ‚ d |  _ |  j d k s� t ‚ d |  _ |  j d k s« t ‚ |  j j	 d ƒ |  j j	 d ƒ t
 |  j ƒ d d g k sì t ‚ g  } t  j ƒ  } d | _ d | _ | j	 | ƒ t  j ƒ  } d	 | _ d
 | _ | j	 | ƒ |  j | ƒ |  j ƒ  } t | ƒ d k syt ‚ | d j d k s’t ‚ | d j d k s«t ‚ | d j d	 k sÄt ‚ | d j d
 k sÝt ‚ t  j ƒ  }  d |  _ d |  _ |  j j	 d ƒ g  } t  j d d d d ƒ } | j j	 d ƒ d | j _ d | j _ d | j _ d | j _ | j	 | ƒ x’ t t g D]„ } t  j d d d d ƒ } | j j	 d ƒ d | _ d | j _ d | j _ d | j _ d | j _ | j d | ƒ | j	 | ƒ qƒWt  j d d	 d d ƒ } | j j	 d ƒ d | _ | j	 | ƒ t  j d d d d ƒ } | j j	 d ƒ | j j	 d ƒ d d  g | j _ d! | j _ d" | j _ d | j _ | j	 | ƒ xÆ t t g D]¸ } x¯ t t g D]¡ } t  j d d d d ƒ } | j j	 d ƒ | j j	 d# ƒ d$ d% g | j _ d& | j _ d' | j _ d( | j _ | j d | ƒ | j d | ƒ | j	 | ƒ qäWqÑWt  j d d	 d d ƒ } | j j	 d) ƒ | j j	 d* ƒ d+ d, g | j _ | j	 | ƒ t  j d d d d
 ƒ } | j j	 d ƒ | j j	 d ƒ | j j	 d ƒ d d  d$ g | j _ d! | j _  d" | j _ d | j _ | j	 | ƒ xÙ t t g D]Ë } xÂ t t g D]´ } t  j d d d d
 ƒ } | j j	 d ƒ | j j	 d# ƒ | j j	 d) ƒ d$ d% d( g | j _ d& | j _  d' | j _ d( | j _ | j! d | ƒ | j d | ƒ | j	 | ƒ q’WqWt  j d d	 d d
 ƒ } | j j	 d* ƒ | j j	 d- ƒ | j j	 d. ƒ d+ d, d g | j _ | j	 | ƒ t  j d d d d/ ƒ } | j j	 d ƒ | j j	 d ƒ | j j	 d ƒ | j j	 d# ƒ d d  d$ d g | j" _ d! | j" _  d" | j" _ d0 | j" _# d | j" _ | j	 | ƒ xt t g D]} xt t g D]ú } xñ t t g D]ã }	 t  j d d d d/ ƒ } | j j	 d) ƒ | j j	 d* ƒ | j j	 d- ƒ | j j	 d. ƒ d$ d% d( d1 g | j" _ d& | j" _  d' | j" _ d2 | j" _# d( | j" _ | j! d | ƒ | j d | ƒ | j$ d |	 ƒ | j	 | ƒ q˜Wq…WqrWt  j d d	 d d/ ƒ } | j j	 d3 ƒ | j j	 d4 ƒ | j j	 d5 ƒ | j j	 d6 ƒ d+ d, d d g | j" _ | j	 | ƒ t  j d d d d7 ƒ } | j j	 d ƒ | j j	 d ƒ | j j	 d ƒ | j j	 d# ƒ d d  d$ d g | j% _ d | j% _& d! | j% _' d" | j% _ d8 | j% _ | j	 | ƒ xø t t g D]ê }
 xá t t g D]Ó } t  j d d d d7 ƒ } | j j	 d) ƒ | j j	 d* ƒ | j j	 d- ƒ | j j	 d. ƒ d$ d% d( d1 g | j% _ d9 | j% _& d& | j% _' d' | j% _ d( | j% _ | j( d |
 ƒ | j d | ƒ | j	 | ƒ qÑ	Wq¾	Wt  j d d	 d d7 ƒ } | j j	 d3 ƒ | j j	 d4 ƒ | j j	 d5 ƒ | j j	 d6 ƒ d+ d, d d g | j% _ | j	 | ƒ t  j d d d d: ƒ } d- | _) d1 | j* _ | j j	 d ƒ | j j	 d ƒ | j j	 d ƒ | j* j j	 d ƒ | j* j j	 d ƒ | j* j j	 d; ƒ | j* j+ j	 d! ƒ | j* j+ j	 d< ƒ | j* j+ j	 d= ƒ | j	 | ƒ t  j d d d d: ƒ } d. | _) d; | j* _ | j, d d d	 g ƒ | j j	 d ƒ | j j	 d ƒ | j j	 d ƒ | j* j j	 d ƒ | j* j j	 d ƒ | j* j j	 d; ƒ | j* j+ j	 d! ƒ | j* j+ j	 d< ƒ | j* j+ j	 d ƒ | j	 | ƒ t  j d d	 d d: ƒ } d# | _) d, | j* _ | j	 | ƒ |  j | ƒ t- ƒ  } |  j. d> | d? d@ ƒ t/ | j0 ƒ  dA ƒ syt ‚ t- ƒ  } |  j. d> | ƒ t1 j2 dB | j0 ƒ  ƒ d  S(C   NR
   i    R	   R   R   R   Rc   R\   Rf   R]   i   i   Rb   Re   R[   t   1R   R   R   gš™™™™™É¿Rd   t   0R#   R$   R%   t   sg333333Ó?Rm   t   3t   2RB   R-   g333333ó?gÍÌÌÌÌÌ@t   4R.   R/   g      @gffffff@R*   t   5t   6R   Rk   t   7t   8R^   i   R(   i   t   9t   10t   11t   12R_   t   wR   R`   R)   gffffff@g333333@RC   RD   t   ^s6  ^geometry_restraints.motif_manipulation {
^  id = "a"
^  description = "b"
^  info = "c"
^  atom = add [motif_id name scattering_type nonbonded_type partial_charge]
^  atom = add "1" "x" "y" "z" -0.2
^  atom = change [motif_id motif_atom_name \
^                 name scattering_type nonbonded_type partial_charge]
^  atom = change "0" "p" \
^                "q" "r" "s" None
^  atom = change "0" "p" \
^                "q" "r" "s" 0.3
^  atom = delete [motif_id motif_atom_name]
^  atom = delete "3" "d"
^  bond = add [(motif_id atom_name)*2 type distance_ideal weight id]
^  bond = add "1" "j" "2" "k" 1.2 3.1 "s"
^  bond = change [(motif_id atom_name)*2 type distance_ideal weight id]
^  bond = change "3" "l" "4" "m" None None "g"
^  bond = change "3" "l" "4" "m" None 2.8 "g"
^  bond = change "3" "l" "4" "m" 4.5 None "g"
^  bond = change "3" "l" "4" "m" 4.5 2.8 "g"
^  bond = delete [(motif_id atom_name)*2]
^  bond = delete "5" "t" "6" "n"
^  angle = add [(motif_id atom_name)*3 type angle_ideal weight id]
^  angle = add "1" "j" "2" "k" "3" "l" 1.2 3.1 "s"
^  angle = change [(motif_id atom_name)*3 type angle_ideal weight id]
^  angle = change "3" "l" "4" "m" "5" "g" None None "g"
^  angle = change "3" "l" "4" "m" "5" "g" None 2.8 "g"
^  angle = change "3" "l" "4" "m" "5" "g" 4.5 None "g"
^  angle = change "3" "l" "4" "m" "5" "g" 4.5 2.8 "g"
^  angle = delete [(motif_id atom_name)*3]
^  angle = delete "6" "t" "7" "n" "8" "d"
^  dihedral = add [(motif_id atom_name)*4 angle_ideal weight periodicity id]
^  dihedral = add "1" "j" "2" "k" "3" "l" "4" "r" 1.2 3.1 20 "s"
^  dihedral = change [(motif_id atom_name)*4 angle_ideal weight periodicity id]
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" None None None "g"
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" None None 13 "g"
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" None 2.8 None "g"
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" None 2.8 13 "g"
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" 4.5 None None "g"
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" 4.5 None 13 "g"
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" 4.5 2.8 None "g"
^  dihedral = change "5" "l" "6" "m" "7" "g" "8" "e" 4.5 2.8 13 "g"
^  dihedral = delete [(motif_id atom_name)*4]
^  dihedral = delete "9" "t" "10" "n" "11" "d" "12" "y"
^  chirality = add [(motif_id atom_name)*4 \
^                   volume_sign volume_ideal weight id]
^  chirality = add "1" "j" "2" "k" "3" "l" "4" "r" \
^                  "x" 1.2 3.1 "w"
^  chirality = change [(motif_id atom_name)*4 \
^                      volume_sign volume_ideal weight id]
^  chirality = change "5" "l" "6" "m" "7" "g" "8" "e" \
^                     "u" None None "g"
^  chirality = change "5" "l" "6" "m" "7" "g" "8" "e" \
^                     "u" None 2.8 "g"
^  chirality = change "5" "l" "6" "m" "7" "g" "8" "e" \
^                     "u" 4.5 None "g"
^  chirality = change "5" "l" "6" "m" "7" "g" "8" "e" \
^                     "u" 4.5 2.8 "g"
^  chirality = delete [(motif_id atom_name)*4]
^  chirality = delete "9" "t" "10" "n" "11" "d" "12" "y"
^  planarity {
^    action = add
^    motif_id = "7"
^    id = "e"
^    atom = [motif_id name weight]
^    atom = "1" "s" 1.2
^    atom = "2" "d" 2.3
^    atom = "3" "f" 3.4
^  }
^  planarity {
^    action = change
^    motif_id = "8"
^    id = "f"
^    atom = add [motif_id name weight]
^    atom = add "1" "s" 1.2
^    atom = change [motif_id name weight]
^    atom = change "2" "d" 2.3
^    atom = delete [motif_id name]
^    atom = delete "3" "f"
^  }
^  planarity {
^    action = delete
^    motif_id = "4"
^    id = "n"
^  }
^}
RE   (3   R   t   motif_manipulationR   R   RG   RH   R=   RJ   t   alterations_as_listRQ   R?   Rn   Rb   Re   t   set_alterationsRo   R[   R   R   R   R   R9   R8   Rp   R}   R\   R   R   R   R~   R   R]   R"   R€   R^   R,   R�   R_   R2   R5   Rƒ   Rq   R`   R;   R|   R   RX   R   RY   R   RZ   (   R/   t   altsR	   R.   t   alterationsRs   Rt   Ru   Rv   Rw   Ry   RC   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise_manipulationg  s¸   		!																		X	c           C   sK   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  GHd  S(   N(
   R   R!   R'   R1   R:   R@   Ra   R„   Rš   R   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   exercise¤  s    t   __main__N(   t
   __future__R    t   cctbxR   t   cctbx.array_familyR   t   libtbxR   t   libtbx.utilsR   t   libtbx.test_utilsR   R   t	   cStringIOR   R   R!   R'   R1   R:   R@   Ra   R„   Rš   R›   t   __name__(    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/geometry_restraints/tst_motif.pyt   <module>   s&   							m	b	ÿ >	