ó
¤™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	 m
 Z
 d  d l m Z d  d l Z d „  Z e d k r� e ƒ  n  d S(	   iÿÿÿÿ(   t   division(   t   pdb(   t	   show_diffN(   t   loadst   dumps(   t   StringIOc          C   sÆ
  d d l  m }  t j j d d d t j j ƒ } | d  k rF d GHd  S|  d t	 ƒ d  k rd d GHd  Sd d	 l
 m } d d
 l m } | j d | ƒ } | j j } t j d | ƒ } | j ƒ  j ƒ  | j d | d t	 ƒ } t ƒ  } | j d | ƒ | j ƒ  }	 |	 j d ƒ d k st ‚ |	 j d ƒ d k s7t ‚ |	 j d ƒ d k sRt ‚ |	 j d ƒ d k smt ‚ |	 j d ƒ d k sˆt ‚ |	 j d ƒ d k s£t ‚ |	 j d ƒ d k s¾t ‚ |	 j d ƒ d k sÙt ‚ |	 j d ƒ d k sôt ‚ t | j ƒ  ƒ d k st ‚ t g  ƒ }
 | j ƒ  } xA | j ƒ  D]3 } | | } | | j ƒ  } |
 j | j ƒ  ƒ q7Wt  g  | j! D] } | j" ƒ  ^ q{ƒ } t  t# |
 ƒ ƒ } | | k sºt ‚ | j d | d t$ ƒ } xt$ t	 g D]q} | r t% t& | ƒ ƒ } n  x, | j! D]! } t | j' ƒ d  k s
t ‚ q
Wt ƒ  } | j d | d! t$ ƒ | j ƒ  }	 |	 j d ƒ d k sut ‚ |	 j d ƒ d" k s�t ‚ |	 j d ƒ d# k s«t ‚ |	 j d ƒ d$ k sÆt ‚ |	 j d ƒ d% k sát ‚ |	 j d ƒ d& k süt ‚ |	 j d ƒ d k st ‚ |	 j d ƒ d' k s2t ‚ |	 j d ƒ d( k sMt ‚ | j( ƒ  } | j) ƒ  d d) | f k s{t ‚ | j* ƒ  d# d* | f k s�t ‚ | j+ ƒ  d" d+ | f k s¿t ‚ | j, ƒ  d$ d, | f k sát ‚ | j- ƒ  d% d- | f k st ‚ | j. ƒ  d& d. | f k s%t ‚ | j/ ƒ  d d/ | f k sGt ‚ | j0 ƒ  d' d0 | f k sit ‚ | j1 ƒ  d( d1 | f k s‹t ‚ | d[ k s�t ‚ |	 j2 ƒ  } t | ƒ d5 k sÁt ‚ g  } xI d d d6 d7 d8 d9 d: d; d< d= d> d? d@ dA g D] } | j3 | | ƒ qøWt4 dB j5 | ƒ dC ƒ s2t ‚ t | j ƒ  ƒ d k sßt ‚ qßWt j j d dD d t j j ƒ } | j d | ƒ } | j j } | j ƒ  j ƒ  | j d | d t	 ƒ } t ƒ  } | j d | ƒ | j ƒ  }	 |	 j d ƒ d k sût ‚ |	 j d ƒ d k st ‚ |	 j d ƒ d k s1t ‚ | j d | d t$ ƒ } xt$ t	 g D]	} | rwt% t& | ƒ ƒ } n  t ƒ  } | j d | d! t$ ƒ | j ƒ  }	 |	 j d ƒ dE k s½t ‚ |	 j d ƒ d k sØt ‚ |	 j d ƒ d k sót ‚ |	 j d ƒ dF k st ‚ |	 j d ƒ d k s)t ‚ |	 j d ƒ d k sDt ‚ |	 j d ƒ d k s_t ‚ |	 j d ƒ dG k szt ‚ |	 j d ƒ dH k s•t ‚ | j( ƒ  } | j) ƒ  d d/ | f k sÃt ‚ | j* ƒ  d dI | f k såt ‚ | j+ ƒ  dE dJ | f k s	t ‚ | j, ƒ  dF dK | f k s)	t ‚ | j- ƒ  d dL | f k sK	t ‚ | j. ƒ  d dL | f k sm	t ‚ | j/ ƒ  d d/ | f k s�	t ‚ | j0 ƒ  dG dM | f k s±	t ‚ | j1 ƒ  dH dN | f k sÓ	t ‚ |	 j2 ƒ  } t | ƒ dO k s÷	t ‚ g  } x@ d d d dP dH dQ dR dS dT dU dE g D] } | j3 | | ƒ q%
Wt4 dB j5 | ƒ dV ƒ sVt ‚ qVWd d  l6 } | j j j dW dX ƒ } | j d | j d t$ ƒ } t | j! ƒ d  k s½
t ‚ dY GHd  S(\   Niÿÿÿÿ(   t   find_rotarama_data_dirt   relative_paths   phenix_regression/pdb/jcm.pdbt   tests?   Skipping exercise_ramalyze(): input pdb (jcm.pdb) not availablet   optionalsC   Skipping exercise_ramalyze(): rotarama_data directory not available(   t   ramalyze(   t   file_readert	   file_namet   pdb_hierarchyt   outliers_onlyt   outt   OUTLIERid   t   Favoredi    t   Allowedt   Generali@   t   Glycinei   s   Trans-prolinei   s   Cis-prolines   Pre-prolinei   s   Isoleucine or valinei   i  i   t   verboseiÍ  i¢   i  i'   i   i   i   g      Y@g     @d@g     Ð|@g     €@g     €C@g      7@g        g      5@g     À_@iK   iš   iî  iÓ  i¨   i©   iÉ  iÊ  iË  iÌ  iÍ  iÎ  iÏ  iÐ  iÑ  iÒ  s   
s¯   A  15  SER:35.07:-83.26:131.88:Favored:General
 A  16  SER:0.74:-111.53:71.36:Allowed:General
 A 191  ASP:2.66:-42.39:121.87:Favored:Pre-proline
 A 192  PRO:0.31:-39.12:-31.84:Allowed:Trans-proline
 B 368  LYS:56.44:-62.97:-53.28:Favored:General
 B 369  GLU:8.89:-44.36:-45.50:Favored:General
 B 370  LYS:40.00:-50.00:-39.06:Favored:General
 B 371  VAL:68.24:-60.38:-51.85:Favored:Isoleucine or valine
 B 372  LEU:0.02:-61.13:-170.23:OUTLIER:General
 B 373  ARG:0.02:60.09:-80.26:OUTLIER:General
 B 374  ALA:0.13:-37.21:-36.12:Allowed:General
 B 375  LEU:11.84:-89.81:-41.45:Favored:General
 B 376  ASN:84.33:-58.30:-41.39:Favored:General
 B 377  GLU:30.88:-56.79:-21.74:Favored:Generals!   phenix_regression/pdb/pdb1jxt.enti/   i   i   i   g      ð?g     €G@g      ;@g      @g      @g       @i0   i   i	   i
   i,   i-   i.   sL   A   2 ATHR:33.85:-106.92:144.23:Favored:General
 A   2 BTHR:37.07:-97.44:137.00:Favored:General
 A   7 AILE:98.76:-61.91:-44.35:Favored:Isoleucine or valine
 A   7 BILE:61.50:-56.21:-51.56:Favored:Isoleucine or valine
 A   8 AVAL:23.11:-50.35:-49.64:Favored:Isoleucine or valine
 A   8 BVAL:12.01:-83.20:-12.14:Favored:Isoleucine or valine
 A   8 CVAL:73.11:-61.22:-36.49:Favored:Isoleucine or valine
 A  43 AASP:51.81:-94.64:5.45:Favored:General
 A  43 BASP:56.98:-88.69:-0.12:Favored:General
 A  44  TYR:1.76:-133.10:58.75:Allowed:General
 A  45  ALA:57.37:-86.61:-8.57:Favored:Generalt
   pdb_strings¤  ATOM   1468  N   GLY A 219       3.721  21.322  10.752  1.00 14.12           N
ATOM   1469  CA  GLY A 219       3.586  21.486  12.188  1.00 14.85           C
ATOM   1470  C   GLY A 219       4.462  20.538  12.995  1.00 15.63           C
ATOM   1471  O   GLY A 219       5.513  20.090  12.512  1.00 14.55           O
ATOM   1472  N   CYS A 220       4.036  20.213  14.235  1.00 15.02           N
ATOM   1473  CA  CYS A 220       4.776  19.228  15.068  1.00 15.56           C
ATOM   1474  C   CYS A 220       3.773  18.322  15.741  1.00 14.69           C
ATOM   1475  O   CYS A 220       2.799  18.828  16.338  1.00 15.54           O
ATOM   1476  CB  CYS A 220       5.620  19.906  16.174  1.00 15.72           C
ATOM   1477  SG  CYS A 220       6.762  21.133  15.448  1.00 15.45           S
ATOM   1478  N   ALA A 221A      4.054  17.017  15.707  1.00 14.77           N
ATOM   1479  CA  ALA A 221A      3.274  16.015  16.507  1.00 14.01           C
ATOM   1480  C   ALA A 221A      1.774  15.992  16.099  1.00 14.50           C
ATOM   1481  O   ALA A 221A      0.875  15.575  16.881  1.00 14.46           O
ATOM   1482  CB  ALA A 221A      3.440  16.318  17.935  1.00 12.28           C
ATOM   1483  N   GLN A 221       1.523  16.390  14.848  1.00 14.52           N
ATOM   1484  CA  GLN A 221       0.159  16.391  14.325  1.00 15.19           C
ATOM   1485  C   GLN A 221      -0.229  15.044  13.717  1.00 14.43           C
ATOM   1486  O   GLN A 221       0.641  14.280  13.307  1.00 16.88           O
ATOM   1487  CB  GLN A 221       0.002  17.491  13.272  1.00 16.41           C
ATOM   1488  CG  GLN A 221       0.253  18.906  13.805  1.00 16.52           C
ATOM   1489  CD  GLN A 221      -0.640  19.181  14.995  1.00 17.87           C
ATOM   1490  OE1 GLN A 221      -1.857  19.399  14.826  1.00 13.54           O
ATOM   1491  NE2 GLN A 221      -0.050  19.149  16.228  1.00 16.18           N
ATOM   1492  N   LYS A 222      -1.537  14.773  13.694  1.00 14.34           N
ATOM   1493  CA  LYS A 222      -2.053  13.536  13.125  1.00 15.07           C
ATOM   1494  C   LYS A 222      -1.679  13.455  11.655  1.00 14.88           C
ATOM   1495  O   LYS A 222      -1.856  14.424  10.883  1.00 14.32           O
t   OKiå   iÓ  (7   t   mmtbx.rotamer.rotamer_evalR   t   libtbxt   envt   find_in_repositoriest   ost   patht   isfilet   Nonet   Truet   mmtbx.validationR
   t   iotbxR   t   any_filet   file_objectt	   hierarchyR   t   inputt   atomst   reset_i_seqR   t   show_old_outputt   getvaluet   countt   AssertionErrort   lent   outlier_selectiont   sett   parentt   addt   id_strt   sortedt   resultst   atom_group_id_strt   listt   FalseR   R   t   xyzt   get_phi_psi_residues_countt   get_outliers_count_and_fractiont   get_allowed_count_and_fractiont   get_favored_count_and_fractiont   get_general_count_and_fractiont   get_gly_count_and_fractiont    get_trans_pro_count_and_fractiont   get_cis_pro_count_and_fractiont   get_prepro_count_and_fractiont   get_ileval_count_and_fractiont
   splitlinest   appendR   t   joint   iotbx.pdb.hierarchy(   R   t   regression_pdbR
   R   t   pdb_inR%   t   pdb_iot   rR   t   outputt   outlier_idsR'   t   i_seqt   atomt
   atom_groupt   ot	   outliers1t	   outliers2t   unpicklet   outliert   numtotalt   output_linest   selected_linest   xR"   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/regression/tst_ramalyze.pyt   exercise_ramalyze
   s   			
(			"""""""""7"						""""""""".				t   __main__(   t
   __future__R    R"   R   t   libtbx.test_utilsR   t   libtbx.load_envR   t   libtbx.easy_pickleR   R   t	   cStringIOR   t   os.pathR   RY   t   __name__(    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/validation/regression/tst_ramalyze.pyt   <module>   s   	Æ