ó
¦™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 Z e	 e
 d „ Z d „  Z d „  Z d e f d	 „  ƒ  YZ d
 e	 d d „ Z d e f d „  ƒ  YZ d „  Z d d „ Z d S(   iÿÿÿÿ(   t   division(   t   adopt_init_args(   t   format_valueNc         C   s¼   d d l  m } | d  k	 r= |  j | ƒ }  | j | ƒ } n  | j ƒ  d k r^ t d ƒ ‚ n  | j | | ƒ } | d k rŒ t d ƒ ‚ n  | r§ | j |  |  ƒ | S| j |  | ƒ | S(   Niÿÿÿÿ(   t   flexi    s   No data for scale calculation.s&   Zero denominator in scale calculation.(   t   cctbx.array_familyR   t   Nonet   selectt   sizet   RuntimeErrort   sum(   t   numt   dent	   selectiont   num_numR   t   denom(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   _scale_helper   s     c         C   sc   | d  k r t d |  d | ƒ St | t t f ƒ rB |  | j ƒ  Sg  | D] } |  | j ƒ  ^ qI S(   Nt   formatt   value(   R   R   t
   isinstancet   intt   floatt   strip(   R   R   t   v(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   n_as_s   s
    c         C   s&   d d l  m } | j |  | ƒ j ƒ  S(   Niÿÿÿÿ(   R   (   R   R   t   linear_correlationt   coefficient(   t   data1t   data2R   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   cc   s    t   resolution_binc           B   sG   e  Z d d d d d d d d d d d d d d d d d d d  „ Z RS(   c         C   s   t  |  t ƒ  ƒ d  S(   N(   R   t   locals(   t   selft   i_bint   d_ranget   completenesst
   alpha_workt	   beta_workt   r_workt   r_freet   target_workt   target_freet   n_workt   n_freet
   mean_f_obst   fom_workt   scale_k1_workt	   pher_workt	   pher_freet   cc_workt   cc_free(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   __init__   s    N(   t   __name__t
   __module__R   R2   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyR      s$   iô  t    c         C   sÄ  | d  k r t j } n  d d l m } d d l m } |  j ƒ  } |  j ƒ  } t	 | | j
 ƒ  j ƒ  ƒ } | j d | ƒ | j | ƒ g  } x�| j ƒ  j ƒ  D]{}	 | j ƒ  j |	 ƒ }
 | j ƒ  j |	 ƒ } | j | ƒ } | j |
 ƒ } | j |
 ƒ } | j ƒ  \ } } | j d | ƒ } | j ƒ  j d |	 d t d t ƒ } | j
 ƒ  } | j
 ƒ  } | j ƒ  | j ƒ  k s|t ‚ | j | ƒ } | j ƒ  d	 k r¡ t d |	 d
 | d | d | j | | d ƒ d | j
 ƒ  j ƒ  d t d | d | ƒ d | j | j
 ƒ  d  ƒ ƒ } | j | ƒ q¡ q¡ W| | d IJx� | D]‡ } d } | | | t d | j ƒ t d | j ƒ t d | j ƒ t d | j  ƒ t d | j! ƒ t d | j" ƒ t d | j# ƒ f IJq5Wd  S(   Niÿÿÿÿ(   t   bulk_solvent(   R   t   reflections_per_bint   d_maxR    t   show_bin_numbert   show_countsi    R!   R"   R%   i   R)   R-   R
   R   R+   sA    Bin  Resolution Range  Compl.    Nwork  Rwork   Scale     <Fobs>s    %s %s    %s %s %s  %s %ss   %3ds   %-17ss   %4.2fs   %8ds   %6.4fs   %10.3f($   R   t   syst   stdoutt   mmtbxR6   R   R   t
   f_obs_workt   f_model_scaled_with_k1_wt   mint   dataR   t   setup_binnert   use_binning_oft   binnert
   range_usedR   R   t	   d_max_minR"   t
   bin_legendt   Falset   AssertionErrort   absR   t   r_factorR   t   mean_defaultt   appendR   R    R!   R)   R%   R-   R+   (   t   fmodelR7   t   outt   prefixR6   R   t   fo_wt   fc_wt   resultR    t   sel_wt   sel_allt
   sel_fo_allt   sel_fo_wt   sel_fc_wt   d_max_t   d_min_R"   R!   t   s_fo_w_dt   s_fc_w_dt
   s_fc_w_d_at   bint   fmt(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt*   r_work_and_completeness_in_resolution_bins4   s\     

t   infoc           B   s³   e  Z d  d d d „ Z d d „ Z d d d d „ Z d d „ Z d d „ Z d d d „ Z d	 „  Z	 d
 „  Z
 d d d „ Z d d „ Z d d „ Z d d d „ Z d d „ Z RS(   iŒ   i   c      	   C   sl  d d l  m } | j } | j |  _ |  j d k rO | j |  _ | j |  _ n d  |  _ d  |  _ | j ƒ  |  _ | j ƒ  |  _ | j	 ƒ  |  _	 | j
 ƒ  |  _ | j ƒ  |  _ | j ƒ  |  _ | j ƒ  j ƒ  j ƒ  |  _ | j ƒ  j ƒ  j ƒ  |  _ | j ƒ  j ƒ  j ƒ  |  _ |  j |  _ | j ƒ  j ƒ  d  t f k rp| j ƒ  j ƒ  \ } } | j ƒ  j ƒ  | j ƒ  |  _ n  | j |  _ | j  |  _! | j" |  _# | j$ | j% ƒ  ƒ |  _& | j' ƒ  |  _( | j ƒ  j) ƒ  \ |  _* |  _+ | j ƒ  j, d |  j* ƒ |  _- | j ƒ  j, ƒ  |  _. | j ƒ  j/ d d ƒ }	 |	 j, ƒ  |  _0 | j ƒ  j1 d t ƒ |  _2 | j3 j4 |  _5 | j6 ƒ  \ }
 } |
 j ƒ  j7 ƒ  j8 ƒ  \ |  _9 |  _: |  _; | j ƒ  j7 ƒ  j8 ƒ  \ |  _< |  _= |  _> | j? ƒ  j7 ƒ  j8 ƒ  \ |  _@ |  _A |  _B | jC ƒ  j7 ƒ  j8 ƒ  \ |  _D |  _E |  _F | jG ƒ  j7 ƒ  j8 ƒ  \ |  _H |  _I |  _J |  jK d | d	 | d
 | d | ƒ |  _L d  S(   Niÿÿÿÿ(   R   t
   twin_lsq_fR8   t   d_mini   t   return_none_if_zero_sigmasRN   t   free_reflections_per_bint   max_number_of_binst   n_bins(M   R   R   t   mask_paramst   target_namet   twin_fractiont   twin_lawR   R%   R&   t   r_allt   target_wR'   t   target_tR(   t   scale_k1t   overall_scale_k1t   f_calc_tRA   R   t   number_of_test_reflectionst   f_calc_wt   number_of_work_reflectionst   f_obst   number_of_reflectionst   number_of_reflections_mergedt   anomalous_flagt   Truet   match_bijvoet_matest   pairst	   n_singlest   solvent_radiust   mask_solvent_radiust   shrink_truncation_radiust   mask_shrink_radiust   grid_step_factort   mask_grid_step_factort   meant   phase_errorst   ml_phase_errort   model_error_mlt   ml_coordinate_errort   resolution_rangeR8   Rc   R"   t   completeness_in_ranget   completeness_d_min_inft   resolution_filtert   completeness_6_inft   min_f_over_sigmat   min_f_obs_over_sigmat
   sfg_paramst	   algorithmt   sf_algorithmt   alpha_beta_wt   min_max_meant   as_tuplet   alpha_work_mint   alpha_work_maxt   alpha_work_meant   beta_work_mint   beta_work_maxt   beta_work_meant   figures_of_merit_workt   fom_work_mint   fom_work_maxt   fom_work_meant   phase_errors_workt   pher_work_mint   pher_work_maxt   pher_work_meant   phase_errors_testt   pher_free_mint   pher_free_maxt   pher_free_meant   statistics_in_resolution_binst   bins(   R   RN   Re   Rf   Rg   R   t   mpt	   somethingt   matchest   f_obs_6t   alpha_wt   beta_w(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyR2   e   s\    			*****	c   -   )   C   sy  d d l  m } d d l m } |  j d k r9 | j ƒ  Sg  } | j ƒ  } | d t ƒ }	 |	 j ƒ  }
 |
 j	 ƒ  d k r¥ |
 j
 | j j ƒ } |
 j
 | j j ƒ } n  | j ƒ  } | j ƒ  } | j ƒ  } | j ƒ  } | j ƒ  \ } } | j ƒ  \ } } | j ƒ  } | j ƒ  } | j ƒ  } | d  k s5| d k  rP| j d | d	 | ƒ } n  | j ƒ  j d
 | ƒ | j | j ƒ  ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ xž| j ƒ  j ƒ  D]Š} | j ƒ  j | ƒ } | j ƒ  j | ƒ } | j ƒ  j ƒ  j | ƒ } | j ƒ  j
 | ƒ } | j
 | ƒ } | j
 | ƒ } | j
 | ƒ } | j
 | ƒ }  |
 j	 ƒ  d k r¤d  }! d  }" nª | j ƒ  j	 ƒ  }# | j ƒ  j	 ƒ  }$ |# d k ró| j  | j
 | ƒ ƒ |# }! n | j  | j
 | ƒ ƒ }! |$ d k r6| j  | j
 | ƒ ƒ |$ }" n | j  | j
 | ƒ ƒ }" | j! ƒ  \ }% }& | j" d |% ƒ }' | j ƒ  j# d | d t d t ƒ }( | j ƒ  }) |  j ƒ  }* |) j	 ƒ  |* j	 ƒ  k sÌt$ ‚ | j% |* ƒ }+ |) j	 ƒ  d k rçt& d | d |( d |' d | j' | j
 | ƒ j ƒ  d  ƒ d | j' | j
 | ƒ j ƒ  d  ƒ d | j( |) |* d ƒ d | j( | j ƒ  | j ƒ  d ƒ d |! d |" d | j ƒ  j	 ƒ  d | j ƒ  j	 ƒ  d t) d |) d |+ ƒ d | j' | j ƒ  d  ƒ d | j' | j
 | ƒ d  ƒ d | j' | j
 | ƒ d  ƒ d | j' | j
 | ƒ d  ƒ d  t* |) |+ ƒ d! t* | j ƒ  | j% | j ƒ  ƒ ƒ ƒ }, | j+ |, ƒ qçqçW| S("   Niÿÿÿÿ(   R6   (   R   Rb   t   compute_gradientsi    i   Re   t
   max_n_binsRg   R8   R    R9   R:   R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R-   R
   R   R+   R,   R.   R/   R0   R1   (,   R=   R6   R   R   Ri   R§   t   target_functorRH   t   target_per_reflectionR   R   t   arrayst   work_selt   free_selt
   f_obs_freet   f_model_scaled_with_k1_tR>   R?   R’   t   alpha_beta_tRŸ   R£   R›   R   t   determine_n_binsRu   RB   RC   RD   RE   R   RA   R	   RF   R"   RG   RI   RJ   R   RL   RK   R   R   RM   (-   R   RN   Re   Rf   Rg   R6   R   RS   R±   t   target_resultt   tprt   tpr_wt   tpr_tt   fo_tt   fc_tRQ   RR   R­   R®   t   alpha_tt   beta_tt   pher_wt   pher_tt   fomR    t   sel_tRT   RU   RV   t   sel_fo_tt   sel_fc_tRW   RX   t	   sel_tpr_wt	   sel_tpr_tt   denom_wt   denom_tRY   RZ   R"   R!   R[   R\   R]   R^   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyR§   Ÿ   s¦    
		!!!'R5   c         C   sú   | d  k r t j } n  | d  k	 r5 | | | IJn  | | d IJd } xª |  j D]Ÿ } | | | t d | j ƒ t d | j ƒ t d | j ƒ t d | j ƒ t d | j	 ƒ t d | j
 ƒ t d | j ƒ t d	 | j ƒ t d	 | j ƒ f	 IJqS Wd  S(
   NsK    BIN  RESOLUTION RANGE  COMPL.    NWORK NFREE   RWORK  RFREE  CCWORK CCFREEs"    %s %s    %s %s %s  %s %s   %s  %ss   %3ds   %-17ss   %4.2fs   %8ds   %5ds   %6.4fs   %5.3f(   R   R;   R<   R¨   R   R    R!   R"   R)   R*   R%   R&   R0   R1   (   R   RP   t   titleRO   R_   R^   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt$   show_rwork_rfree_number_completenessø   s$     

c         C   sO  d d l  m } | d  k r( t j } n  d } | | d |  j j ƒ  IJ| | IJ| | d IJ| | d t d |  j ƒ IJ| | d t d |  j	 ƒ IJ| | d	 t d
 |  j
 ƒ IJ| | d d |  j d f IJ| | d |  j IJ| | d |  j IJ| | IJ| | d IJ| | d t d |  j ƒ IJ| | d t d |  j ƒ IJ| | d t d |  j ƒ IJ| | d d t |  j ƒ |  j d f IJ| | d |  j IJ| | IJ|  j d | d d d | ƒ | | IJ| | d IJ| | d IJ| | d t d |  j ƒ IJ| | d t d |  j ƒ IJ| | d  t d |  j ƒ IJ| | IJ|  j d  k	 rÒ| | d! IJ| | d" t d |  j ƒ IJ| | d# t d$ | j |  j ƒ j ƒ  ƒ IJn  | | d% IJ| | d& t d |  j ƒ IJ| | d' t d |  j ƒ IJ| | IJ| | d( |  j j ƒ  IJ| j ƒ  d  S()   Niÿÿÿÿ(   t   sgtbxs   REMARK   3  s   REFINEMENT TARGET : %ss   DATA USED IN REFINEMENT.s'    RESOLUTION RANGE HIGH (ANGSTROMS) : %ss   %-8.3fs'    RESOLUTION RANGE LOW  (ANGSTROMS) : %ss'    MIN(FOBS/SIGMA_FOBS)              : %ss   %-6.2fs,    COMPLETENESS FOR RANGE        (%s) : %-6.2ft   %g      Y@s*    NUMBER OF REFLECTIONS             : %-10ds.    NUMBER OF REFLECTIONS (NON-ANOMALOUS) : %-10ds   FIT TO DATA USED IN REFINEMENT.s&    R VALUE     (WORKING + TEST SET) : %ss   %-6.4fs&    R VALUE            (WORKING SET) : %ss&    FREE R VALUE                     : %ss+    FREE R VALUE TEST SET SIZE   (%s) : %-6.2fs)    FREE R VALUE TEST SET COUNT      : %-10dRP   RÌ   s)   FIT TO DATA USED IN REFINEMENT (IN BINS).RO   s   BULK SOLVENT MODELLING.s-    METHOD USED        : FLAT BULK SOLVENT MODELs    SOLVENT RADIUS     : %ss   %-8.2fs    SHRINKAGE RADIUS   : %ss    GRID STEP FACTOR   : %ss   TWINNING INFORMATION.s    FRACTION: %ss    OPERATOR: %ss   %-ss   ERROR ESTIMATES.s5    COORDINATE ERROR (MAXIMUM-LIKELIHOOD BASED)     : %ss5    PHASE ERROR (DEGREES, MAXIMUM-LIKELIHOOD BASED) : %ss-   STRUCTURE FACTORS CALCULATION ALGORITHM : %-s(   t   cctbxRÎ   R   R;   R<   Ri   t   upperR   Rc   R8   RŽ   R‰   Rv   Rw   Rl   R%   R&   R   Rr   RÍ   R~   R€   R‚   Rj   t   change_of_basis_opRk   t   as_hklR‡   R…   R‘   t   flush(   R   RO   RÎ   t   pr(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   show_remark_3  s\     






&



c      	   C   s³  d d  l  } | d  k r- | j j j ƒ  } n  |  j | d <|  j | d <|  j | d <|  j d | d <|  j	 | d <|  j	 |  j
 | d <|  j
 | d	 <|  j | d
 <|  j | d <|  j | d <|  j
 |  j	 d | d <| j j j d d ƒ } xw |  j D]l } g  | j j d ƒ D] } t | ƒ ^ q\ } } | j | | | j | j | j d | j | j f ƒ qô W| j | ƒ d | d <|  j | d <|  j | d <|  j | d <|  j | d <| S(   Niÿÿÿÿs   _refine.ls_d_res_lows   _refine.ls_d_res_highs   _refine.pdbx_ls_sigma_Fg      Y@s   _refine.ls_percent_reflns_obss   _refine.ls_number_reflns_obss   _refine.ls_number_reflns_R_works   _refine.ls_number_reflns_R_frees   _refine.ls_R_factor_obss   _refine.ls_R_factor_R_works   _refine.ls_R_factor_R_freeid   s    _refine.ls_percent_reflns_R_freet   headers   _refine_ls_shell.d_res_highs   _refine_ls_shell.d_res_lows%   _refine_ls_shell.number_reflns_R_works    _refine_ls_shell.R_factor_R_works#   _refine_ls_shell.percent_reflns_obss    _refine_ls_shell.R_factor_R_frees%   _refine_ls_shell.number_reflns_R_freet   -s   FLAT BULK SOLVENT MODELs   _refine.solvent_model_detailss$   _refine.pdbx_solvent_vdw_probe_radiis$   _refine.pdbx_solvent_shrinkage_radiis   _refine.overall_SU_MLs    _refine.pdbx_overall_phase_error(   s   _refine_ls_shell.d_res_highs   _refine_ls_shell.d_res_lows%   _refine_ls_shell.number_reflns_R_works    _refine_ls_shell.R_factor_R_works#   _refine_ls_shell.percent_reflns_obss    _refine_ls_shell.R_factor_R_frees%   _refine_ls_shell.number_reflns_R_free(   t   iotbx.cif.modelR   t   cift   modelt   blockR8   Rc   RŽ   R‰   Rv   Rr   Rl   R%   R&   t   loopR¨   R!   t   splitR   t   add_rowR)   R"   R*   t   add_loopR~   R€   R‡   R…   (   R   t	   cif_blockt   iotbxRÝ   R^   t   dR8   Rc   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   as_cif_block:  sN          	1

c      	   C   s÷   | d  k r t j } n  d | } d } d t | | ƒ } | | d | | IJd |  j t d d d |  j ƒ t d d	 d |  j ƒ t d d	 d |  j ƒ f } d
 t t	 | ƒ d ƒ } | | Id | d IJ| d d d d IJ| j
 ƒ  d  S(   Ns   |-s   -|iO   RØ   s0   | target_work(%s) = %s  r_work = %s  r_free = %sR   s   %.6gR   s   %6.4fiN   t   |t    iM   (   R   R;   R<   t   lenRi   R   R'   R%   R&   t   strRÔ   (   R   RO   t   textt   part1t   part2t   nt   part3(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   show_targets{  s     
c         C   s	  | d  k r d } n  d } |  j |  j d } d } t d |  j ƒ j ƒ  } t d |  j ƒ j ƒ  } d } d }	 t d |  j ƒ j ƒ  }
 d	 | | f } | d
 | | | | |	 |
 | d } t d | ƒ } d | d } | d | d
 | d IJ| j ƒ  d  S(   NR5   RÏ   id   s   (resolution: s   %6.2fs    - s    A, n_refl.=s   %ds    (all), %-6.2f%s freeRØ   t   )s   |-Rå   iP   i   s   |-|(	   R   Rr   Rv   R   Rc   R   R8   Rç   RÔ   (   R   R×   RO   t   percentt	   frac_freet   line1t   line2t   line3t   line4t   line5t   line6t   line7t   tlt   line_lent   fill_len(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt    _header_resolutions_nreflections‹  s      	*c   	      C   sç   | j  ƒ  t d |  j ƒ j ƒ  } t d |  j ƒ j ƒ  } t d |  j ƒ j ƒ  } t d |  j ƒ } d | } d | d | | } d t | ƒ d } | d	 k  r­ d	 } n  | | d
 | d IJ| d d d d IJ| j  ƒ  d  S(   Ns   %6.4fs   %6.3fs   %-4.2fs,    coordinate error (max.-lik. estimate): %s As
   | r_work= s	    r_free= iO   i   i    Ræ   Rå   s   | s     i&   (   RÔ   R   R%   R   R&   Rp   R‡   Rç   (	   R   RO   R%   R&   t   scalet   errt   errlt   linet   np(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt+   _rfactors_and_bulk_solvent_and_scale_paramsœ  s    

 	c         C   sb  d d l  m } | d  k r( t j } n  | j ƒ  d } |  j d | d | ƒ | d d d d	 IJ|  j d | ƒ d
 |  j t	 d |  j
 ƒ f } d t | ƒ d } | d | d	 } | | IJ|  j d  k	 r>d t d |  j ƒ d t d | j |  j ƒ j ƒ  ƒ } d t | ƒ d } | d | d	 } | | IJn  | d	 d d d	 IJ| j ƒ  d  S(   Niÿÿÿÿ(   RÎ   Ræ   R×   RO   s   | s     i&   Rå   s5   | x-ray target function (%s) for work reflections: %ss   %15.6fiO   i   s   | twin fraction: s   %-4.2fs     twin operator: s   %-sRØ   iM   (   RÐ   RÎ   R   R;   R<   RÔ   Rü   R  Ri   R   R'   Rç   Rj   R   RÒ   Rk   RÓ   (   R   R×   RO   RÎ   t   pRø   R  t   line8(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt$   show_rfactors_targets_scales_overallª  s*     

"c         C   sâ   | d  k r t j } n  | d d d d IJ| d IJ| d IJxy |  j D]n } | d | j | j | j | j | j t	 d | j
 ƒ t	 d | j ƒ t	 d | j ƒ t	 d | j ƒ f	 IJqL W| d d d d IJ| j ƒ  d  S(	   NRå   RØ   iM   sO   | Bin     Resolution   Compl.  No. Refl.    R-factors          Targets        |sO   |number     range              work test   work   test        work        test|s&   |%3d: %-17s %4.2f %6d %4d %s %s %s %s|s   %6.4fs   %11.5g(   R   R;   R<   R¨   R    R!   R"   R)   R*   R   R%   R&   R'   R(   RÔ   (   R   RO   R^   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   show_rfactors_targets_in_binsÁ  s$     

c         C   s<  | d  k r t j } n  | d d d d IJ| d IJ| d IJ| d d d d IJ| d IJ| d IJx‚ |  j D]w } | d	 | j | j | j | j t d
 | j	 ƒ t d | j
 ƒ t d | j ƒ t d | j ƒ t d | j ƒ f	 IJqv W| d t d |  j ƒ t d |  j ƒ t d |  j ƒ f IJ| d t d |  j ƒ t d |  j ƒ t d |  j ƒ f IJ| d t d |  j ƒ t d |  j ƒ t d |  j ƒ f IJ| d t d |  j ƒ t d |  j ƒ t d |  j ƒ f IJ| d t d |  j ƒ t d |  j ƒ t d |  j ƒ f IJ| d d d d IJ| j ƒ  d  S(   NRå   RØ   iM   sO   |R-free likelihood based estimates for figures of merit, absolute phase error,|sO   |and distribution parameters alpha and beta (Acta Cryst. (1995). A51, 880-887)|Ræ   sO   | Bin     Resolution      No. Refl.   FOM  Phase Scale    Alpha        Beta   |sO   |  #        range        work  test        error factor                       |s   |%3d: %-17s%6d%6d%s%s%s%s%s|s   %6.2fs   %7.2fs   %9.2fs   %14.2fs,   |alpha:            min =%s max =%s mean =%s|s   %12.2fs   %16.2fs   %13.2fs,   |beta:             min =%s max =%s mean =%s|s,   |figures of merit: min =%s max =%s mean =%s|s,   |phase err.(work): min =%s max =%s mean =%s|s,   |phase err.(test): min =%s max =%s mean =%s|(   R   R;   R<   R¨   R    R!   R)   R*   R   R,   R.   R-   R#   R$   R•   R–   R—   R˜   R™   Rš   Rœ   R�   Rž   R    R¡   R¢   R¤   R¥   R¦   RÔ   (   R   RO   R^   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt    show_fom_pher_alpha_beta_in_binsÔ  sR     



c         C   sZ   | d  k r t j } n  |  j d | d | ƒ | J|  j d | ƒ | J|  j d | ƒ d  S(   NR×   RO   (   R   R;   R<   R  R  R  (   R   R×   RO   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   show_allþ  s     s   Statistics by resolution binc         C   s   t  |  j | ƒ S(   N(   t   export_bins_table_dataR¨   (   R   RÌ   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyR	    s    N(   R3   R4   R   R2   R§   RÍ   RÖ   Rä   Rî   Rü   R  R  R  R  R  R	  (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyRa   d   s   7X/A		*	c   
      C   sœ   d d l  m } | j d |  d | ƒ } | j ƒ  } t | j ƒ  ƒ } xO | D]G \ } } | j ƒ  | j ƒ  | d }	 | d | |	 | f IJ|	 } qM Wd  S(   Niÿÿÿÿ(   R   RA   t   n_slotsi   s   %10.3f - %-10.3f : %d(   R   R   t	   histogramt   data_mint	   enumeratet   slotst
   slot_width(
   RA   R
  t   logR   t   hmt   lc_1t   s_1t   i_1t   n_1t   hc_1(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   show_histogram
  s    s   Statistics by resolution binc         C   s=  d d l  m } d d d d d d g } d	 d
 d d d d d g } d d d d d g } d d d g d d g d d g d d g d d g g } t |  d d ƒ r|  d j d  k	 r| j d d ƒ | j d d ƒ | j d d ƒ | j d d ƒ | j d d  d! g ƒ | j d d" ƒ n  g  } x£ |  D]› } g  }	 t j d# d$ | j	 ƒ j
 d% ƒ \ }
 } t j |
 ƒ t j | ƒ } } |	 j d | d ƒ x$ | D] } |	 j t | | ƒ ƒ q˜W| j |	 ƒ q*Wg  t t | d ƒ ƒ D]# } g  | D] } | | ^ qí^ qà} | j d& | d' | d( | d) | d* | d+ t ƒ } | S(,   Niÿÿÿÿ(   t
   data_plotsR%   R&   R"   R,   R/   R-   t
   Resolutions   R-works   R-freet   Completenesst   FOMs   Phase errors   Scale factors   R-work/R-free vs. resolutions   Completeness vs. resolutions   Figure of merit vs. resolutions   Phase error vs. resolutions   Scale factor vs. resolutioni    i   i   i   i   i   i   R0   R1   s   CC(work)s   CC(free)i   i   s   CC-work/CC-free vs. resolutions   \s*R5   RØ   RÌ   t   column_labelst   graph_namest   graph_columnsRA   t   x_is_inverse_d_min(   Râ   R  t   hasattrR0   R   t   insertRM   t   ret   subR!   RÞ   t   stringt   atoft   getattrt   xrangeRç   t
   table_dataRy   (   R¨   RÌ   R  t   table_statst   labelsR  R  t	   data_rowsR^   t	   bin_statst   min_res_strt   max_res_strt   min_rest   max_rest   stat_attr_namet   it   rowRA   t   t(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyR	    sH    	6&'@		(   t
   __future__R    t   libtbxR   t   libtbx.str_utilsR   R;   R"  R$  R   RH   R   R   R   t   objectR   R`   Ra   R  R	  (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/f_model_info.pyt   <module>   s   $		/ÿ §	
