ó
…™xTc           @   sF  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d „  Z d „  Z d „  Z d e	 f d „  ƒ  YZ
 d e	 f d	 „  ƒ  YZ d
 e	 f d „  ƒ  YZ d e	 f d „  ƒ  YZ d e	 f d „  ƒ  YZ d e	 f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d k rBe ƒ  d GHn  d S(   iÿÿÿÿ(   t   divisionNc         C   sf   y% t  |  d ƒ t  |  d ƒ } } Wn: t k
 ra } t d t | ƒ |  d |  d f ƒ ‚ n Xd  S(   Ni    i   s   %s
Offending values: %s, %s(   t   floatt
   ValueErrort   RuntimeErrort   str(   t   bint   d_maxt   d_mint   e(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   check_bin_format   s    %c         C   s   |  d  k r d  St |  ƒ Sd  S(   N(   t   NoneR   (   t   n(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   float_or_none   s     c         C   s.   |  j  d ƒ s t ‚ t t j d d |  ƒ ƒ S(   Nt   %s   \%$t    (   t   endswitht   AssertionErrorR   t   ret   sub(   t   value(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   percent_to_float   s    t   experiment_infoc           B   s   e  Z d  „  Z RS(   c         C   s   |  S(   N(    (   t   self(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   extract_all_stats   s    (   t   __name__t
   __module__R   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR      s   t   integration_infoc           B   s8   e  Z d  d „ Z d „  Z d „  Z d „  Z d „  Z RS(   t   NULLc         C   s(   | |  _  d  |  _ d  |  _ d  |  _ d  S(   N(   t   program_nameR
   t
   wavelengtht   distancet   twotheta(   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   __init__   s    			c         C   s   t  | ƒ |  _ d  S(   N(   R   R   (   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   set_wavelength   s    c         C   s   t  | ƒ |  _ d  S(   N(   R   R   (   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   set_distance"   s    c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt
   set_2theta%   s    c         C   s   |  S(   N(    (   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR   (   s    (   R   R   R    R!   R"   R#   R   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR      s
   			t   scaling_infoc           B   sS   e  Z d  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(	   R   c         C   sL   | |  _  i  |  _ i  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  S(   N(	   R   t   stats_overallt   binned_statsR
   t   binsR   R   t   n_reflt
   n_refl_all(   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR    ,   s    							c         C   sx   x | D] } t  | ƒ q W| |  _ |  j d  k rt t |  j d d ƒ } t |  j d d ƒ } |  j | | ƒ n  d  S(   Ni    iÿÿÿÿi   (   R	   R'   R   R
   R   t   set_d_max_min(   R   R'   R   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   set_bins6   s    	c         C   s   | |  _  | |  _ d  S(   N(   R(   R)   (   R   R(   R)   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt
   set_n_refl?   s    	c         C   sD   t  | ƒ | |  j k r0 |  j | j | ƒ n | g |  j | <d  S(   N(   R	   R&   t   append(   R   R   t	   stat_nameR   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   add_bin_statC   s    
c         C   s   | |  j  | <d  S(   N(   R%   (   R   R.   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   add_overall_statJ   s    c         C   s   | |  _  | |  _ d  S(   N(   R   R   (   R   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR*   M   s    	c         C   sí   d d l  m } t |  j d d ƒ } t |  j d d ƒ } |  j j d d  ƒ } |  j j d d  ƒ } |  j j d d  ƒ } |  j j d d  ƒ } | d	 | | f d
 |  j d |  j d t	 | ƒ d t	 | ƒ d t	 | ƒ d d  d t	 | ƒ ƒ S(   Niÿÿÿÿ(   t
   group_argsi   i    t   completenesst   multiplicityt   r_merges   i/sigmat	   d_max_minR(   R)   t   r_symt   r_meast   i_over_sigma(
   t   libtbxR1   R   R'   R%   t   getR
   R(   R)   R   (   R   R1   R   R   t   comp_overallt   mult_overallt   rmerg_overallt   s2n_overall(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR   Q   s    		c         C   s  d d l  m } t |  j d d ƒ } t |  j d d ƒ } |  j j d d  g ƒ d } |  j j d d  g ƒ d } |  j j d d  g ƒ d } |  j j d d  g ƒ d } | d	 | | f d
 d  d d  d t | ƒ d t | ƒ d t | ƒ d d  d t | ƒ ƒ S(   Niÿÿÿÿ(   R1   i   i    R2   R3   R4   s   i/sigmaR5   R(   R)   R6   R7   R8   (   R9   R1   R   R'   R&   R:   R
   R   (   R   R1   R   R   t   comp_bint   mult_bint	   rmerg_bint   s2n_bin(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   extract_outer_shell_statsb   s    (
   R   R   R    R+   R,   R/   R0   R*   R   RC   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR$   +   s   
							t   all_nonec           B   s   e  Z d  „  Z RS(   c         C   s   d  S(   N(   R
   (   R   t   name(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   __getattr__t   s    (   R   R   RF   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyRD   s   s   t
   empty_infoc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  ƒ  S(   N(   RD   (   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR   x   s    c         C   s   t  ƒ  S(   N(   RD   (   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyRC   z   s    (   R   R   R   RC   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyRG   w   s   	t   processing_infoc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  | |  _ | |  _ d  S(   N(   t
   experimentt   integrationt   scaling(   R   RI   RJ   RK   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyR    ~   s    		c         C   s   |  j  d  k	 r |  j  St ƒ  S(   N(   RI   R
   RD   (   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   get_experiment_infoƒ   s    c         C   s   |  j  d  k	 r |  j  St ƒ  S(   N(   RJ   R
   RD   (   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   get_integration_infoˆ   s    c         C   s   |  j  d  k	 r |  j  St ƒ  S(   N(   RK   R
   RG   (   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   get_scaling_info�   s    c            s×  d d l  m ‰  d d l m } d ‡  f d † } d  } |  j d  k	 rY |  j j ƒ  } n  d  } |  j d  k	 r€ |  j j ƒ  } n  d  } |  j d  k	 r§ |  j j ƒ  } n  g  } | j	 d ƒ | j	 d ƒ | j	 d ƒ | j	 d	 ƒ | j	 d
 ƒ | j	 d ƒ | j	 d ƒ | j	 d ƒ t
 | d d  ƒ } | d  k rHt
 | d d  ƒ } n  d } | d  k	 rºt j ƒ  }	 | | d d d d |	 ƒr§| | d d d d |	 ƒr§d } n d } d | }
 n d }
 | j	 d | ƒ | j	 d ƒ | j	 d ƒ | j	 d ƒ | j	 d ƒ | j	 d |
 ƒ | j	 d ƒ | j	 d ƒ | j	 d ƒ t
 |  j d d ƒ } | j	 d ƒ | j	 d  ƒ | j	 d! | ƒ t
 |  j d d ƒ } | j	 d" | ƒ | j	 d ƒ | j	 d# ƒ | | d$ d% ƒ } | | d& d% ƒ } | | d' d( ƒ } | | d) d ƒ } | j	 d* | ƒ | j	 d+ | ƒ | j	 d, | ƒ | j	 d- ƒ | j	 d. | ƒ | j	 d ƒ | j	 d/ ƒ d  } |  j d  k	 r—|  j j ƒ  } n  t
 | d0 d< ƒ \ } } ˆ  d1 | d2 d ƒj ƒ  } ˆ  d1 | d2 d ƒj ƒ  } | | d$ d% ƒ } | | d& d% ƒ } | | d' d( ƒ } | | d) d ƒ } | j	 d3 | ƒ | j	 d4 | ƒ | j	 d5 | ƒ | j	 d6 | ƒ | j	 d7 | ƒ | j	 d8 ƒ | j	 d9 | ƒ | j	 d ƒ g  | D] } d: | ^ q´} d; j | ƒ S(=   Niÿÿÿÿ(   t   format_value(   t   approx_equals   %.4fc            s+   t  |  | d  ƒ } ˆ  | | d d ƒj ƒ  S(   Nt   replace_none_withR   (   t   getattrR
   t   strip(   t   objt   attrt   fsR   (   RO   (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   format•   s    R   s   EXPERIMENTAL DETAILSs3    EXPERIMENT TYPE                : X-RAY DIFFRACTIONs&    DATE OF DATA COLLECTION        : NULLs&    TEMPERATURE           (KELVIN) : NULLs&    PH                             : NULLs&    NUMBER OF CRYSTALS USED        : NULLR   R   g—�z6«ø?t   epsg{®Gáz„?t   outgçŒ(í¾æ?t   Yt   Ns$    SYNCHROTRON              (Y/N) : %ss&    RADIATION SOURCE               : NULLs&    BEAMLINE                       : NULLs&    X-RAY GENERATOR MODEL          : NULLs#    MONOCHROMATIC OR LAUE    (M/L) : Ms$    WAVELENGTH OR RANGE        (A) : %ss&    MONOCHROMATOR                  : NULLs&    OPTICS                         : NULLR   s&    DETECTOR TYPE                  : NULLs&    DETECTOR MANUFACTURER          : NULLs$    INTENSITY-INTEGRATION SOFTWARE : %ss$    DATA SCALING SOFTWARE          : %ss   OVERALL.R2   s   %.1fR3   R6   s   %.5fR8   s%    COMPLETENESS FOR RANGE     (%%) : %ss$    DATA REDUNDANCY                : %ss$    R MERGE                    (I) : %ss&    R SYM                      (I) : NULLs$    <I/SIGMA(I)> FOR THE DATA SET  : %ss    IN THE HIGHEST RESOLUTION SHELL.R5   s   %.2fRQ   s.    HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : %ss.    HIGHEST RESOLUTION SHELL, RANGE LOW  (A) : %ss%    COMPLETENESS FOR SHELL     (%%) : %ss$    DATA REDUNDANCY IN SHELL       : %ss$    R MERGE FOR SHELL          (I) : %ss&    R SYM FOR SHELL            (I) : NULLs$    <I/SIGMA(I)> FOR SHELL         : %ss   REMARK 200 %ss   
(   NN(   t   libtbx.str_utilsRO   t   libtbx.test_utilsRP   R
   RI   R   RJ   RK   R-   RR   t	   cStringIOt   StringIORC   RS   t   join(   R   RP   RW   R   t   it   st   linesR   t   synchrotronRY   t   wlt   int_softwaret   scale_softwareR;   R<   R=   R>   t   shellt   _d_maxt   _d_minR   R   t   comp_lastbint   mult_lastbint   rmerg_lastbint   s2n_lastbint   linet   remark_lines(    (   RO   s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   format_remark_200’   s¢    	(   R   R   R    RL   RM   RN   Rq   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyRH   }   s
   				c         C   sÛ   t  d ƒ } xÈ t |  ƒ D]º \ } } | j ƒ  j d ƒ r’ | j ƒ  j ƒ  } x„ | D]8 } y t | ƒ } Wn t k
 r| qS X| j | ƒ PqS Wq | j ƒ  j d ƒ r | j ƒ  j ƒ  } | j t | d ƒ ƒ q q W| S(   Ns   HKL-2000s   Wavelength s   Detector to crystal distancei   (	   R   t	   enumerateRS   t
   startswitht   splitR   R   R!   R"   (   Rc   t   infoRa   Ro   t   fieldst   fieldR   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   parse_denzoí   s    c   	      C   sz  t  d ƒ } xgt |  ƒ D]Y\ } } | j ƒ  } | j d ƒ r² | } x)| t |  ƒ k  r® |  | j ƒ  } | j d ƒ r¡ t | j ƒ  d ƒ } | j | ƒ Pn  | d 7} qI Wq | j d ƒ r | } x¤ | | d k  rm|  | j ƒ  } | j d ƒ r%| j ƒ  } t | d ƒ } | j | ƒ n; | j d	 ƒ r`| j ƒ  } t | d ƒ } | j	 | ƒ n  | d 7} qÊ WPq q W| S(
   Nt   MOSFLMs   Beam Parameterst
   Wavelengthi   s   Detector Parametersid   s   Crystal to detector distanceiþÿÿÿs   Detector swing angle(
   R   Rr   RS   Rs   t   lenR   Rt   R!   R"   t   set_twotheta(	   Rc   Ru   Ra   Ro   t   jR   Rv   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   parse_mosflmÿ   s6    c         C   sL  t  |  ƒ } d } t d ƒ } d „  } d  } d  } xt |  ƒ D]\ } } d | k r» | d }	 xß|	 | k  r· |  |	 j ƒ  }
 |
 j d ƒ rª t |
 j ƒ  d ƒ } Pn  |	 d 7}	 qe Wq@ d	 | k r�g  } | d }	 x‹ |	 | d
 k  rd|  |	 }
 |
 j ƒ  j ƒ  } | | ƒ r6t | d ƒ } | j | | ƒ Pn! | d | d f } | j	 | ƒ |	 d 7}	 qÚ Wt  | ƒ d k s}t
 ‚ | j | ƒ q@ d | k r2| d }	 xž|	 | d
 k  r.|  |	 }
 |
 j ƒ  j ƒ  } | | ƒ rö| j d | d ƒ Pn+ | d | d f } | j | d | d ƒ |	 d 7}	 q¦Wq@ d | k r×| d }	 xù|	 | d
 k  rÓ|  |	 }
 |
 j ƒ  j ƒ  } | | ƒ r›| j d | d ƒ Pn+ | d | d f } | j | d | d ƒ |	 d 7}	 qKWq@ d | k r@ | }	 x` |	 | d
 k  rK|  |	 }
 |
 j ƒ  j ƒ  } |	 d 7}	 t  | ƒ d k rì| d d k rìPqìqìWxõ |	 | d k  r@|  |	 }
 |
 j ƒ  j ƒ  } t | d ƒ } t | d ƒ } | d } | d d k rñ| d d k rñ| j d d | | ƒ | j d | ƒ PnB | d | d f } | j | d d | | ƒ | j | d | ƒ |	 d 7}	 qOWq@ q@ W| S(   Ni    t   SCALAc         S   s   |  d d k o |  d d k S(   Ni    t   Alli   t   hkl(    (   Rv   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   is_table_end   s    s)   intensities and R-factors by batch numberi   s	   All filmsi   i   s-   Summary of observation redundancies by shellsid   iÿÿÿÿs   Average Redundancy Per ShellR3   s   I/Sigma in resolution shells:R2   s:   Summary of reflections intensities and R-factors by shellst   limitiÈ   iþÿÿÿR€   t   reflectionss   i/sigmas   %.2fR4   (   R{   R$   R
   Rr   RS   Rs   t   intRt   R,   R-   R   R+   R0   R/   R   (   Rc   t   n_linest   modeRu   R‚   R)   R(   Ra   Ro   R}   t   line2R'   Rv   t   bin_d_max_minR   t   i_meant
   sig_i_meanR4   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   parse_scalepack  s–    	








"

 c         C   s(  d d l  m } t d ƒ } | j d |  ƒ } d  } xt |  ƒ D]\ } } d | k rA |  | d j d ƒ sA d | k r‚ qA n  | } d  } d  }	 xº| t |  ƒ k  rM|  | j ƒ  } | j d	 ƒ rá t	 | j
 ƒ  d
 ƒ } n_| j d ƒ rd | k r| j d t	 | j
 ƒ  d ƒ ƒ n!| j d ƒ rGt	 | j
 ƒ  d ƒ }	 nù | j d ƒ rt	 | j
 ƒ  d
 ƒ } | j | |	 ƒ nÁ | j d ƒ s�| j d ƒ rÀ| j d t	 | j
 ƒ  d ƒ ƒ n€ | j d ƒ rò| j d t	 | j
 ƒ  d ƒ ƒ nN | j d ƒ r$| j d t	 | j
 ƒ  d ƒ ƒ n d | k s<d | k r@Pn  | d 7} q— WqA qA W| d  k	 sgt ‚ xº| D]²}
 |
 j j d ƒ r†|
 j d ƒ } | } g  } x' | D] } | j | | f ƒ | } q¨W| j | ƒ |
 j d ƒ } x0 t | | ƒ D] \ } } | j | d | ƒ q÷Wy |
 j d ƒ } Wn  t k
 rO|
 j d ƒ } n XxÍ t | | ƒ D] \ } } | j | d | ƒ q`Wqn|
 j j d ƒ rn|
 j d  ƒ } x0 t | | ƒ D] \ } } | j | d | ƒ q·W|
 j d! ƒ } x0 t | | ƒ D] \ } } | j | d | ƒ qùWPqnqnW| S("   Niÿÿÿÿ(   t
   data_plotsR   t	   log_liness   Summary data for i   s   </p>s   <brs   Low resolution limiti   t   RmergeR   R4   s   Total number of observationsi   s   Total number uniques   Mean((I)/sd(I))s   Mean(I)/sd(I)s   i/sigmat   CompletenessR2   t   MultiplicityR3   s   Outlier rejections   $$s   Analysis against resolutions   Dmin(A)t   Rmrgs   Mn(I/sd)s   Mn(I)/sds!   Completeness, multiplicity, Rmeass   %posst   Mlplct(   t   iotbxR�   R$   t   import_ccp4i_logfileR
   Rr   Rs   R{   RS   R   Rt   R0   R,   R   t   titlet   get_column_by_labelR-   R+   t   zipR/   t	   Exception(   Rc   R�   Ru   t   tablesR   Ra   Ro   R}   R(   R)   t   tablet   d_min_by_bint	   bin_d_maxR'   t	   bin_d_mint   rmerget
   rmerge_binR   t   s2nRB   R2   R?   R3   R@   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   parse_scalan  sx    #####
c         C   s‚   t  d ƒ } xo t |  ƒ D]a \ } } | j ƒ  } | j d ƒ r | j d ƒ d j ƒ  j ƒ  } | j t | d ƒ ƒ Pq q W| S(   Nt   XDSs   X-RAY_WAVELENGTHt   =i   i    (   R   Rr   RS   Rs   Rt   R!   R   (   Rc   Ru   Ra   Ro   Rv   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt	   parse_xds¬  s    c         C   sŠ  t  d ƒ } d } d } xkt |  ƒ D]]\ } } | j ƒ  } | j d ƒ r | j ƒ  } t | ƒ d k  rp q% n  y% t | d ƒ t | d ƒ } } Wn+ t k
 r¨ q‚t k
 rÂ }	 | GH‚  q‚X| | k rØ | } n  | | k  rí | } n  | j	 | | ƒ q% | j d ƒ r% | d	 }
 g  } g  } x� |
 t |  ƒ k  r´|  |
 j ƒ  } | j ƒ  } t | ƒ d
 k  rkn< | d d k r…| } Pn" t
 j d | ƒ r§| j | ƒ n  |
 d 7}
 q(Wt | ƒ d k rãt | ƒ t | d ƒ k sét ‚ t | d ƒ } t | d ƒ } | j | | ƒ | j d t | d ƒ ƒ | j d | | ƒ | j d t | d ƒ d ƒ | j d t | d ƒ ƒ g  } x7 | D]/ } t | d ƒ } | j | | f ƒ | } qŒW| j | ƒ x¯ t | | ƒ D]ž \ } } t | d ƒ } t | d ƒ } | j | d t | d ƒ ƒ | j | d | | ƒ | j | d t | d ƒ d ƒ | j | d t | d ƒ ƒ qÜWPq% q% W| S(   Nt   XSCALEg        gR¸…ë?�@s   INPUT_FILE=i   iþÿÿÿiÿÿÿÿs2   SUBSET OF INTENSITY DATA WITH SIGNAL/NOISE >= -3.0i   i   i    t   totals   ^\di   i   R2   R3   R4   i   g{®Gáz„?s   i/sigmai   (   R$   Rr   RS   Rs   Rt   R{   R   R   R™   R*   R   t   matchR-   R   R…   R,   R0   R   R+   R˜   R/   (   Rc   Ru   R   R   Ra   Ro   Rv   t
   d_max_filet
   d_min_fileR   R}   R'   t   overallR)   R(   t   bins_d_max_minR   t   bin_n_refl_allt
   bin_n_refl(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   parse_xscale¶  sv    %		
4
!!c         C   s%  d  } d  } d  } xñ |  D]é } t j j | ƒ r t | d ƒ j ƒ  } x¹ | D]® } d | k ro t | ƒ } PqM d | k r‹ t | ƒ } PqM d | k r§ t | ƒ } PqM d | k rÃ t	 | ƒ } PqM d | k rß t
 | ƒ } PqM d | k rM t | ƒ } PqM qM Wq q Wt d | d	 | d
 | ƒ } | S(   Nt   rs   reading from a files   Oscillation starts ats"   SCALA - continuous scaling programs   A.G.W. Leslies   XSCALE (VERSIONs   ***** INTEGRATE *****RI   RJ   RK   (   R
   t   ost   patht   isfilet   opent	   readlinesRŒ   Rx   R¢   R~   R¯   R¥   RH   (   t   argsRI   RJ   RK   t   argRc   Ro   Ru   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   parse_all_filesô  s:    	c          C   sÃ   d d  l  }  |  j j d d d t j j ƒ } |  j j d d d t j j ƒ } | d  k rc d GHt St | | g ƒ } | j	 ƒ  j
 ƒ  } d j g  | d D] } | j ƒ  ^ q˜ ƒ d	 k s¿ t ‚ d  S(
   Niÿÿÿÿt   relative_paths$   phenix_regression/tracking/denzo.logt   tests(   phenix_regression/tracking/scalepack.logs#   DENZO log not found, skipping test.s   
iðÿÿÿsÊ  REMARK 200 OVERALL.
REMARK 200  COMPLETENESS FOR RANGE     (%) : 88.4
REMARK 200  DATA REDUNDANCY                : 3.5
REMARK 200  R MERGE                    (I) : 0.09600
REMARK 200  R SYM                      (I) : NULL
REMARK 200  <I/SIGMA(I)> FOR THE DATA SET  : 11.5700
REMARK 200
REMARK 200 IN THE HIGHEST RESOLUTION SHELL.
REMARK 200  HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : 1.98
REMARK 200  HIGHEST RESOLUTION SHELL, RANGE LOW  (A) : 2.05
REMARK 200  COMPLETENESS FOR SHELL     (%) : 34.1
REMARK 200  DATA REDUNDANCY IN SHELL       : 1.5
REMARK 200  R MERGE FOR SHELL          (I) : 0.93400
REMARK 200  R SYM FOR SHELL            (I) : NULL
REMARK 200  <I/SIGMA(I)> FOR SHELL         : 0.6000
REMARK 200(   t   libtbx.load_envt   envt   find_in_repositoriesR±   R²   R³   R
   t   FalseR¸   Rq   t
   splitlinesR`   RS   R   (   R9   t	   denzo_logt   scalepack_logRu   t   outputRo   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   exercise  s    )t   __main__t   OK(   t
   __future__R    R^   t   sysR±   R   R	   R   R   t   objectR   R   R$   RD   RG   RH   Rx   R~   RŒ   R¢   R¥   R¯   R¸   RÃ   R   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/logfiles.pyt   <module>   s,   $			Hp			R	>	
	>		