ó
4xTc           @   sÜ   d  d l  m Z d  d l m Z d  d l m Z d  d l Z d  d l Z	 d  d l
 m Z d  d l Z d  d l Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z e d k rŘ e e j d  n  d S(   i˙˙˙˙(   t   division(   t   read_pickled_fits(   t   xray_scatteringN(   t   hashlib_md5c         C   sŹ   | j  } | j d  r% | d  } n  | j d  s: t  t | d  j   } t   } | j |  |  d I| j IJ|  d It |  IJ|  d I| j	   IJ|  Jd  S(   Ns   .pyci˙˙˙˙s   .pyt   rbs
   // Module:s
   //   size:s   //   MD5 hexdigest:(
   t   __file__t   endswitht   AssertionErrort   opent   readR   t   updatet   __name__t   lent	   hexdigest(   t   ft   module_objectt	   file_namet   file_contentt   m(    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt   write_module_info
   s    		c         C   s   |  d IJd  S(   Ns   #include <cctbx/eltbx/xray_scattering/n_gaussian_raw.h>
#include <cstring>

namespace {

#undef D
#define D static const double
(    (   R   (    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt   write_header   s    c         C   s.   |  j    j d d  j d d  j d d  S(   Nt   't   primet   +t   plust   -t   minus(   t   lowert   replace(   t   label(    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt
   identifier"   s    c         C   sä  | d k r! t  t |   } n  t |  } d | } x) | D]! } | d t | j  d 7} q> W| d  d } |  | IJ|  d | IJ| d k rÁ d d l m } d d	 l m } |   } n  xĆ | D]ž } | j	 | j d
 k }	 | d k rPt
 j j j | j	 j |	  | j j |	  | j j |	  |  }
 t | j |
 j     } n t | j  } | | d k	 r|| d 7} n  |  | IJqČ W|  d IJg  } x| D]} | j   } d | | j   f } | j   râ| d 7} n  |  d | IJ| j |  g  } xL t | j   | j    D]/ \ } } | j d t |  t |  f  qW| j   rz| j t | j     n | d d  | d <x | D] } |  | IJqW|  d IJqĄW|  d | d j |  f IJ|  Jd  S|  d IJ(   Nt   h_sdss   D %s_s[] = {t    t   ,i˙˙˙˙s    };s   D %s_e[] = {(   t	   fit_input(   t   flexgíľ ÷Ć°>s   };s   %s_%dt   cs
   D %s[] = {s   %s, %s,s   D* %s_c[] = { %s };s   , t    (   t   listt   reversedR   t   strt   stolt&   cctbx.eltbx.development.hydrogen_plotsR"   t   scitbx.array_familyR#   t   stolst   scitbxt   matht   gaussiant   fitt   selectt   datat   sigmast   maxt   significant_relative_errorst	   max_errort   sortt   n_termst   use_ct   appendt   zipt
   array_of_at
   array_of_bR$   t   join(   R   R   t   groupt   idt   sR0   R"   R#   t   fit   selt   gaussian_fitt   labelst   fit_unsortedt   lblt   buft   at   b(    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt   write_fit_group(   sb    

	 
 (' c         C   st   |  d IJ| d } xO | D]G } d | k s3 t   d } | | k rN d } n  |  d | | f IJq W|  d IJd  S(   Ns   static const char*
labels[] = {i˙˙˙˙t   "R!   R%   s   "%s"%ss   };(   R   (   R   RE   t
   last_labelR   R$   (    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt   write_labelsZ   s    
 	c         C   st   |  d IJ| d } xO | D]G } t  |  } d } | | k rH d } n  |  d | | | | f IJq W|  d IJd  S(   NsN   static const cctbx::eltbx::xray_scattering::n_gaussian::raw::entry
table[] = {i˙˙˙˙R!   R%   s   %s_s, %s_e, %s_c%ss   };(   R   (   R   RE   RM   R   R@   R$   (    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt   write_tablef   s    
 	c         C   s    |  d d | d  | f IJd  S(   Ns  } // namespace <anonymous>

namespace cctbx { namespace eltbx { namespace xray_scattering {
namespace n_gaussian { namespace raw {

  const char*
  get_tag() { return "%s"; }

  const char**
  get_labels() { return labels; }

  unsigned int
  get_table_size() { return %dU; }

  const entry*
  get_table() { return table; }

}}}}} // namespace cctbx::eltbx::xray_scattering::n_gaussian::raws   %04d_%02d_%02d_%02d%02di   (    (   R   t	   localtimet
   table_size(    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt
   write_tailr   s    c         C   s  t  j   } t |   } t j } |  d j d  d k rU t | d | j d  d  S| d IJ| J| d | d  IJ| d It  j IJ| Jt	 | t
 j j  t	 | t j j  | d	 IJx1 | j j   D]  \ } } | d
 | I| IJqĚ W| Jg  } g  } xe t j   D]W } y | j | j   }	 Wn$ t k
 rP| j | j    qX| j | j    qWt |  d k rŹ| d IJx | D] }
 | d I|
 IJqW| Jn  t |  x% | D] }
 t | |
 | j |
  q˝Wt | |  t | |  t | | t |   d  S(   Ni    t   sdsR   t   SDSs8   // This is an automatically generated file. DO NOT EDIT!s%   // Time %04d/%02d/%02d %02d:%02d:%02di   s   // Time zone:s   // Parameters:s   //   %s:s&   // Warning: Missing scattering labels:s   // (   t   timeRP   R   t   syst   stdoutt   findRK   t   allt   tznameR   t   cctbxt   eltbxRD   R-   R.   t
   parameterst   itemsR   t   wk1995_iteratorR   t	   ExceptionR:   R   R   RN   RO   RR   (   t   gaussian_fit_pickle_file_namesRP   t   fitsR   t   kt   vt   presentt   missingt   wkt	   fit_groupR   (    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt   run   sH    	



t   __main__i   (   t
   __future__R    t,   cctbx.eltbx.development.format_gaussian_fitsR   t   cctbx.eltbxR   t   cctbx.eltbx.gaussian_fitR[   t   scitbx.math.gaussian_fitR-   t   libtbx.utilsR   RU   RV   R   R   R   RK   RN   RO   RR   Ri   R   t   argv(    (    (    s_   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/create_n_gaussian_raw_cpp.pyt   <module>   s"   				2				'