ó
Ô™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 m	 Z	 d  d l
 Z d  d l Z d  d l Z d  d l Z d d d	 „ Z d
 d „ Z d „  Z e d k rÄ e e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   pdb(   t   flex(   t   approx_equal(   t   easy_runNg      ð?t   directc      	   C   sñ   t  j j d d d t j j ƒ } t j d | ƒ j ƒ  } | j	 d d ƒ | j
 d |  d t d	 t d
 | ƒ j ƒ  } t | j d | ƒ j ƒ  ƒ } | j d d d d ƒ } | j d d ƒ } | j d | d d ƒ | j ƒ  } | j d d ƒ d  S(   Nt   relative_paths!   phenix_regression/pdb/enk_gor.pdbt   testt	   file_namet   tablet   wk1995t   d_mint   anomalous_flagt   cos_sin_tablet	   algorithmt   xray_structuret   fractiong{®Gáz„?t   max_freei@ t   column_root_labelt   f_obst   miller_arrayt   TESTs   enk_gor.mtz(   t   libtbxt   envt   find_in_repositoriest   ost   patht   isfileR   t   inputt   xray_structure_simplet   scattering_type_registryt   structure_factorst   Falset   f_calct   abst!   structure_factors_from_scattererst   generate_r_free_flagst   as_mtz_datasett   add_miller_arrayt
   mtz_objectt   write(   t
   resolutionR   t   pdb_fileR   R!   t   r_free_flagst   mtz_datasetR'   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_group_occ.pyt   calculate_fobs
   s$    		s   enk_gor.mtzc   
      C   sw  d } t  j j d d d t j j ƒ } t d d ƒ j | ƒ } d j d | |  d d	 d
 d g ƒ } t	 j
 | ƒ d  g d \ } } } } x™ t d d ƒ j ƒ  D]‚ }	 |	 j d ƒ rã |	 j ƒ  }	 t |	 d ƒ } t |	 d ƒ } qŸ |	 j d ƒ rŸ |	 j ƒ  }	 t |	 d ƒ } t |	 d ƒ } qŸ qŸ Wt | d ƒ s:t ‚ t | d ƒ sOt ‚ | d k sat ‚ | d k sst ‚ d  S(   Ns´  
refinement {
  refine {
    strategy = individual_sites rigid_body individual_adp group_adp tls                *occupancies group_anomalous
    occupancies {
      constrained_group {
        selection = resseq 1
      }
      constrained_group {
        selection = resseq 2
      }
      constrained_group {
        selection = resseq 3
      }
      constrained_group {
        selection = resseq 4
      }
      constrained_group {
        selection = resseq 5
      }
    }
  }
  main {
    bulk_solvent_and_scale = False
    target = *ml mlhl ml_sad ls
    scattering_table = *wk1995 it1992 n_gaussian neutron
    occupancy_max = 100
    occupancy_min = -100
    fake_f_obs = true
  }
  fake_f_obs {
    scattering_table = *wk1995 it1992 n_gaussian neutron
    structure_factors_accuracy {
      algorithm = fft *direct
      cos_sin_table = false
    }
  }
  modify_start_model {
    occupancies {
      randomize = true
    }
  }
  group_occupancy {
    run_finite_differences_test = True
  }
  ls_target_names {
    target_name = ls_wunit_k1 ls_wunit_k2 *ls_wunit_kunit ls_wunit_k1_fixed                   ls_wunit_k1ask3_fixed ls_wexp_k1 ls_wexp_k2 ls_wexp_kunit                   ls_wff_k1 ls_wff_k2 ls_wff_kunit ls_wff_k1_fixed                   ls_wff_k1ask3_fixed lsm_kunit lsm_k1 lsm_k2 lsm_k1_fixed                   lsm_k1ask3_fixed
  }
  structure_factors_and_gradients_accuracy {
    algorithm = fft *direct
    cos_sin_table = false
  }
}
R   s!   phenix_regression/pdb/enk_gor.pdbR   s   tst_group_occ_exercise_1.paramst   wt    s   phenix.refines   --overwrites&   output.prefix=tst_group_occ_exercise_1s   wu=0i   s    tst_group_occ_exercise_1_001.pdbt   rs   REMARK Start: r_work =i   s   REMARK Final: r_work =g        g      à?(   R   R   R   R   R   R   t   openR(   t   joinR   t   callt   Nonet	   readlinest
   startswitht   splitt   floatR   t   AssertionError(
   t   hklt   par_strR   t   par_filet   cmdt   r_work_finalt   r_free_finalt   r_work_startt   r_free_startt   line(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_group_occ.pyt
   exercise_1!   s,    ;c         C   s%  d  } t } xT |  D]L } | j d ƒ rG t | j d d ƒ d ƒ } n  | j d ƒ r t } q q W| r~ | d  k s~ t ‚ n  | d  k	 rŸ | t k sŸ t ‚ n  x | d  k r½ t j ƒ  } n  d G| GHt	 j
 j ƒ  t j | ƒ t j d | ƒ t ƒ  t ƒ  t	 j
 j ƒ  | s¢ d G| GHPq¢ q¢ d  S(   Ns   --random_seed=t   =i   s	   --forevers   random_seed:t   values   random_seed last used:(   R4   R    R6   t   intR7   t   TrueR9   R   t   get_random_seedt   syst   stdoutt   flusht   randomt   seedt   set_random_seedR-   RC   (   t   argst   random_seedt   forevert   arg(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_group_occ.pyt   runs   s0      		t   __main__i   (   t
   __future__R    t   iotbxR   t   cctbx.array_familyR   t   libtbx.test_utilsR   R   R   t   libtbx.load_envRL   RI   R   R-   RC   RS   t   __name__t   argv(    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_group_occ.pyt   <module>   s   R	