ó
P™xTc           @   sv   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l Z d  d l Z d  d l	 Z	 d „  Z
 d „  Z d Z d S(   iÿÿÿÿ(   t   division(   t   easy_runt
   group_args(   t
   cns_formatNc         C   s‹   t  j j t  j j ƒ } t  j j d ƒ r: t j d ƒ n  t  j d ƒ t  j t  j j d ƒ ƒ z t	 |  | | ƒ } Wd  t  j | ƒ X| S(   Nt   tmp_cns(
   t   ost   patht   abspatht   curdirt   existst   shutilt   rmtreet   mkdirt   chdirt   do_dirty_work(   t   paramst   fot	   hl_coeffst   cur_dirt   result(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/development/cns_density_modification.pyt   run   s    c         C   sµ  | j  d t d d ƒ d d ƒ | j  d t d d ƒ d d ƒ t j j d ƒ } | d  k rk t d ƒ ‚ n  t j d | d	 ƒ i  } | j	 d
 t
 d |  j j ƒ ƒ |  j j j ƒ  } | d | d <| d | d <| d | d <| d | d <| d | d <| d | d <|  j d  k rF|  j r4| j ƒ  |  _ qFt j ƒ  |  _ n  |  j d  k rd|  j |  _ n  |  j |  j k s|t ‚ |  j | d <|  j | d <t |  j ƒ j ƒ  | d <|  j | d <|  j j | d <|  j j | d <d | d <|  j | d <|  j j j d  k r|  j |  j j _ n  |  j j j d  k rQ|  j j j d |  j j _ n  |  j j j | d <|  j j j | d  <|  j | d! <|  j  | d" <|  j! | d# <|  j" | d$ <d% | d& <d' | d( <t d) d ƒ } | j# t$ | ƒ | j% ƒ  d* | } | GHt& j' d+ | ƒ j( ƒ  } d, } | GHt) j) ƒ  }	 t& j' d+ | ƒ j* ƒ  } d- t) j) ƒ  |	 GH| j+ ƒ  d. d  l, }
 |
 j- j. j/ d d/ ƒ } | j0 d  d. … d  d. … d  d. … f } t1 d0 | ƒ S(1   Nt   file_objects	   f_obs.hklt   wbt	   file_names   hl_coeffs.hklt	   CNS_SOLVEs-   Environment variable CNS_SOLVE is not defineds'   %s/inputs/xtal_phase/density_modify.inps   tmp.inpt   space_groupt   space_group_infoi    t   ai   t   bi   t   ci   t   alphai   t   betai   t   gammat   d_mint   initial_d_mint   phase_extendt   prot_to_solvt	   trunc_mint	   trunc_maxt   solcont   start_ave_radiust   finish_ave_radiust   initial_stepst   shrink_stepst   final_stepst   grid_resolution_factort   falset	   averagings   ncs.deft
   ncs_infiles
   params.inpsH   %s/bin/cns_transfer -def params.inp -inp tmp.inp -out density_modify.inpt   commands3   cns_solve < density_modify.inp > density_modify.outs   CNS time: %.2fiÿÿÿÿs   density_modify.mapt   modified_map(2   t   export_as_cns_hklt   openR   t   environt   gett   Nonet   RuntimeErrorR
   t   copyfilet
   setdefaultR   t   inputR   t	   unit_cellt
   parametersR!   t   phase_extensiont   hl_coeffs_startR"   t   AssertionErrort   strt   lowert   protein_solvent_ratiot   density_truncationt   fraction_mint   fraction_maxt   solvent_fractiont   solvent_maskt   averaging_radiust   finalt   initialR*   R+   R,   R-   t   writet   cns_density_modify_inp_templatet   closeR   t   fully_bufferedt   raise_if_errors_or_outputt   timet   raise_if_errorst   show_stdoutt   iotbx.xplor.mapt   xplort   mapt   readert   dataR   (   R   R   R   t   cns_solve_dirt
   cns_paramst	   uc_paramst   params_filet   cmdR   t   t0t   iotbxR2   (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/development/cns_density_modification.pyR      s‚    			




(s²  {- begin block parameter definition -} define(
{===>} sg="%(space_group)s";

{===>} a=%(a)f;
{===>} b=%(b)f;
{===>} c=%(c)f;
{===>} alpha=%(alpha)f;
{===>} beta=%(beta)f;
{===>} gamma=%(gamma)f;

{===>} reflection_infile_1="f_obs.hkl";
{===>} reflection_infile_2="hl_coeffs.hkl";

{===>} obs_f="FOBS";
{===>} obs_sigf="SIGMA";
{===>} obs_pa="PA";
{===>} obs_pb="PB";
{===>} obs_pc="PC";
{===>} obs_pd="PD";
{===>} low_res=500.0;
{===>} high_res=%(d_min)f;

{================== non-crystallographic symmetry ====================}

{===>} averaging=%(averaging)s;
{===>} ncs_mask_infile="";
{===>} ncs_infile="%(ncs_infile)s";

{======================= density truncation ==========================}

{===>} truncation=true;
{===>} prot_to_solv=%(prot_to_solv)f;
{===>} trunc_min=%(trunc_min)f;
{===>} trunc_max=%(trunc_max)f;

{====================== solvent modification =========================}

{===>} solvent_mod=true;
{===>} solvent_method="flip";
{===>} scale_flip=true;

{========================== solvent adjust ===========================}

{===>} solvent_adjust=true;

{=========================== solvent mask ============================}

{===>} mask_sol_type="rms";
{===>} solvent_mask_infile="";
{===>} mask_complete=true;
{===>} solcon=%(solcon)f;
{===>} start_ave_radius=%(start_ave_radius)f;
{===>} finish_ave_radius=%(finish_ave_radius)f;

{======================= modification scheme =========================}

{===>} initial_steps=%(initial_steps)i;
{===>} shrink_steps=%(shrink_steps)i;
{===>} final_steps=%(final_steps)i;

{========================= phase extension ===========================}

{===>} phase_extend=%(phase_extend)s;
{===>} initial_highres=%(initial_d_min)f;

{===================== modification parameters =======================}

{===>} map_mode="unit_cell";

{========================= output arrays =============================}

{===>} out_f="full_mod";
{===>} out_fom="fom_mod";
{===>} out_pa="pa_mod";
{===>} out_pb="pb_mod";
{===>} out_pc="pc_mod";
{===>} out_pd="pd_mod";

{=========================== output files ============================}

{===>} output_root="density_modify";
{===>} write_map=true;
{===>} write_mask=false;

 ) {- end block parameter definition -}
(   t
   __future__R    t   libtbxR   R   t   iotbx.cns.space_group_symbolsR   R   R
   RQ   R   R   RM   (    (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/development/cns_density_modification.pyt   <module>   s   $		¤