ó
©%�Tc           @   sÐ   d  d l  Z  d  d l Z d  d l Z d  d l j j Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d f  d „  ƒ  YZ d f  d „  ƒ  YZ d „  Z d f  d „  ƒ  YZ d	 „  Z d
 „  Z d „  Z d „  Z d S(   iÿÿÿÿNt	   PDB_Entryc           B   s   e  Z d  „  Z RS(   c         C   sÇ  | |  _  t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _	 t |  _
 t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _  t |  _! t |  _" t |  _# t |  _$ t |  _% t |  _& t |  _' t |  _( t |  _) y | d |  _ Wn t* k
 r©} n XyR | d |  _+ | d |  _, | d |  _- | d |  _. | d |  _/ | d |  _0 Wn t* k
 r} d G| GHn Xy | d	 |  _) Wn t* k
 rA} n XyR | d
 |  _' | d |  _( | d |  _# | d |  _$ | d |  _% | d |  _& Wn t* k
 r©} n Xy+ | d |  _ | d |  _ | d |  _ Wn t* k
 rê} n Xy+ | d |  _ | d |  _ | d |  _ Wn t* k
 r+} n Xy | d |  _	 | d |  _
 Wn t* k
 r_} n Xy+ | d |  _ | d |  _ | d |  _ Wn t* k
 r } n Xy+ | d |  _ | d |  _ | d |  _ Wn t* k
 rá} n Xy | d |  _ | d |  _ Wn t* k
 r} n Xy+ | d |  _ | d  |  _ | d! |  _ Wn t* k
 rV} n Xy+ | d" |  _ | d# |  _ | d$ |  _ Wn t* k
 r—} n Xy | d% |  _ Wn t* k
 r¾} n Xy | d& |  _ Wn t* k
 rå} n XyE | d' |  _ | d( |  _ | d) |  _ | d* |  _ | d+ |  _ Wn t* k
 r@} n Xy | d, |  _ Wn t* k
 rg} n Xy | d- |  _  Wn t* k
 rŽ} n Xy | d. |  _! | d/ |  _" Wn t* k
 rÂ} n Xd  S(0   Nt   pdbids   PDB-revision-numbers   absolute-percentile-clashscores   relative-percentile-clashscoret   attemptedValidationStepst
   clashscores   num-H-reduces   PDB_Entry: KeyError with keyt&   RestypesNotcheckedForBondAngleGeometrys   percent-rama-outlierss   percent-rota-outlierss)   absolute-percentile-percent-rama-outlierss)   absolute-percentile-percent-rota-outlierss)   relative-percentile-percent-rama-outlierss)   relative-percentile-percent-rota-outlierst   Fo_Fc_correlationt
   IoverSigmat   numMillerIndicess)   absolute-percentile-percent-RSRZ-outlierss)   relative-percentile-percent-RSRZ-outlierss   percent-RSRZ-outlierst   acentric_outlierst   centric_outlierst   EDS_Rt   EDS_resolutiont   EDS_resolution_lowt   DataAnisotropyt   DataCompletenesst   WilsonBanisot   WilsonBestimates    relative-percentile-RNAsuitenesss    absolute-percentile-RNAsuitenesst   RNAsuitenesst   TwinLt   TwinFractiont   TwinL2t   xtriage_input_columnst   TransNCSt   DCC_Rt   DCC_refinement_programt	   DCC_Rfrees   absolute-percentile-DCC_Rfrees   relative-percentile-DCC_Rfreet   CCP4versiont   RefmacVersiont   bulk_solvent_kt   bulk_solvent_b(1   t   xml_file_namet   FalseR   R   R   R   t   percent_RSRZ_outlierst)   absolute_percentile_percent_RSRZ_outlierst)   relative_percentile_percent_RSRZ_outliersR   R	   R
   R   R   R   R   R   R   t    relative_percentile_RNAsuitenesst    absolute_percentile_RNAsuitenessR   R   R   R   R   R   R   R   R   t   absolute_percentile_DCC_Rfreet   relative_percentile_DCC_RfreeR   R   R   R   t)   absolute_percentile_percent_rama_outlierst)   absolute_percentile_percent_rota_outlierst)   relative_percentile_percent_rama_outlierst)   relative_percentile_percent_rota_outlierst   percent_rama_outlierst   percent_rota_outliersR   t   KeyErrort   PDB_revision_numbert   absolute_percentile_clashscoret   relative_percentile_clashscoreR   R   t   num_H_reduce(   t   selft   entry_attribR   t   e(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   __init__   s    																																											(   t   __name__t
   __module__R5   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR    	   s   t   ModelledSubgroupc           B   sy   e  Z d  d d „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ d d d	 „  ƒ  YZ d
 „  Z d „  Z RS(   t   bond_outlierc           B   s   e  Z d  „  Z RS(   c         C   s¢   t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ yR | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ Wn t k
 r� } n Xd  S(   Nt   atom0t   atom1t   meant   obst   stdevt   z(	   R   R:   R;   R<   R=   t   stddevR?   R>   R-   (   R2   t   bond_attribR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR5   Ä   s    						(   R6   R7   R5   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR9   Ã   s   t   mog_bond_outlierc           B   s   e  Z d  „  Z RS(   c         C   s¸   t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ y_ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ Wn t k
 r³ } n Xd  S(   Nt   Zscoret   atomsR<   t   mindifft   numobst   obsvalR>   (	   R   RC   RD   R<   RE   RF   RG   R>   R-   (   R2   t   mog_bond_attribR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR5   Ø   s"    							(   R6   R7   R5   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRB   ×   s   t   angle_outlierc           B   s   e  Z d  „  Z RS(   c         C   s¸   t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ y_ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ Wn t	 k
 r³ } n Xd  S(   NR:   R;   t   atom2R<   R=   R>   R?   (
   R   R:   R;   RJ   R<   R=   R@   R?   R>   R-   (   R2   t   angle_attribR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR5   î   s"    							(   R6   R7   R5   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRI   í   s   t   mog_angle_outlierc           B   s   e  Z d  „  Z RS(   c         C   s¸   t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ y_ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ Wn t k
 r³ } n Xd  S(   NRC   RD   R<   RE   RF   RG   R>   (	   R   RC   RD   R<   RE   RF   RG   R>   R-   (   R2   t   mog_angle_attribR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR5     s"    							(   R6   R7   R5   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRL     s   t   clashc           B   s   e  Z d  „  Z RS(   c         C   sv   t  |  _ t  |  _ t  |  _ t  |  _ y8 | d |  _ | d |  _ | d |  _ | d |  _ Wn t k
 rq } n Xd  S(   Nt   atomt   cidt   clashmagt   dist(   R   RO   RP   RQ   RR   R-   (   R2   t   clash_attribR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR5     s    				(   R6   R7   R5   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRN     s   c         C   s¼  g  |  _  g  |  _ g  |  _ g  |  _ g  |  _ t |  _ t |  _ t |  _ d  |  _
 t |  _ t |  _ | j } x?| D]7} | j d k r¶ |  j | j ƒ } | r¶ |  j  j | ƒ q¶ n  | j d k ró |  j | j ƒ } | ró |  j j | ƒ qó n  | j d k r0|  j | j ƒ } | r0|  j j | ƒ q0n  | j d k rm|  j | j ƒ } | rm|  j j | ƒ qmn  | j d k rs |  j | j ƒ } | rª|  j j | ƒ qªqs qs Wyë| d |  _ | d |  _ | d |  _ | d	 |  _ | d
 |  _ | d |  _ t |  _ t |  _ t |  _ t |  _ t |  _ t |  _ y | d |  _ Wn t  k
 r[} n Xy | d |  _ Wn t  k
 r‚} n Xy | d |  _ Wn t  k
 r©} n Xy | d |  _ Wn t  k
 rÐ} n Xy | d |  _ Wn t  k
 r÷} n Xy | d |  _ Wn t  k
 r} n Xy | d |  _ Wn t  k
 rE} n Xy | d |  _ Wn t  k
 rl} n Xy | d |  _ Wn t  k
 r“} n Xd  SWn t  k
 r·} d G| GHn Xd  S(   Ns   bond-outliers   mog-bond-outliers   angle-outliers   mog-angle-outlierRN   t   altcodet   resnumt   chaint   icodet   resnamet   modelt   rsrt   avgoccut   ramat   owabt	   NatomsEDSt   rscct   rsrzt   RNAscoret   suites#   ModelledSubgroup: KeyError with key(!   t   bond_outlierst   angle_outlierst   mog_bond_outlierst   mog_angle_outlierst   clashesR   R`   Ra   Rb   t   Nonet   flippable_sidechainR\   R1   t   attribt   tagR9   t   appendRB   RI   RL   RN   RT   RU   RV   RW   RX   RY   R_   R^   R]   R[   RZ   R-   (   R2   t   subgroupt   subgroup_attribt   childt   bot   aot   cR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR5   +  sª    																		c         C   sW  t  } g  } x |  j D]t } yX t t | j ƒ ƒ d k rs t } d | j d | j d | j } | j | ƒ n  Wq t	 k
 r‰ } q Xq WxŠ |  j
 D] } yc t t | j ƒ ƒ d k r t } d | j d | j d | j d | j } | j | ƒ n  Wq˜ t	 k
 r} q˜ Xq˜ Wxt |  j D]i } yM t t | j ƒ ƒ d k rwt } d | j d | j } | j | ƒ n  Wq%t	 k
 r�} q%Xq%Wxt |  j D]i } yM t t | j ƒ ƒ d k rît } d	 | j d | j } | j | ƒ n  Wqœt	 k
 r} qœXqœWxz |  j D]o } yS | j rkt | j ƒ d
 k rkt } d | j d | j } | j | ƒ qkn  Wqt	 k
 r�} qXqW|  j rÊt |  j ƒ d
 k rÊt } d |  j } | j | ƒ qÊn  |  j rt |  j ƒ d k  rt } d |  j } | j | ƒ qn  |  j rE|  j d k rEt } d } | j | ƒ qEn  | rO| St  Sd  S(   Ni   s   Bond Outlier t    s    z = i   s   Angle Outlier s   Mogul-based Bond Outlier s   , z = s   Mogul-based Angle Outlier gš™™™™™Ù?s   Clash atom s    score: s	   Bad RSRZ g      à?s   Bad RNAScore t   OUTLIERs   Ramachandran Outlier(   R   Rc   t   abst   floatR?   t   TrueR:   R;   Rl   t	   TypeErrorRd   RJ   Re   RC   RD   Rf   Rg   RQ   RO   R`   Ra   R\   (   R2   t   is_badt   problemsRp   t   sR4   Rq   RN   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   is_problematic_pœ  sz    #.				(    (    (    (    (    (	   R6   R7   R9   RB   RI   RL   RN   R5   R|   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR8   À   s   	qc   	      C   s¸   y˜ t  j |  ƒ } g  } xl | D]d } | j d k rO d } t | j | ƒ } n  | j d k r t | ƒ } | rƒ | j | ƒ qƒ q q W| | g } | SWn t k
 r³ } | GHt SXd  S(   Nt   Entrys   Fake-XML-FilenameR8   (	   t   ett
   fromstringRk   R    Rj   R8   Rl   t   IOErrorR   (	   t
   xml_stringt   treet   modelled_subgroupsRo   R   t
   entry_infoRm   t   validation_infoR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   parse_wwpdb_validation_xmlç  s     t   validation_entry_to_canvasc           B   st   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z RS(   c            sí  | |  _  d |  _ d |  _ d |  _ d |  _ d |  _ |  j ƒ  d |  _ t |  j d ƒ |  _	 t
 |  _ |  j  t
 k rét j t j ƒ ‰  d } |  j  j r® | |  j  j 7} n | |  j  j 7} ˆ  j | ƒ t j t
 d	 ƒ |  _ |  j j d
 ƒ t j ƒ  } t j ƒ  } | j d d ƒ t j d ƒ } t j t
 d	 ƒ } |  j j | t
 d ƒ |  j j | t
 d ƒ | j | t d ƒ |  j j | t
 d ƒ ˆ  j |  j ƒ ˆ  j ƒ  | j d |  j ƒ | j d ‡  f d †  ƒ | j  d ƒ |  _! n  d  S(   Ni,  i
   i    i   i   i   gš™™™™™ù?s   PDB Validation Report for i    i   i0  i  s	     Close  s   expose-eventt   clickedc            s
   ˆ  j  ƒ  S(   N(   t   destroy(   t   a(   t   window(    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   <lambda>!  s    t    ("   t   entry_validation_infot
   bar_lengtht
   bar_heightt   x_bar_offsett   y_bar_offsett   y_pixels_bar_spacingt   setup_colour_bar_bufft   abs_bar_widtht   intt   abs_bar_heightR   t   vboxt   gtkt   Windowt   WINDOW_TOPLEVELR   R   t	   set_titlet   VBoxt   set_border_widtht
   HSeparatort   DrawingAreat   set_size_requestt   Buttont   HBoxt
   pack_startRw   t   pack_endt   addt   show_allt   connectt   on_drawing_area_exposet   create_pango_layoutt   pangolayout(   R2   t   entry_validation_info_int   titlet   h_sept   dat   close_buttont   hbox(    (   R‹   s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR5   ý  sB    						
		
c         C   sB  d |  j  |  j d g } xt |  j  ƒ D]ú } t | ƒ t |  j  ƒ } t d d t j | d ƒ ƒ } | } d | d } | | } d | } t d | ƒ }	 t d t j | d	 ƒ ƒ }
 xd t |  j ƒ D]S } d |  j  | | } t | ƒ | | <t |	 ƒ | | d <t |
 ƒ | | d <qÎ Wq+ Wt j	 | d
 ƒ |  _
 d  S(   Ni   t    iÿ   i   i   i   g      à?ið   gš™™™™™É?R�   (   R�   R�   t   rangeRv   R–   t   matht   powt   chrt   stringt   joint   colour_bar_buff(   R2   Rr   t   jt   f_jt   rt   g_1t   g_2t   g_3t   g_4t   gt   bt   it   idx(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR”   $  s      

c         C   s‰   | j  ƒ  } | j t j } t j j d d d d d d ƒ } |  j | | ƒ } |  j | | ƒ |  j | | | ƒ |  j	 | | | ƒ d  S(   Nt   redi    t   greent   blue(
   t	   get_stylet   fg_gcR™   t   STATE_NORMALt   gdkt   Colort   draw_sliderst   draw_top_labelst   draw_bottom_labelst   draw_key(   R2   R¯   t   eventt   stylet   gct   black_colort	   n_sliders(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR©   :  s    !c      
   C   s?   | j  j | | | |  j |  j t j j |  j |  j d ƒ d  S(   Ni   (   R‹   t   draw_rgb_imageR�   R�   R™   RË   t   RGB_DITHER_NONER¹   (   R2   R¯   RÓ   t   xt   y(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRÖ   D  s    c         C   si   t  |  j d | |  j d |  j ƒ } t  | |  j d ƒ } | j j | t | | |  j |  j ƒ d  S(   Ng{®Gáz„?g      à?g      Ð?(	   R–   R‘   R�   R•   R�   R‹   t   draw_rectangleRw   R—   (   R2   t   abs_percentt   y_minR¯   RÓ   RØ   RÙ   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   bar_for_absI  s    )c         C   si   t  |  j d | |  j d |  j ƒ } t  | |  j d ƒ } | j j | t | | |  j |  j ƒ d  S(   Ng{®Gáz„?g      à?g      Ð?(	   R–   R‘   R�   R•   R�   R‹   RÚ   R   R—   (   R2   t   rel_percentRÜ   R¯   RÓ   RØ   RÙ   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   arcs_for_relO  s    )c   
      C   sÆ   |  j  } |  j |  j | d } |  j  |  j d } | } | j d ƒ } | j d ƒ t j d ƒ }	 |	 j t j	 ƒ | j
 |	 ƒ | j j | | | | ƒ | j d ƒ | j j | | | | ƒ d  S(   Ni   i    R�   t   Worses   Sans 8t   Better(   R‘   R’   R“   R�   Rª   t   set_textt   pangot   FontDescriptiont	   set_stylet   STYLE_ITALICt   set_font_descriptionR‹   t   draw_layout(
   R2   R¯   RÓ   RÕ   t   x_worset   y_worset   x_bettert   y_bettert   pl_wbt	   font_desc(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRÏ   U  s    	c         C   s  |  j  } |  j |  j | d d } | } | d } | d } | }	 | }
 |	 d } | j j | t | | |  j |  j ƒ | j j | t | | |  j |  j ƒ | j	 d ƒ } t
 j d ƒ } | j | ƒ | j d ƒ | j j | | |	 | ƒ | j d ƒ | j j | |
 | | ƒ d  S(   Ni   i
   i   R�   s   Sans 9s+   Percentile relative to all x-ray structuress=   Percentile relative to x-ray structures of similar resolution(   R‘   R’   R“   R‹   RÚ   Rw   R•   R—   R   Rª   Rã   Rä   Rç   Râ   Rè   (   R2   R¯   RÓ   RÕ   t   x_key_box_abst   y_key_box_abst   x_key_box_relt   y_key_box_relt   x_key_1t   y_key_1t   x_key_2t   y_key_2t   plRî   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRÐ   g  s&    	


c	         C   sà  |  j  |  j | d }	 |  j | | |  j |	 ƒ | }
 |
 j |
 j ƒ  j d ƒ ƒ | j j |
 t	 |  j |	 |  j
 |  j ƒ |
 j |
 j ƒ  j d ƒ ƒ | j d ƒ } | j d ƒ | j t j ƒ | j | ƒ | j ƒ  | j j | d | |	 d | ƒ t | t j ƒ rN|  j |  j
 d } | j | ƒ | j j | | |	 d | ƒ n  ys | t	 k r‚t | ƒ } |  j | |	 | | ƒ n  | t	 k r´t | ƒ } |  j | |	 | | ƒ t St | ƒ } Wn t k
 rÛ} | GHn Xt	 S(   Ni   s   #888888s   #000000R�   i   i   i   (   R’   R“   RÖ   R‘   t   set_foregroundt   get_colormapt   alloc_colorR‹   RÚ   R   R�   R�   Rª   t   set_justifyt   set_alignmentRã   t   ALIGN_RIGHTRâ   t   context_changedRè   t
   isinstancet   typest
   StringTypeRv   Rß   RÝ   Rw   Rx   (   R2   t   namet   x_for_rjt   abs_strt   rel_strt	   value_strt	   slider_noR¯   RÓ   RÙ   t   local_gcR«   t   x_for_valuet   relRu   R4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   draw_slider†  s8    (
! 	c         C   s  t  | ƒ d k rxï t t  | ƒ d ƒ D]Ô } d d | d } d d | d } t | | ƒ } t | | d ƒ } t |  j d | |  j ƒ }	 t | |  j d ƒ }
 t |  j d | |  j ƒ } t | |  j d ƒ } | j j | |	 |
 | | ƒ q) Wn  d  S(   Ni   i   i   i   g{®Gáz„?g      Ð?(	   t   lenR³   Rv   R–   R‘   R�   R�   R‹   t	   draw_line(   R2   t   pc_ranksR¯   RÓ   R  t   y_min_1t   y_min_2t   abs_1t   abs_2t   x_1t   y_1t   x_2t   y_2(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   draw_connecting_linesµ  s    c   	   	   C   s5  g  } d } |  j  j } |  j  j } |  j  j } | t k r� | t k r� |  j d d | | | | | | ƒ } | r‚ | j | ƒ n  | d 7} n  |  j  j } |  j  j } |  j  j	 } | t k r| t k r|  j d d | | | | | | ƒ } | r| j | ƒ n  | d 7} n  |  j  j
 } |  j  j } |  j  j } | t k r•| t k r•|  j d d | | | | | | ƒ } | rˆ| j | ƒ n  | d 7} n  |  j  j } |  j  j } |  j  j } | t k r| t k r|  j d d	 | | | | | | ƒ } | r| j | ƒ n  | d 7} n  |  j  j } |  j  j } |  j  j } | t k r›| t k r›|  j d
 d | | | | | | ƒ } | rŽ| j | ƒ n  | d 7} n  |  j  j } |  j  j } |  j  j } | t k r| t k r|  j d d | | | | | | ƒ } | r| j | ƒ n  | d 7} n  |  j | | | ƒ | S(   Ni    t   Rfreeir   i   t
   ClashscoreiN   s   Ramachandran Outlierss   Sidechain Outliersi    s   RSRZ Outliersi8   t   RNASuitenessi9   (   RŽ   R%   R&   R   R   R  Rl   R/   R0   R   R'   R)   R+   R(   R*   R,   R"   R!   R    R#   R$   R   R  (	   R2   R¯   RÓ   t   save_abst   icount_sliderRu   R
  t   valuet   state(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRÍ   Ç  sh    $$$$$$c         C   s¶   | j  d ƒ } | j  d ƒ } t j d ƒ } | j | ƒ | j d ƒ d } | j j | d | | ƒ | j d ƒ | j j | d | | ƒ | j d ƒ | j j | d	 | | ƒ d  S(
   NR�   s   Sans 13t   Metrici   id   s   Percentile Ranksiõ   t   ValueiÖ  (   Rª   Rã   Rä   Rç   Râ   R‹   Rè   (   R2   R¯   RÓ   R«   Rî   t   y_level(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyRÎ     s    (   R6   R7   R5   R”   R©   RÖ   RÝ   Rß   RÏ   RÐ   R  R  RÍ   RÎ   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyR‡   û  s   	'		
						/		>c            sê  ‡  f d †  } | ræt  j t d ƒ } t  j ƒ  } | j t  j t  j ƒ | j | ƒ | j d d ƒ xS|  D]K} | j	 ƒ  } | rm d } | | j
 7} | d 7} | | j 7} | d 7} | | j 7} | d 7} t }	 x, | D]$ }
 | d 7} | d	 7} | |
 7} qÝ Wt  j | ƒ } | j d k r/d
 | _ n  yX t | j ƒ } | j
 | | j g } | j d | | ƒ | j | t d ƒ | j ƒ  Wq¸t k
 r´d G| j
 G| j G| j GHq¸Xqm qm W| j | t d ƒ | j ƒ  | j ƒ  n  d  S(   Nc            s   t  ˆ  ƒ t | ƒ d  S(   N(   t   set_go_to_atom_moleculet   set_go_to_atom_from_res_spec(   t   buttont   residue_spec(   t   imol(    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   go_to_residue  s    
i    iÿÿÿÿiÈ   s   Residue Rs   t   :s   
s       R�   Rˆ   i   s   problem parsing(   R™   R�   R   t   ScrolledWindowt
   set_policyt   POLICY_AUTOMATICt   POLICY_ALWAYSt   add_with_viewportR¡   R|   RV   RU   RX   Rw   R¢   RW   R–   R¨   R¤   t   showt
   ValueError(   t	   subgroupsR˜   R&  R'  t   vbox_residue_buttonst   scrolled_wint   groupt   pt	   ri_stringt   is_firstt   p_it   residue_buttont   r_nR%  (    (   R&  s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   add_residue_buttons  sH    




%
c         C   s#   t  |  ƒ } t | | j | ƒ d  S(   N(   R‡   R:  R˜   (   RŽ   R0  R&  t   vi(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   validation_to_gui?  s    c         C   s   |  S(   N(    (   R0  (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   sort_subgroupsC  s    c         C   s  yó t  |  ƒ d k ré |  d |  d } d |  d } d } | | 7} | d 7} | |  7} | d 7} | |  7} | d 7} t | | ƒ } t j | ƒ } | j ƒ  } t | ƒ } | rò | d	 }	 | d }
 t |
 ƒ } t |	 | | ƒ qò n	 d
 G|  GHWn t k
 r} d G|  GHn Xd  S(   Ni   i   i   s   pdb-validation-s   .xml.gzs:   http://ftp.ebi.ac.uk/pub/databases/pdb/validation_reports/t   /s   _validation.xml.gzi    s    WARNING:: invalid accession codes   Failure to get validation for (	   R  t   coot_get_urlt   gzipt   opent   readR†   R=  R<  R-   (   t   accession_codeR&  t   middle_letterst   gz_file_namet   urlt   statust   gzR�   R;  RŽ   R0  t   ssR4   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   pdb_validateF  s.    







(   t   pygtkR™   Rã   t   xml.etree.ElementTreet   etreet   ElementTreeR~   R·   R´   R   R@  R    R8   R†   R‡   R:  R<  R=  RJ  (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/pdbe_validation_data.pyt   <module>   s   $·ÿ (	ÿ 	+		