ó
’™xTc           @   s¿   d  d l  m Z d  d l m Z d  d l m Z m Z 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 e f d „  ƒ  YZ d	 Z d
 „  Z e d k r» e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   easy_pickle(   t   get_svn_revisiont   get_build_tagt   plural_s(   t
   itemgetterN(   t   StringIOt   analysec           B   sV   e  Z d  „  Z d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z d „  Z	 RS(   c         C   så   d |  _  d |  _ d |  _ i  |  _ i  |  _ i  |  _ t ƒ  |  _ t j d ƒ } x� | D]… } t	 j
 | ƒ } | j  |  _  | j |  _ | j |  _ |  j j | j ƒ |  j j | j ƒ |  j j | j ƒ |  j j | j ƒ qX Wd  S(   Ni    s   result_*.pickle(   t   n_hklt   n_cift   n_hkl_cif_pairst   parsing_errorst   build_errorst   ignored_errorst   sett   skippedt   globR   t   loadt   update(   t   selft   gt   ft   r(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyt   __init__
   s"    						c         C   sx  | d  k r t j } n  |  j |  j } | d |  j IJ| d |  j IJ| d I|  j IJ| J| d t t |  j ƒ ƒ IJ| d t t |  j	 ƒ ƒ IJ| d t t |  j
 ƒ ƒ IJ| d t |  j ƒ IJ| Jt ƒ  } t j j d ƒ } d  } | d  k	 rt d	 | ƒ } n  t ƒ  } | d  k	 r8| d
 | IJn  | d  k	 rU| d | IJn  | d  k	 rt| d I| IJn  d  S(   Ns   Number of cif: %7is   Number of hkl: %7is   Number of hkl+cif pairs: s   %i parsing error%ss   %i exception%ss   %i ignored exception%ss   %i skippingt   COD_SVN_WORKING_COPYt   paths   COD svn revision: %is   cctbx svn revision: %is   cctbx build tag: (   t   Nonet   syst   stdoutR	   R   R
   R   t   lenR   R   R   R   R   t   ost   environt   getR   (   R   t   outt   n_totalt   revt   cod_patht   cod_revt	   build_tag(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyt   show_summary   s0     		c         C   sT   | d  k r t j } n  |  j d | ƒ | J|  j d | ƒ | J|  j d | ƒ d  S(   NR!   (   R   R   R   R'   t   show_skippingt   show_exceptions(   R   R!   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyt   show_all7   s     c         C   sh   | d  k r t j } n  xI t t |  j j ƒ  ƒ d t d ƒ ƒD]  \ } } | d | | f IJq@ Wd  S(   Nt   keyi   s   %s: %s(   R   R   R   t   sortedR   t   itemsR   (   R   R!   t   cod_idt   error(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyt   show_parsing_errors?   s
     .c         C   sh   | d  k r t j } n  xI t t |  j j ƒ  ƒ d t d ƒ ƒD]  \ } } | d | | f IJq@ Wd  S(   NR+   i   s   %s: %s(   R   R   R   R,   R   R-   R   (   R   R!   R.   R/   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyR)   E   s
     .c         C   sF   | d  k r t j } n  x' t |  j ƒ D] } | d I| IJq( Wd  S(   Ns	   SKIPPED: (   R   R   R   R,   R   (   R   R!   t   s(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyR(   K   s     c         C   sÁ   t  d d ƒ � } |  j d | ƒ Wd  QXt  d d ƒ � } |  j d | ƒ Wd  QXt  d d ƒ � } |  j d | ƒ Wd  QXt ƒ  } |  j d | ƒ t  d d ƒ � } | t | j ƒ  IJWd  QXd  S(   NR   t   wbR!   t
   exceptionst   skippings   summary.html(   t   openR0   R)   R(   R   R'   t   htmlt   getvalue(   R   R!   R1   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyt   as_htmlP   s    	N(
   t   __name__t
   __module__R   R   R'   R*   R0   R)   R(   R8   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyR      s   	s‘  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<head>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<title>COD stats</title>
</head>

<body>

<hr>

<pre>
%s
</pre>

<hr>

<a href="parsing_errors">[parsing errors]</a>
<a href="exceptions">[exceptions]</a>
<a href="skipping">[skipping]</a>

<hr>

<a href="/cod_stats/current">[directory listing]</a>

<hr>

</body>
c          C   s   t  ƒ  }  |  j ƒ  d  S(   N(   R   R8   (   t   a(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyt   run{   s    	t   __main__(   t
   __future__R    t   libtbxR   t   libtbx.utilsR   R   R   t   operatorR   R   R   R   t	   cStringIOR   t   objectR   R6   R<   R9   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/tests/analyse_cod_stats.pyt   <module>   s   $q	