ó
Ò™xTc           @   sž   d  d l  m Z d  d l Z d  d l 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 e f d	 „  ƒ  YZ d S(
   iÿÿÿÿ(   t   divisionN(   t   flex(   t   adopt_init_args(   t   utils(   t   adptbx(   t   geometry_restraintst   managerc           B   sw   e  Z d  „  Z d d d d „ Z d „  Z d d „ Z d e d „ Z e	 e d „ Z
 d	 d
 „ Z e	 e d e d „ Z RS(   c         C   s   t  |  t ƒ  ƒ d  S(   N(   R   t   locals(   t   selft   ensemble_obj(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   __init__   s    s   name CAc         C   s~  | d  k r |  j j } n  | j } | j ƒ  } | d  k rT | j ƒ  j | ƒ } n  | j j ƒ  } | j	 ƒ  | j
 ƒ  j ƒ  t j d ƒ } | j
 ƒ  j ƒ  } xÙ t | ƒ D]Ë \ }	 }
 |
 r« | |	 j ƒ  } |  j j j d  k r$|  j j d j | j | j | j | j |	 | |	 | |	 ƒ IJqv|  j j d j | j | j | j | j |	 | |	 | |	 |  j j j |	 ƒ IJq« q« Wd  S(   Ni   s2    {0:6} {1:6} {2:6} {3:6} {4:6d} {5:6.3f} {6:6.3f} s:    {0:6} {1:6} {2:6} {3:6} {4:6d} {5:6.3f} {6:6.3f} {7:6.3f}(   t   NoneR	   t   modelt   pdb_hierarchyt   atomst   atom_selection_cachet	   selectiont   xray_structuret   deep_copy_scattererst   convert_to_isotropict
   scattererst   extract_u_isoR   t   b_as_ut   extract_occupanciest	   enumeratet   fetch_labelst   er_datat   ke_protein_runningt   logt   formatt   namet   resseqt   resnamet   chain_id(   R   t   selection_stringt   selection_bool_arrayR   R   t	   pdb_atomst   xrst   b_iso_atomst   q_atomst   i_seqt   xt	   atom_info(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   print_atom_statisitics   s>    	
c         C   s‚  |  j  d  k	 r~|  j  j j d  k	 r~t j d d t |  j  j ƒ d |  j  j ƒ t	 j
 j |  j  j j ƒ } |  j  j d j d d d d d	 d
 ƒ IJ|  j  j d j |  j  j | j | j | j | j | j ƒ IJg  } g  } xC t |  j  j j ƒ D], \ } } | j | | f ƒ | j | ƒ qò Wt | ƒ t |  j  j j ƒ k sIt ‚ t | d d „  ƒ} t | ƒ } |  j  j ƒ  j ƒ  } |  j  j d IJ|  j  j d j d d d d ƒ IJt | ƒ d } d }	 t d t d t | ƒ ƒ ƒ }
 xÐ |	 |
 k  r¸| | |	 d j ƒ  } | j | |	 d k s*t ‚ |  j  j d j |	 d | |	 d | j | j | j | j | |	 d | |	 d | j | j d t  |	 ƒ t  t | ƒ ƒ ƒ	 IJ|	 d 7}	 qéW|  j  j d IJ|  j  j d j d d d d ƒ IJt | ƒ t d t d t | ƒ ƒ ƒ }	 xÖ |	 t | ƒ k  rì| | |	 d j ƒ  } | j | |	 d k s^t ‚ |  j  j d j |	 d | |	 d | j | j | j | j | |	 d | |	 d | j | j d t  |	 ƒ t  t | ƒ ƒ ƒ	 IJ|	 d 7}	 qW|  j! d | t d t | ƒ ƒ  d d ƒ \ } } t | ƒ | d  d <|  j" d! | d" | d# d$ d% | d& | ƒ |  j  j d' d( d) d* IJq~n  d  S(+   Nt   lines!   Non-solvent KE Statistics | MC : t   outs3     {0:<11}  {1:>12} {2:>12} {3:>12} {4:>12} {5:>12} t    t   mint   maxt   meant   sdevt   skewsA     KE MC {0:<5}: {1:12.3f} {2:12.3f} {3:12.3f} {4:12.3f} {5:12.3f}t   keyc         S   s   |  d S(   Niÿÿÿÿ(    (   t   ke(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   <lambda>L   s    s   
Non-solvent atoms lowest KE : s!     {0:3} : {1:>44} {2:>12} {3:>12}t   rankt   KEs
   dmean/sdevs	   %cum freqgš™™™™™©?i    i   g      à?sC    {0:5} : {1:6} {2:6} {3:6} {4:6} {5:6} {6:9.3f} {7:12.3f} {8:12.1f}i   id   s    
Non-solvent atoms highest KE : t   arraygš™™™™™¹?t   number_of_binsi2   iÿÿÿÿt	   bin_arrayt   value_arrayR   s   KE Histogramt   bin_listt   bin_range_listt   |t   -iM   s   |
(#   R	   R   R   R   R   t   print_headert   strt   macro_cycleR   t   scitbxt   matht   basic_statisticsR   R/   R0   R1   t   biased_standard_deviationR3   R   t   appendt   lent   AssertionErrort   sortedR   R   t   intR   R(   R   R    R!   R   t   floatt   bin_generator_equal_ranget   bivariate_histogram(   R   t   ke_basic_statst   ke_atom_number_tuple_listt   ke_list_histot   nR5   t&   sorted_by_ke_ke_atom_number_tuple_listR$   t   low_five_percentt   cntrt   lowest_rangeR*   R=   R>   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   kinetic_energy_stats5   sª    		"'
	
#
	)
#		i
   c         C   s�   t  | ƒ } t | ƒ } | | } | | } g  } g  } | }	 xB t | ƒ D]4 }
 | j |	 ƒ | j |	 |	 | g ƒ |	 | 7}	 qK W| | f S(   N(   R0   R/   t   xrangeRH   (   R   R9   R:   t	   array_maxt	   array_mint   array_ranget	   bin_rangeR=   R>   t   valR)   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyRN   ’   s    

i   c         C   sQ  t  | ƒ } t t | ƒ | d ƒ } g  } g  } g  } t j ƒ  }	 xÌ t | ƒ D]¾ \ }
 } | j | ƒ |
 | d k rQ | j | ƒ |
 d k r¹ |	 j t | ƒ t | ƒ ƒ g  } n  t | ƒ | k ré | j | |
 | d g ƒ q| j | |
 | |
 | d g ƒ qQ qQ W|	 j t | ƒ t | ƒ ƒ | rC| | |	 f S| | f Sd  S(   Ni   i    iÿÿÿÿ(   RK   RL   RI   R   t   doubleR   RH   t   sum(   R   R9   R:   t   return_bin_avet   sorted_arrayt   bin_sizeR=   R>   t   bin_ave_calct   bin_average_arrayRS   R)   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   bin_generator_equal_size    s(    	*c         C   s¯  | r1 |  j  j d | d t |  j  j ƒ IJn  t | ƒ t | ƒ k sO t ‚ g  t t | ƒ ƒ D] } g  d ^ qb }	 t | ƒ t |	 ƒ k s– t ‚ xŽ t t | ƒ ƒ D]z }
 xS t | ƒ D]E \ } } t } | |
 | k  r¼ |	 | d j	 | |
 ƒ t
 } Pq¼ q¼ W| s© |	 d j	 | |
 ƒ q© q© W| r<t j ƒ  } n  | rm|  j  j d j d d d d	 d
 d ƒ IJn  x1t |	 ƒ D]#\ } } t | ƒ d k rLt j | ƒ } | rÍ| j	 t | ƒ t | ƒ ƒ n  | r�|  j  j d j | d | | d | | d t | ƒ t | ƒ t | ƒ t | ƒ t | ƒ t j j | ƒ j ƒ IJq�qz| rz|  j  j d j | d | | d | | d t | ƒ d d d d ƒ IJqzqzW| r«| Sd  S(   Ns   
Bivariate histogram s    MC: i   iÿÿÿÿs0   {0:>20} | {1:>6} {2:>10} {3:>10} {4:>10} {5:>10}s	   Bin Ranget   Freqt   Meant   Mint   Maxt   StdDevi    sJ   {0:3d} {1:7.2f} -{2:7.2f} | {3:6d} {4:10.3f} {5:10.3f} {6:10.3f} {7:10.3f}(   R	   R   RB   RC   RI   RJ   RY   R   t   FalseRH   t   TrueR   R_   R   R`   R/   R0   RD   RE   RF   RG   (   R   R;   R<   R   R=   R>   t   verboseRa   t   it   binned_arrayR)   t   bin_intt	   bin_valuet   flagt   return_bin_arrayRS   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyRO   ¸   sb    +) 				g{®Gázd?c      '   C   sÃ  t  j d d |  j j ƒ|  j j d d d t ƒ |  j j j ƒ  } |  j j j ƒ  } t	 |  j j
 j ƒ } |  j j d IJ|  j j d I| d IJ|  j j d	 j d
 d d d ƒ IJ| } d  } xd d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 g' D]�} | | k r?|  j j j ƒ  |  _ d4 } d  }	 d  }
 xTt | ƒ D]C} | t | ƒ d5 k rq|  j j d6 |  j j
 j | d7 t d8 t d9 t ƒ |	 d  k r"|  j j ƒ  j ƒ  j ƒ  }	 |  j j ƒ  d5 j ƒ  j ƒ  }
 d } qq|	 |  j j ƒ  j ƒ  j ƒ  7}	 |
 |  j j ƒ  d5 j ƒ  j ƒ  7}
 | d 7} n  | | d k r…|  j j d: |  j j j d; |	 | ƒ d< |  j j j d; |
 | ƒ ƒ |  j j d= d5 d |  j j d> |  j j d? t ƒ | d k  rPn  |  j j d@ j | |  j j ƒ  |  j j ƒ  |  j j ƒ  ƒ IJ|  j j ƒ  | | k  rÈ| } |  j j j d; |	 | ƒ } |  j j j d; |
 | ƒ } |  j j ƒ  | k  rÅ|  j j ƒ  } qÅqÈq…q…Wq?q?W| d  k rÿ|  j j dA j d | ƒ IJnÀ|  j j j d: | d< | ƒ |  j j j d= d5 d |  j j d> |  j j d? t ƒ g  } g  } g  } xŠ t t	 |  j j
 j ƒ ƒ D]m } | t | ƒ d5 k r}| j |  j j
 j | ƒ | j |  j j
 j | ƒ | j |  j j
 j | ƒ q}q}W| |  j j
 _ | |  j j
 _ | |  j j
 _ |  j j dB j t	 |  j j
 j ƒ ƒ IJt	 |  j j
 j ƒ t	 |  j j
 j ƒ k sst  ‚ t	 |  j j
 j ƒ t	 |  j j
 j ƒ k s£t  ‚ |  j j dC dD dE dF IJd  S(G   Ns   Ensemble reducerR-   t   messages   Full simulation fmodel finalt   fmodel_runnings<   
Reduce ensemble with equal distribution though trajectory :s   Rfree tolerance (%) : id   s   
 {0:>12} {1:>8} {2:>8} {3:>8}t   Numt   Rworkt   Rfreet   k1i   i   i   i   i   i   i   i   i	   i
   i   i   i   i   i   i   i   i#   i(   i-   i2   i<   iF   iP   iZ   iÈ   i,  i�  iô  iX  i¼  i   i„  iè  iÐ  i¸  i   iˆ  g        i    R   t   update_f_calct   update_f_maskt   force_update_f_maskt   f_calct   datat   f_maskRn   t   paramst   optimize_masks&   Ens: {0:8d} {1:8.3f} {2:8.3f} {3:8.3f}ss   Warning pdb ensemble does not contain sufficent models and missrepresents simulation.  Simulation Rfree: {0:2.3f} %s)   Final pdb ensemble contains {0:3d} modelsR?   R@   iM   s   |
(!   R   RA   R	   R   t   show_overallRl   t   fmodel_totalt   r_freet   r_workRI   R   t   xray_structuresR   R   t	   deep_copyt
   fmodel_ensRY   RL   t   update_xray_structureRm   R~   R   t   f_maskst   updatet   copy_maR9   t   update_solvent_and_scalet   bspt   scale_k1RH   t   pdb_hierarchyst   ke_pdbRJ   (   R   t   rfree_tolerancet   final_rfreet   final_rworkt   total_number_xrst   target_rfreet	   final_divt   div_intRV   t   fcalc_totalt   fmask_totalR)   t   final_f_calct   final_f_maskt   copy_ed_data_xray_structurest   copy_pdb_hierarchyst   copy_ed_data_ke_pdb(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   ensemble_reductionò   sœ    	‚	## "!(00c   C   	   C   sE  | d  k r t j } n  | r4 t j d d | ƒn  t | ƒ } | d I| IJi  }	 i  }
 i  } i  } i  } t j ƒ  } t j ƒ  } t j ƒ  } t j ƒ  } t j ƒ  } t j ƒ  } xI | j	 ƒ  D]; } | j
 j d ƒ d k rñ | j t ƒ qÃ | j t ƒ qÃ W| rs| j ƒ  } | j ƒ  | j ƒ  k s2t ‚ x> t | j ƒ  ƒ D]' } | | s_| | rEt | | <qEqEWn  | j d | ƒ } x˜t | ƒ D]Š\ } } | r¼| d I| d IJn  | j ƒ  } t j ƒ  } xI | j	 ƒ  D]; } | j
 j d ƒ d k r| j t ƒ qá| j t ƒ qáW| r‘| j ƒ  } | j ƒ  | j ƒ  k sPt ‚ x> t | j ƒ  ƒ D]' } | | s}| | rct | | <qcqcWn  | j | ƒ } | d  k	 s³t ‚ d  } | j d	 | d
 t ƒ } | j j ƒ  d } | j j ƒ  d } | j j ƒ  d } | j j ƒ  d } | j j ƒ  d } | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | rÊ| d IJ| d | IJ| d | IJ| d | IJ| d | IJ| d | IJn  | j j d d  d	 | ƒ }  |  d  k	 s÷t ‚ | r|  j j d	 | d d d | ƒ n  xÔ |  j j  D]Æ }! t! j" d	 | d |! ƒ }" |! j# |	 k r�|	 |! j# d c |" j$ 7<|	 |! j# d c d 7<n |" j$ d g |	 |! j# <| r,| d I|! j# IJ| d |! j% IJ| d |" j& IJ| d |" j$ IJq,q,W|  j j' j ƒ  d k r$|  j j( ƒ  }# x|  j j' D]ó }! |# j) d |! ƒ }$ t! j" d	 | d |# d |! ƒ }% |! j* |! j+ f }& |& |	 k r¬|	 |& d c |% j$ 7<|	 |& d c d 7<n |% j$ d g |	 |& <| r*| d I|! j* |! j+ f I|$ IJ| d |! j% IJ| d |% j& IJ| d |% j$ IJq*q*Wn  | rO| j j, j d	 | d d d | ƒ n  xÔ | j j, D]Æ }! t! j- d	 | d |! ƒ }' |! j# |
 k r½|
 |! j# d c |' j$ 7<|
 |! j# d c d 7<n |' j$ d g |
 |! j# <| r\| d  I|! j# IJ| d! |! j. IJ| d" |' j/ IJ| d# |' j$ IJq\q\W| rQ| j j0 j d	 | d d d | ƒ n  xÔ | j j0 D]Æ }! t! j1 d	 | d |! ƒ }( |! j# | k r¿| |! j# d c |( j$ 7<| |! j# d c d 7<n |( j$ d g | |! j# <| r^| d$ I|! j# IJ| d% |! j2 IJ| d& |( j3 IJ| d' |( j$ IJq^q^Wxß | j j4 D]Ñ }! t! j5 d	 | d |! ƒ }) g  }& x |! j# D] }* |& j |* ƒ qcWt6 |& ƒ }& |& | k rÃ| |& d c |) j7 ƒ  7<| |& d c d 7<n |) j7 ƒ  d g | |& <| r5| d( I|& IJ| d) |) j7 ƒ  IJq5q5W| r5	| j j8 j d	 | d d d | ƒ n  xå | j j8 D]× }! t! j9 d	 | d |! ƒ }+ |! j# | k r£	| |! j# d c |+ j$ 7<| |! j# d c d 7<n |+ j$ d g | |! j# <| rB	| d* I|! j# IJ| d+ |! j. IJ| d, |! j: IJ| d- |+ j/ IJ| d. |+ j$ IJqB	qB	Wq“Wt j ƒ  }, xO |	 j; ƒ  D]A \ }! }- |- d | k s\
t ‚ |- d |- d }. |, j |. ƒ q:
W|, |, }/ t< j= t j> |/ d ƒ ƒ }0 t j ƒ  }1 xO |
 j; ƒ  D]A \ }! }- |- d | k sß
t ‚ |- d |- d }. |1 j |. ƒ q½
W|1 |1 }2 t< j= t j> |2 d ƒ ƒ }3 t j ƒ  }4 xO | j; ƒ  D]A \ }! }- |- d | k sbt ‚ |- d |- d }. |4 j |. ƒ q@W|4 |4 }5 t< j= t j> |5 d ƒ ƒ }6 t j ƒ  }7 xO | j; ƒ  D]A \ }! }- |- d | k såt ‚ |- d |- d }. |7 j |. ƒ qÃW|7 |7 }8 t< j= t j> |8 d ƒ ƒ }9 t j ƒ  }: xO | j; ƒ  D]A \ }! }- |- d | k sht ‚ |- d |- d }. |: j |. ƒ qFW|: |: }; t< j= t j> |; d ƒ ƒ }< | | k sÂt ‚ | | k sÔt ‚ | | k sæt ‚ | | k søt ‚ | | k s
t ‚ | j? ƒ  j@ }= | j? ƒ  j@ }> | j? ƒ  j@ }? | j? ƒ  j@ }@ | j? ƒ  j@ }A t j d/ d | ƒ| d0 IJ| d |0 IJ| d |3 IJ| d |6 IJ| d |9 IJ| d |< IJ| d1 IJ| d |= IJ| d |> IJ| d |? IJ| d |@ IJ| d |A IJ| r| d2 IJn
 | d3 IJ| rAd4 }B |B d5 jA | ƒ 7}B | rW|B d6 7}B n
 |B d7 7}B |B d8 7}B |B d9 jA |0 ƒ 7}B |B d: jA |3 ƒ 7}B |B d; jA |6 ƒ 7}B |B d< jA |9 ƒ 7}B |B d= jA |< ƒ 7}B |B d> 7}B |B d9 jA |= ƒ 7}B |B d: jA |> ƒ 7}B |B d; jA |? ƒ 7}B |B d< jA |@ ƒ 7}B |B d= jA |A ƒ 7}B |B d? 7}B |B Sd  S(@   Ns!   Ensemble mean geometry statisticsR-   s   Ensemble size : t   HOHiÿÿÿÿR   s	   
Model : i   t
   sites_cartt   compute_gradientsi   s     Model RMSDs       bond      : %.6gs       angle     : %.6gs       chirality : %.6gs       planarity : %.6gs       dihedral  : %.6gt   flagst   n_slotsi
   t   ft   proxyi    s   bond simple :s     distance_ideal : %.6gs     distance_model : %.6gs     detla          : %.6gt   pairt   asu_mappingss
   bond asu :s     delta          : %.6gs   angle : s     angle_ideal   : %.6gs     angle_model   : %.6gs     delta         : %.6gs   chirality : s     chirality_ideal : %.6gs     chirality_model : %.6gs     chirality       : %.6gs   planarity : s     planarity rms_deltas : %.6gs   dihedral : s     dihedral_ideal  : %.6gs     periodicity     : %.6gs     dihedral_model  : %.6gs     delta           : %.6gs   Ensemble RMSD summarys!     RMSD (mean delta per restraint)s      RMSD (mean RMSD per structure)s   
  Calculated excluding H/Ds   
  Calculated including H/Ds
   REMARK   3s3   
REMARK   3  NUMBER STRUCTURES IN ENSEMBLE : {0:5d}s=   
REMARK   3  RMS DEVIATIONS FROM IDEAL VALUES (EXCLUDING H/D)s=   
REMARK   3  RMS DEVIATIONS FROM IDEAL VALUES (INCLUDING H/D)s,   
REMARK   3  RMSD (MEAN DELTA PER RESTRAINT)s#   
REMARK   3    BOND      : {0:5.3f}s#   
REMARK   3    ANGLE     : {0:5.3f}s#   
REMARK   3    CHIRALITY : {0:5.3f}s#   
REMARK   3    PLANARITY : {0:5.3f}s#   
REMARK   3    DIHEDRAL  : {0:5.2f}s+   
REMARK   3  RMSD (MEAN RMSD PER STRUCTURE)s   
REMARK   3(B   R   t   syst   stdoutR   RA   RI   R   R_   t   boolR   t   labelt   findRH   Rm   Rl   t   hd_selectiont   sizeRJ   RY   t   selectR   R£   t   energies_sitest   geometryt   bond_deviationst   angle_deviationst   chirality_deviationst   planarity_deviationst   dihedral_deviationst   pair_proxiest   bond_proxiest   show_histogram_of_deltast   simpleR   t   bondt   i_seqst   deltat   distance_idealt   distance_modelt   asuRª   t   get_rt_mx_jiR(   t   j_seqt   angle_proxiest   anglet   angle_idealt   angle_modelt   chirality_proxiest	   chiralityt   volume_idealt   volume_modelt   planarity_proxiest	   planarityt   tuplet
   rms_deltast   dihedral_proxiest   dihedralt   periodicityt	   iteritemsRE   t   sqrtt   mean_defaultt   min_max_meanR1   R   (C   R   t   restraints_managerR   t   ensemble_xray_structurest	   ignore_hdRn   R-   t   return_pdb_stringt   ensemble_sizet   ensemble_bond_deltast   ensemble_angle_deltast   ensemble_chirality_deltast   ensemble_planarity_deltast   ensemble_dihedral_deltast   structures_bond_rmsdt   structures_angle_rmsdt   structures_chirality_rmsdt   structures_planarity_rmsdt   structures_dihedral_rmsdR   t   scR°   RS   t	   structureR£   t   site_labelsR³   t	   bond_rmsdt
   angle_rmsdt   chirality_rmsdt   planarity_rmsdt   dihedral_rmsdRº   R¨   t   bond_simple_proxyRª   t   rt_mxt   bond_asu_proxyt   proxy_i_seqst   angle_proxyt   chirality_proxyt   planarity_proxyR(   t   dihedral_proxyt   mean_bond_deltat   infot
   mean_deltat   bond_delta_sqt   ensemble_bond_rmsdt   mean_angle_deltat   angle_delta_sqt   ensemble_angle_rmsdt   mean_chirality_deltat   chirality_delta_sqt   ensemble_chirality_rmsdt   mean_planarity_deltat   planarity_delta_sqt   ensemble_planarity_rmsdt   mean_dihedral_deltat   dihedral_delta_sqt   ensemble_dihedral_rmsdt   structure_bond_rmsd_meant   structure_angle_rmsd_meant   structure_chirality_rmsd_meant   structure_planarity_rmsd_meant   structure_dihedral_rmsd_meant   ens_geo_pdb_string(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   ensemble_mean_geometry_statsY  sþ    		

				"
		
				
		











N(   t   __name__t
   __module__R
   R   R+   RX   RN   Rl   Rf   Rm   RO   R¡   R  (    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyR   
   s   	#	]5j(   t
   __future__R    R«   RE   t   cctbx.array_familyR   t   libtbxR   t   mmtbxR   t   scitbx.mathRD   t   cctbxR   R   t   objectR   (    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/ensemble_refinement/ensemble_utils.pyt   <module>   s   