ó
±™xTc           @   s-  d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l j j	 Z	 d  d l
 m Z m 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 e j f d „  ƒ  YZ d „  Z d „  Z e d k r)e ƒ  Z e j Z e e j d d e ƒe d e j  ƒ  IJn  d S(   iÿÿÿÿ(   t   divisionN(   t   reflection_file_utils(   t   user_plus_sys_timet   Sorry(   t   runtime_utilss0  hkl_file_name = None
  .type = path
  .short_caption = Map coefficients
  .style = bold file_type:mtz process_hkl child:map_arrays:label input_file
label = None
  .type = str
  .input_size = 160
  .short_caption = Column labels
  .style = bold renderer:draw_map_arrays_widget noauto
pdb_file_name = None
  .type = path
  .short_caption = Model file
  .style = file_type:pdb
scattering_table = wk1995  it1992  *n_gaussian  neutron
  .type = choice
solvent_fraction = None
  .type = float
f_000 = None
  .type = float
  .short_caption = F(0,0,0)
lam = 0.05
  .type = float
  .short_caption = Lambda
lambda_increment_factor = 1.02
  .type = float
output_file_name = None
  .type = path
  .short_caption = Output file
  .style = bold output_file file_type:mtz
column_root_label = MEM
  .type = str
  .input_size = 100
  .short_caption = Output label base
output_high_resolution = None
  .type = float
mean_solvent_density = 0.35
  .type = float
max_iterations = 1000
  .type = float
resolution_factor = 0.3
  .type = float
  .short_caption = Grid resolution factor
beta = 0.7
  .type = float
convergence_at_r_factor = 0.05
  .type = float
convergence_r_threshold = 0.1
  .type = float
gui_output_dir = None
  .type = path
  .short_caption = Output directory
  .style = output_dir
include scope libtbx.phil.interface.tracking_params
c           C   s   t  j j t d t ƒS(   Nt   process_includes(   t   iotbxt   philt   parset   master_params_strt   True(    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyt   master_paramsE   s    c         C   s0   | d d IJ| |  IJ| d t  |  ƒ IJd  S(   Nt   -iO   t   *(   t   len(   t   mt   log(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyt	   broadcastH   s    
c         C   s0   |  d d IJd } |  | IJ|  d d IJd  S(   NR   iO   s7  phenix.max_entropy_map: map modification using Maximum Entropy Method (MEM)

Usage examples:
  phenix.max_entropy_map map_coeffs.mtz
  phenix.max_entropy_map model.pdb map_coeffs.mtz
  phenix.max_entropy_map model.pdb map.mtz label="2FOFCWT,PH2FOFCWT"

Feedback:
  PAfonine@lbl.gov or phenixbb@phenix-online.org(    (   R   t   msg(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyt   format_usage_messageM   s    

c         C   s,  t  ƒ  } t d | ƒ t |  ƒ d k r, d  St ƒ  } t j j d |  d | d | ƒ } | j j ƒ  } t	 d d d | ƒ | j j
 d d ƒ d  } t | j ƒ d k rvt	 d d	 d | ƒ t | j ƒ d
 k sÔ t ‚ | d I| j d IJt j j d | j d ƒ j ƒ  } | d  k	 st ‚ | j d d d | ƒ t j j d | j d | d d ƒ | j ƒ  j
 d d d | ƒ n  t	 d d d | ƒ | j } t | ƒ d
 k r³t d ƒ ‚ n? t | ƒ d k rò| j d  k rãt d ƒ ‚ qò| j g } n  t j d | d d | j d d d | ƒ } | d  k	 s/t ‚ | j d d d | ƒ t	 d d d | ƒ | j }	 | j }
 |	 d  k rÄt j j d | d | j ƒ  j  ƒ  d | j d | j! ƒ } | j }	 | j }
 n  | d |	 IJ|
 d  k	 rï| d |
 IJn  t" j# d | d |	 d  | j$ d! | j% d" | j& d# t' d$ d% d& | j( d' t' d( | j) d) | j* d | d* | j+ d | ƒ } t	 d d+ d | ƒ t, d | d j- d, ƒ ƒ } | j. } | d  k r×| d k rÂ| d d- n | d |  d- } n  | d. I| IJ| j/ d | d/ | j0 d | j1 ƒ t	 d d0 d | ƒ t2 j3 j4 | ƒ S(1   NR   i    t   argsR   R   s   Input parameterst   prefixs     s   Input modeli   s     file name:t	   file_namet   ft   scattering_tablet   xray_structuret   d_ming      Ð?t   outs   Input reflection datas'   One reflection file should be provided.s   No reflection file provided.t   labelt   typet   complexs   MEM calculations begint   unit_cell_volumet   solvent_fractiont   mean_solvent_densitys   F(0,0,0): %12.6fs   solvent_fraction: %6.4ft   f_000t   lamt   lambda_increment_factort   resolution_factort   verboset	   start_mapt   min_shiftedt   max_iterationst   use_modificationt   betat   convergence_at_r_factort   convergence_r_thresholds   Output MEM map coefficientst   .s   _mem.mtzs     Output file name:t   column_root_labels   All done(5   R   R   R   R   t   mmtbxt   utilst   process_command_line_argst   paramst   extractR   t   showt   Nonet   pdb_file_namest   AssertionErrorR   t   pdbt   inputt   xray_structure_simplet   show_summaryt   setup_scattering_dictionariesR   t   scattering_type_registryt   reflection_file_namesR   t   hkl_file_nameR   t   extract_miller_array_from_fileR   t   show_comprehensive_summaryR"   R    t	   unit_cellt   volumeR!   t   memt   runR#   R$   R%   R
   R)   R+   R,   R-   t   maxt   rfindt   output_file_namet   write_mtz_fileR/   t   output_high_resolutiont   ost   patht   abspath(   R   R   t   timert   parsedt   inputsR3   R   t   refft
   map_coeffsR"   R    t	   f_000_objt   resultt   indt   ofn(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyRF   \   sž    	 				
																/	
t   launcherc           B   s   e  Z d  „  Z RS(   c         C   s?   t  j |  j ƒ t  j |  j ƒ t d t |  j ƒ d t j ƒ S(   NR   R   (	   RL   t   mkdirt
   output_dirt   chdirRF   t   listR   t   syst   stdout(   t   self(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyRF   ±   s    (   t   __name__t
   __module__RF   (    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyRX   °   s   c         C   s^   |  j  d  k r t d ƒ ‚ n |  j d  k r< t d ƒ ‚ n  |  j d k rZ t d ƒ ‚ n  t S(   Ns7   Please specify an MTZ file containing map coefficients.s   No column labels specified.g      à?s;   The grid resolution factor must be a decimal number <= 0.5.(   R@   R6   R   R   R%   R
   (   R3   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyt   validate_params¶   s    c         C   sK   g  g  } } |  d  k	 rA t j j |  ƒ rA | j |  d f ƒ n  | | f S(   Ns   Maximum entropy map(   R6   RL   RM   t   isfilet   append(   RU   t   output_filest   stats(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyt
   finish_job¿   s    t   __main__i   R   s   Total time: %-8.3f(!   t
   __future__R    t   mmtbx.utilsR0   t
   iotbx.philR   R   t   cctbx.maptbx.memt   maptbxRE   t   libtbx.utilsR   R   t   libtbxR   t   os.pathRL   R]   R	   R   R   R   RF   t   target_with_save_resultRX   Rb   Rg   R`   RO   R^   R   t   argvt   elapsed(    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/command_line/maximum_entropy_map.pyt   <module>   s*   8				T					