def refine(self, exps, ref, refining_predictions=False, best=None): exps_out = exps if not self.params.skip_hopper: if self.params.dispatch.refine: print("WARNING: hopper_process will always run its own refinement, ignoring dials.refine phil scope") self.params.dispatch.refine = False assert len(exps) == 1 if self.params.reidx_obs: exps, ref = self._reindex_obs(exps, self.observed) exp, ref, self.stage1_modeler, x = hopper_utils.refine(exps[0], ref, self.params.diffBragg, spec=self.params.refspec, gpu_device=self.device_id, return_modeler=True, best=best) orig_exp_name = os.path.abspath(self.params.output.refined_experiments_filename) refls_name = os.path.abspath(self.params.output.indexed_filename) self.params.diffBragg.outdir = self.params.output.output_dir # TODO: what about composite mode ? self.stage1_df = save_to_pandas(x, self.stage1_modeler.SIM, orig_exp_name, self.params.diffBragg, self.stage1_modeler.E, 0, refls_name, None) exps_out = ExperimentList() exps_out.append(exp) basename = os.path.splitext(os.path.basename(refls_name))[0] self._save_modeler_info(basename) return super(Hopper_Processor, self).refine(exps_out, ref)
def tst_ds1(idx, frame_params): print("in tst_diffbragg_stage_1") from libtbx.phil import parse from simtbx.diffBragg.phil import philz from simtbx.diffBragg.phil import hopper_phil philz = hopper_phil + philz phil_scope_db = parse(philz) user_phil = parse(ds1_params) working_phil = phil_scope_db.fetch(sources=[user_phil]) params = working_phil.extract() #import logging #logging.disable(level=logging.CRITICAL) #logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) from simtbx.diffBragg import hopper_utils BERNINA = os.environ.get("BERNINA") #params.fix.detz_shift = True print ("hopper",flush=True) try: exp, ref, data_modeler, x = hopper_utils.refine( exp=os.path.join(BERNINA, "split_cs", "split_%04d.expt"%idx), ref = os.path.join(BERNINA, "split2b" , "split_%04d.refl"%idx), params=params, return_modeler=True) print("1",flush=True) scale, rotX, rotY, rotZ, Na, Nb, Nc,diff_gam_a, diff_gam_b, diff_gam_c, diff_sig_a, diff_sig_b, diff_sig_c, a,b,c,al,be,ga, detz = hopper_utils.get_param_from_x(x,data_modeler.SIM) print("The parameters are\n",scale, rotX, rotY, rotZ, Na, Nb, Nc,diff_gam_a, diff_gam_b, diff_gam_c, diff_sig_a, diff_sig_b, diff_sig_c, a,b,c,al,be,ga, detz) except Exception as e: print("CATCH EXCEPTION",e) traceback.print_tb(e.__traceback__)
def thin_ds1(idx, frame_params): from libtbx.phil import parse from simtbx.diffBragg.phil import philz from simtbx.diffBragg.phil import hopper_phil philz = hopper_phil + philz phil_scope_db = parse(philz) from LS49.adse13_187.report_versions import ds1_params_v4 as ds1_params user_phil = parse(ds1_params) working_phil = phil_scope_db.fetch(sources=[user_phil]) params = working_phil.extract() from simtbx.diffBragg import hopper_utils BERNINA = os.environ.get("BERNINA") try: exp, ref, data_modeler, x = hopper_utils.refine( exp=os.path.join(BERNINA, "split_cs", "split_%04d.expt"%idx), ref = os.path.join(BERNINA, "split2b" , "split_%04d.refl"%idx), params=params, return_modeler=True) (scale, rotX, rotY, rotZ, Na, Nb, Nc, diff_gam_a, diff_gam_b, diff_gam_c, diff_sig_a, diff_sig_b, diff_sig_c, a,b,c,al,be,ga, detz) = hopper_utils.get_param_from_x(x,data_modeler.SIM) from dxtbx.model.experiment_list import ExperimentList L = ExperimentList() L.append(exp) L.as_file("ds1_%04d.expt"%idx) print("DS1 parameters index %d Na Nb Nc %.3f %.3f %.3f"%(idx,Na,Nb,Nc)) from LS49.adse13_187.adse13_221.basic_runner import run as basic_run anaparams = mcmc_runner_parse_input() anaparams.trusted_mask=os.path.join(BERNINA, "trusted_Py3.mask") anaparams.cryst="ds1_%04d.expt"%idx anaparams.expt = os.path.join(BERNINA, "split_cs", "split_%04d.expt"%idx) anaparams.refl=os.path.join(BERNINA, "split2b" , "split_%04d.refl"%idx) anaparams.output.enable=False anaparams.output.label="mcmc3" anaparams.output.index=idx anaparams.model.mosaic_spread.value=0.001 anaparams.model.Nabc.value=(Na,Nb,Nc) anaparams.model.Nabc.hyperparameter=0.8 anaparams.model.rot.refine=True anaparams.model.cell.covariance=os.path.join( BERNINA,"..", "covariance_cytochrome_form.pickle") anaparams.simplex.cycles=200 anaparams.mcmc.cycles=2000 anaparams.model.plot=False print(anaparams.trusted_mask) print(anaparams.cryst) print(anaparams.expt) print(anaparams.refl) print(anaparams.model.cell.covariance) basic_run(anaparams) except Exception as e: print("CATCH EXCEPTION",e) traceback.print_exc()
P.method = "L-BFGS-B" P.ftol = 1e-10 if "eta" in args.perturb: P.ftol = 1e-8 #P.method="Nelder-Mead" #P.fix.G = True #P.fix.Nabc =True #P.fix.detz_shift=True import logging import sys h = logging.StreamHandler(sys.stdout) logging.basicConfig(level=logging.DEBUG, handlers=[h]) from simtbx.diffBragg import hopper_utils Eopt, _, Mod, x = hopper_utils.refine(E, refls, P, return_modeler=True) G, rotX, rotY, rotZ, Na, Nb, Nc, _, _, _, _, _, _, a, b, c, al, be, ga, detz_shift = hopper_utils.get_param_from_x( x, Mod.SIM) eta_abc_opt = hopper_utils.get_mosaicity_from_x(x, Mod.SIM) print("Na, Nb, Nc= %f %f %f" % (Na, Nb, Nc)) print("eta_abc optimized:", eta_abc_opt) # check crystal Copt = Eopt.crystal misset, misset_init = utils.compare_with_ground_truth( *C.get_real_space_vectors(), dxcryst_models=[Copt, E.crystal], symbol=symbol) print(misset_init, "init misset with ground truth")