ó
5™xTc           @   s±   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l Z	 d  d l
 m Z d  d l m Z d  d l m Z d	 „  Z d
 „  Z d „  Z e d k r­ e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   itvc_section61_io(   t   expected_labels(   t   international_tables_stolsN(   t   flex(   t   OptionParser(   t   easy_picklec         C   s  |  j  | j  k  r |  S|  j  | j  k r, | St j |  j ƒ  ƒ } t j | j ƒ  ƒ } t j | ƒ d k } t j | ƒ d k } | r‘ | r‘ |  S| r¢ | r¢ | St j |  j ƒ  ƒ } t j | j ƒ  ƒ } t j | ƒ t j | ƒ k rî |  St j | ƒ t j | ƒ k  r| S|  S(   Ni    (   t	   max_errorR   t   doublet
   array_of_at   mint
   array_of_b(   t   fit_0t   fit_1t   a0t   a1t   l0t   l1t   b0t   b1(    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/combine_fits.pyt   pick_nicest_fit
   s&          c         C   sn   t  | j d k } t j j j t  j | ƒ |  j j | ƒ |  j j | ƒ | ƒ } t	 j
 | j ƒ  ƒ | _ d  S(   Ng�íµ ÷Æ°>(   R   t   stolt   scitbxt   matht   gaussiant   fitt   selectt   table_yt   table_sigmasR   t   maxt   significant_relative_errorsR   (   t
   itvc_entryR   t   selt   gaussian_fit(    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/combine_fits.pyt   reset_max_error   s    	c          C   s$  t  d d d d ƒ }  |  j ƒ  \ } } t | ƒ d k rI |  j ƒ  d  St j | d ƒ } t j | d ƒ } g  } xq | d D]e } | j t j | ƒ ƒ xF | d	 j	 j
 ƒ  D]1 \ } } x" | D] }	 t | j | |	 ƒ qÃ Wq° Wq€ Wi  }
 d } d } d } d g d
 } d g d
 } d g d
 } xŠt d d  ƒ D]y} | d j	 j | d  ƒ } | d j	 j | d  ƒ } | d  k r˜| d  k r˜d  |
 | <q8n  | d  k r´| |
 | <q8n  | d  k rÐ| |
 | <q8n  g  } i  } g  } xY | | g D]K } i  } x | D] }	 |	 | |	 j ƒ  <qW| j | ƒ | j | d	 ƒ qïW| j ƒ  } | j ƒ  xP| D]H} | d j | d  ƒ } | d j | d  ƒ } | d  k r¬| j | ƒ q[n  | d  k rË| j | ƒ q[n  | j | j k  r| j | ƒ d } | d 7} | | c d 7<nx | j | j k rO| j | ƒ d } | d 7} | | c d 7<n6 | j t | | ƒ ƒ d } | d 7} | | c d 7<d | | | j | j | f GHq[W| |
 | <q8Wd G| GHd G| GHd G| GHd G| | | GHd	 } xŒ t | | | ƒ D]x \ } } } | d 7} | d k r=| d k r=| d k r=qún  d G| GHd G| GHd G| GHd G| GHd G| | | GHqúWHx3 t d d  ƒ D]" } |
 | d  k r‡d G| GHq‡q‡WHd GHHxXt d d  ƒ D]G} |
 | } | d  k ræqÄn  d G| GHt | j	 | ƒ d k st ‚ | j	 | d j ƒ  d k s1t ‚ | j | j	 | d ƒ t | j | | d	 ƒ g  } d  } x‘ | D]‰ }	 | d  k s¼|	 j | j k s¼|	 j | j k rÜ|	 j | j k  rÜ| j |	 ƒ |	 j ƒ  |	 } qtd | |	 j ƒ  |	 j |	 j f GHqtW| |
 | <qÄWHt j d |
 ƒ d  S(   Nt   usages   usage: python %prog [options]s%    itvc_table all_fits_six_terms.pickles8    all_fits_decremental.pickle all_fits_incremental.picklei   i    i   i   iÿÿÿÿi
   t
   kissel_dirt   lesst   greatert   equals   %-4s n_terms=%d %4.2f %4.2f %ss   n_less:s
   n_greater:s   n_equal:s   total:s   n_terms:s	     n_less:s     n_greater:s
     n_equal:s     total:s#   # Warning: Missing scattering_type:s
   Best fits:s   scattering_type:i   s7   # skipped: %s, n_terms: %d, stol: %.2f, max_error: %.4fs   best_fits.pickle(   R   t
   parse_argst   lent
   print_helpR   t   read_table6111R   t   loadt   appendt   allt   itemsR"   t   entriesR   t   Nonet   gett   n_termst   updatet   keyst   sortR   R   t   zipt   AssertionErrorR   t   showt   dump(   t   parsert   optionst   argst   itvc_tabt   six_term_fitst   fitst	   file_namet   labelt	   fit_groupR   t	   best_fitst   n_lesst	   n_greatert   n_equalt   n_less_listt   n_greater_listt   n_equal_listt   fit_group_0t   fit_group_1t
   best_groupt   all_n_termst   n_terms_dictst   n_terms_dictR3   R   R   t   statust   trimmed_fit_groupt   prev_fit(    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/combine_fits.pyt   main"   sæ    
  






			"
$ 				
 	#
	"t   __main__(   t
   __future__R    t   cctbx.eltbx.developmentR   t,   cctbx.eltbx.development.format_gaussian_fitsR   t   cctbx.eltbx.gaussian_fitR   t   scitbx.math.gaussianR   t   cctbx.array_familyR   t   libtbx.option_parserR   t   libtbxR   R   R"   RT   t   __name__(    (    (    sR   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/eltbx/development/combine_fits.pyt   <module>   s   				w