ó
®™xTc           @   sÍ  d  d l  m Z d  d l m Z d  d l m Z d  d l Z d  d l m Z d  d l	 m
 Z
 m Z d  d l m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l Z d  d	 l m Z d  d l Z d  d
 l m Z d  d l m Z d  d l Z d  d l Z d „  Z  e! d „ Z" e! d „ Z# d „  Z$ e! d d „ Z% d „  Z& e' d k rÉe  ƒ  e" d e j( k p‰d e j( k ƒ d e j( k rÁe# d e j( k pºd e j( k ƒ n  d GHn  d S(   iÿÿÿÿ(   t   division(   t   flex(   t   ramachandranN(   t   ramalyze(   t   servert   pdb_interpretation(   t   geometry_minimization(   t   file_reader(   t   approx_equal(   t
   group_args(   t   StringIOc          C   s]  t  j ƒ  d }  t |  j d d ƒ d d d ƒs7 t ‚ t |  j d d ƒ d d d ƒs^ t ‚ t |  j d	 d	 ƒ d
 d d ƒs… t ‚ t |  j d d ƒ d d d ƒs¬ t ‚ t |  j d d ƒ d d d ƒsÓ t ‚ |  j d d ƒ } |  j d d ƒ } t | | d d ƒst ‚ t |  j d d ƒ d d d ƒs9t ‚ t |  j d d ƒ d d d ƒs`t ‚ t j j d ƒ } | j	 ƒ  } | j
 | j d d d d d d g d d d  d! ƒ ƒ | j
 | j d d d" d# d$ d% g d d d  d& ƒ ƒ | j
 | j d d% d' d( d) d* g d d d  d! ƒ ƒ | j d+ d, d- t j t d' ƒ ƒ ƒ } | j ƒ  d k sYt ‚ d  S(.   Nt   alag        g)\�Âõ(:Àt   epsg{®Gáz„?iÄÿÿÿix   gR¸…ëÑ$@iZ   g¸…ëQ¸ÀgHáz®çJ@g=
×£p=1@g     @UÀg     @U@gè½1 @UÀgè½1 @U@g�íµ ÷Æ°>g     €U@gƒÀÊ¡U5@gü©ñÒMbP?g     €UÀgÝ$�•c5@t!   mmtbx_ramachandran_restraints_extt   i_seqsi    i   i   i   i   t   residue_namet   ALAt   residue_typet   generali   i   i   i   t   preproi	   i
   i   i   t   n_seqi   t
   iselection(   R   t   load_tablesR   t	   get_scoret   AssertionErrort
   get_energyt   boostt   pythont
   import_extt   shared_phi_psi_proxyt   appendt   phi_psi_proxyt   proxy_selectR   t   size_tt   ranget   size(   t   tt   e1t   e2t   extt   proxiest   selected(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_ramachandran.pyt   exercise_basic   s>    '''''''	
	
	
c         C   sY  d } d } d } d d d g } xŒt  | | | g ƒ D]u\ } } t j j d d d	 t j | ƒ ƒ } t j ƒ  } t j ƒ  }	 t j	 j
 ƒ  }
 t j d
 | d |	 d |
 d | d t ƒ  ƒ } t ƒ  } | j j } | j ƒ  } t j | d | ƒ} t | ƒ d k s	t ‚ | j ƒ  j ƒ  } t j | j ƒ  d ƒ } t j | j ƒ  d ƒ } t j j ƒ  j
 ƒ  }
 t j |
 ƒ } | j d | d | d | ƒ } t | | | d d ƒs7 t ‚ q7 W|  r¾d GHn  x”t  | | | g ƒ D]}\ } } t j j d d d	 t j | ƒ ƒ } t | |  ƒ } | 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$ } | j" j d j$ } | j# j d j$ } |  rÔd | d GHd | j% | j& f GHd | | | f GHd | j' | j( f GHd | | | f GHd | j) | j* f GHd | | | f GHd GHqÔqÔWd  S(   NsÚ  
CRYST1   10.000   10.000   10.000  90.00  90.00  90.00 P 1           1
ATOM      1  N   ALA A   2      -7.656   2.923   3.155  1.00 15.02           N
ATOM      2  CA  ALA A   2      -6.522   2.038   2.831  1.00 14.10           C
ATOM      3  C   ALA A   2      -5.241   2.537   3.427  1.00 13.13           C
ATOM      4  O   ALA A   2      -4.978   3.742   3.426  1.00 11.91           O
ATOM      5  CB  ALA A   2      -6.346   1.881   1.341  1.00 15.38           C
ATOM      6  H   ALA A   2      -8.111   3.328   2.362  1.00 15.02           H
ATOM      7  N   ALA A   3      -4.438   1.590   3.905  1.00 12.26           N
ATOM      8  CA  ALA A   3      -3.193   1.904   4.589  1.00 11.74           C
ATOM      9  C   ALA A   3      -1.955   1.332   3.895  1.00 11.10           C
ATOM     10  O   ALA A   3      -1.872   0.119   3.648  1.00 10.42           O
ATOM     11  CB  ALA A   3      -3.259   1.378   6.042  1.00 12.15           C
ATOM     12  H   ALA A   3      -4.629   0.611   3.830  1.00 12.26           H
ATOM     13  N   ALA A   4      -1.005   2.228   3.598  1.00 10.29           N
ATOM     14  CA  ALA A   4       0.384   1.888   3.199  1.00 10.53           C
ATOM     15  C   ALA A   4       1.435   2.606   4.088  1.00 10.24           C
ATOM     16  O   ALA A   4       1.547   3.843   4.115  1.00  8.86           O
ATOM     17  CB  ALA A   4       0.656   2.148   1.711  1.00  9.80           C
ATOM     18  H   ALA A   4      -1.172   3.214   3.626  1.00 10.29           H
END
sÚ  
CRYST1   10.000   10.000   10.000  90.00  90.00  90.00 P 1           1
ATOM      1  N   ALA A   2      -7.133   3.038   1.936  1.00 15.02           N
ATOM      2  CA  ALA A   2      -6.522   2.038   2.831  1.00 14.10           C
ATOM      3  C   ALA A   2      -5.241   2.537   3.427  1.00 13.13           C
ATOM      4  O   ALA A   2      -4.978   3.742   3.426  1.00 11.91           O
ATOM      5  CB  ALA A   2      -6.260   0.736   2.116  1.00 15.38           C
ATOM      6  H   ALA A   2      -7.242   2.739   0.988  1.00 15.02           H
ATOM      7  N   ALA A   3      -4.438   1.590   3.905  1.00 12.26           N
ATOM      8  CA  ALA A   3      -3.193   1.904   4.589  1.00 11.74           C
ATOM      9  C   ALA A   3      -2.919   3.406   4.698  1.00 11.10           C
ATOM     10  O   ALA A   3      -2.901   4.120   3.684  1.00 10.42           O
ATOM     11  CB  ALA A   3      -2.017   1.217   3.856  1.00 12.15           C
ATOM     12  H   ALA A   3      -4.629   0.611   3.830  1.00 12.26           H
ATOM     13  N   ALA A   4      -2.702   3.855   5.940  1.00 10.29           N
ATOM     14  CA  ALA A   4      -2.136   5.187   6.272  1.00 10.53           C
ATOM     15  C   ALA A   4      -2.252   5.506   7.787  1.00 10.24           C
ATOM     16  O   ALA A   4      -2.330   4.614   8.648  1.00  8.86           O
ATOM     17  CB  ALA A   4      -2.740   6.317   5.426  1.00  9.80           C
ATOM     18  H   ALA A   4      -2.913   3.309   6.751  1.00 10.29           H
END
sB  
CRYST1   20.000   20.000   20.000  90.00  90.00  90.00 P 1           1
ATOM      1  N   TRP A   2      -7.117   3.021   1.937  1.00  0.00           N
ATOM      2  CA  TRP A   2      -6.531   2.047   2.853  1.00  0.00           C
ATOM      3  C   TRP A   2      -5.234   2.561   3.433  1.00  0.00           C
ATOM      4  O   TRP A   2      -4.978   3.742   3.426  1.00  0.00           O
ATOM      5  CB  TRP A   2      -6.274   0.719   2.087  1.00  0.00           C
ATOM      6  CG  TRP A   2      -7.540  -0.019   1.642  1.00  0.00           C
ATOM      7  CD1 TRP A   2      -8.090   0.002   0.344  1.00  0.00           C
ATOM      8  CD2 TRP A   2      -8.418  -0.752   2.413  1.00  0.00           C
ATOM      9  CE2 TRP A   2      -9.485  -1.169   1.578  1.00  0.00           C
ATOM     10  CE3 TRP A   2      -8.409  -1.083   3.792  1.00  0.00           C
ATOM     11  NE1 TRP A   2      -9.302  -0.712   0.282  1.00  0.00           N
ATOM     12  CZ2 TRP A   2     -10.545  -1.931   2.116  1.00  0.00           C
ATOM     13  CZ3 TRP A   2      -9.464  -1.842   4.298  1.00  0.00           C
ATOM     14  CH2 TRP A   2     -10.516  -2.263   3.473  1.00  0.00           C
ATOM     25  N   TRP A   3      -4.433   1.613   3.906  1.00  0.00           N
ATOM     26  CA  TRP A   3      -3.184   1.900   4.605  1.00  0.00           C
ATOM     27  C   TRP A   3      -2.939   3.389   4.685  1.00  0.00           C
ATOM     28  O   TRP A   3      -2.901   4.120   3.684  1.00  0.00           O
ATOM     29  CB  TRP A   3      -2.011   1.214   3.851  1.00  0.00           C
ATOM     30  CG  TRP A   3      -0.639   1.384   4.511  1.00  0.00           C
ATOM     31  CD1 TRP A   3       0.385   2.247   4.070  1.00  0.00           C
ATOM     32  CD2 TRP A   3      -0.111   0.684   5.577  1.00  0.00           C
ATOM     33  CE2 TRP A   3       1.220   1.131   5.773  1.00  0.00           C
ATOM     34  CE3 TRP A   3      -0.658  -0.336   6.396  1.00  0.00           C
ATOM     35  NE1 TRP A   3       1.552   2.107   4.845  1.00  0.00           N
ATOM     36  CZ2 TRP A   3       2.010   0.567   6.798  1.00  0.00           C
ATOM     37  CZ3 TRP A   3       0.140  -0.873   7.407  1.00  0.00           C
ATOM     38  CH2 TRP A   3       1.454  -0.427   7.608  1.00  0.00           C
ATOM     49  N   TRP A   4      -2.711   3.897   5.951  1.00  0.00           N
ATOM     50  CA  TRP A   4      -2.097   5.179   6.287  1.00  0.00           C
ATOM     51  C   TRP A   4      -2.267   5.492   7.755  1.00  0.00           C
ATOM     52  O   TRP A   4      -2.330   4.614   8.648  1.00  0.00           O
ATOM     53  CB  TRP A   4      -2.755   6.297   5.432  1.00  0.00           C
ATOM     54  CG  TRP A   4      -2.461   6.213   3.931  1.00  0.00           C
ATOM     55  CD1 TRP A   4      -3.330   5.690   2.951  1.00  0.00           C
ATOM     56  CD2 TRP A   4      -1.294   6.534   3.269  1.00  0.00           C
ATOM     57  CE2 TRP A   4      -1.467   6.208   1.901  1.00  0.00           C
ATOM     58  CE3 TRP A   4      -0.064   7.064   3.735  1.00  0.00           C
ATOM     59  NE1 TRP A   4      -2.730   5.681   1.677  1.00  0.00           N
ATOM     60  CZ2 TRP A   4      -0.413   6.421   0.986  1.00  0.00           C
ATOM     61  CZ3 TRP A   4       0.960   7.272   2.810  1.00  0.00           C
ATOM     62  CH2 TRP A   4       0.788   6.958   1.455  1.00  0.00           C
END
gåP3bn0?g=bôÜ9s@g\>’’žnr@t   source_infot   peptidet   linest   mon_lib_srvt   ener_libt   paramst   pdb_inpt   logi   i    t
   sites_cartR(   t   gradient_arrayR   gñhãˆµøä>t    s
   peptide %ds-    before: rmsd_bonds=%-6.4f rmsd_angles=%-6.3fs*            phi=%-6.1f psi=%-6.1f score=%-.2fs-    simple: rmsd_bonds=%-6.4f rmsd_angles=%-6.3fs-    + Rama: rmsd_bonds=%-6.4f rmsd_angles=%-6.3f(   i    i    i    (   i    i    i    (+   t	   enumeratet   iotbxt   pdbt   inputR   t   split_linesR   R/   R   t   master_paramst   extractt   processR
   t   all_chain_proxiest   pdb_hierarchyt   atomsR   t   extract_proxiest   lenR   t   extract_xyzt	   deep_copyt   vec3_doubleR#   t   master_philt   fetcht   lookup_managert   restraints_residual_sumR   t   benchmark_structuret   r0t   resultst   phit   psit   r1t   r2t   scoret   b0t   a0t   b1t   a1t   b2t   a2(   t   verboset   pdb1t   pdb2t   pdb3t	   residualst   iR,   t   pdb_inR.   R/   R0   t   processed_pdb_fileR2   R?   R@   R(   t   sites_cart_1t   gradients_fdt   gradients_ant   restraints_helpert   residual_ant   ot   phi0t   psi0t   phi1t   psi1t   phi2t   psi2RK   RO   RP   (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_ramachandran.pyt   exercise_lbfgs_simple6   sh    ."				#"'''c         C   st   t  j j d d d t j j ƒ } | d  k r6 d GHd  St j | ƒ j	 } t
 | |  d ƒ } |  rp t | d ƒ n  d  S(   Nt   relative_paths   phenix_regression/pdb/3mku.pdbt   tests   Skipping big test.g      ð?t   3mhk(   t   libtbxt   envt   find_in_repositoriest   ost   patht   isfilet   NoneR   t   any_filet   file_objectRJ   t   show_results(   RX   t	   file_nameR^   Re   (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_ramachandran.pyt   exercise_lbfgs_bigÌ   s    c         C   sƒ   | GHd |  j  |  j |  j j |  j j f GHd |  j |  j |  j j |  j j f GHd |  j |  j	 |  j
 j |  j
 j f GHd GHd  S(   NsB    before: bonds=%-6.4f angles=%-6.3f outliers=%.1f%% favored=%.1f%%sB    simple: bonds=%-6.4f angles=%-6.3f outliers=%.1f%% favored=%.1f%%sB    + Rama: bonds=%-6.4f angles=%-6.3f outliers=%.1f%% favored=%.1f%%R5   (   RR   RS   RK   t   percent_outlierst   percent_favoredRT   RU   RO   RV   RW   RP   (   Re   t   structure_name(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_ramachandran.pyRy   Ø   s    $$$g      ð?c         C   s|  t  j  ƒ  } t  j ƒ  } t j j ƒ  } t j d | d | d | d |  d t ƒ  ƒ } t ƒ  } | j j } t	 d | d t
 ƒ }	 | j ƒ  }
 |
 j ƒ  j ƒ  } | j ƒ  } t j | d | ƒ} | j ƒ  } | d  k	 sÛ t ‚ | j d | ƒ } | j ƒ  d	 } | j ƒ  d	 } t j j j d
 t ƒ } t j d | d | d | d t j j d d ƒ ƒ } | j } | j } |
 j  | ƒ t	 d | d t
 ƒ } t j! j" ƒ  j ƒ  } t j# | ƒ } t$ j j% d | d | ƒ } | j& | ƒ t j d | d | d | d t j j d d ƒ ƒ } | j } | j } |
 j  | ƒ t	 d | d t
 ƒ } t' d | d | d | d | d | d | d |	 d | d | ƒ 	S(   NR.   R/   R0   R1   R2   R?   t   outliers_onlyR3   iÿÿÿÿt   defaultt   geometry_restraints_managert   geometry_restraints_flagst   lbfgs_termination_paramst   max_iterationsiô  t   ramachandran_proxiest   ramachandran_lookupRS   RU   RW   RR   RT   RV   RK   RO   RP   ((   R   R/   R   R;   R<   R=   R
   R>   R?   R   t   FalseR@   RC   RD   R   RA   R�   Rv   R   t   energies_sitest   bond_deviationst   angle_deviationst   cctbxt   geometry_restraintst   flagst   TrueR   t   lbfgst   scitbxt   termination_parameterst   rmsd_anglest
   rmsd_bondst   set_xyzRF   RG   RH   t   mmtbxt   managert   set_generic_restraintsR	   (   R^   RX   t   wR.   R/   R0   R_   R2   R?   RK   R@   R`   t   sites_cart_2R(   t   grmt   eRR   RS   R�   R�   RU   RT   RO   t   rama_lookupRc   RW   RV   RP   (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_ramachandran.pyRJ   â   st    									c          C   sø   t  j j d d d t j j ƒ }  |  d  k rE d GHd  St j ƒ  } n  t j ƒ  } t	 j
 j ƒ  j ƒ  } t | j _ t	 j d | d | d | d t d	 t ƒ  ƒ } | j j } t j j ƒ  j ƒ  } t | _ t j d | d
 | d t d d d	 t ƒ  ƒ d  S(   NRm   s   phenix_regression/pdb/3mku.pdbRn   s   Skipping test.R.   R/   R0   R1   R2   R?   t   secondary_structure_managert   d_ming333333@(   Rp   Rq   Rr   Rs   Rt   Ru   Rv   R   R/   R   R;   RG   R<   RŽ   t   peptide_linkt   ramachandran_restraintsR=   R^   R
   R>   R?   R   t   refine_opt_paramst   exclude_secondary_structuret   process_refinement_settingst   ss_mgr(   Rz   R.   R/   R0   R_   R?   t   params2(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_ramachandran.pyt   exercise_other  s2    			t   __main__s	   --verboses   -vs   --fullt   OK()   t
   __future__R    t   scitbx.array_familyR   t   mmtbx.geometry_restraintsR   R•   t   mmtbx.validation.ramalyzeR   t   mmtbx.monomer_libraryR   R   t   mmtbx.refinementR   R7   R   t	   iotbx.pdbt   cctbx.geometry_restraintsR‹   t   scitbx.lbfgsR�   t   boost.pythonR   t   libtbx.test_utilsR   t   libtbx.load_envRp   R	   t	   cStringIOR
   t   sysRs   R*   R‡   Rl   R{   Ry   RJ   R¦   t   __name__t   argv(    (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_ramachandran.pyt   <module>   s<   	!–	
<	"%