def predict_spots_from_rayonix_crystal_model(self, experiments, observed): """ Reads in the indexed rayonix model, predict spots using the crystal model on the jungfrau detector""" pass # Make sure experimental model for rayonix is supplied. Also the experimental geometry of the jungfrau is supplied assert self.params.LS49.path_to_rayonix_crystal_models is not None, 'Rayonix crystal model path is empty. Needs to be specified' assert self.params.LS49.path_to_jungfrau_detector_model is not None, 'Jungfrau_detector model path is empty. Needs to be specified' ts = self.tag.split( '_' )[-1] # Assuming jungfrau cbfs are names as 'jungfrauhit_20180501133315870' # Load rayonix experimental model rayonix_fname = os.path.join( self.params.LS49.path_to_rayonix_crystal_models, 'idx-%s_integrated_experiments.json' % ts) rayonix_expt = ExperimentListFactory.from_json_file(rayonix_fname, check_format=False) jungfrau_det = ExperimentListFactory.from_json_file( self.params.LS49.path_to_jungfrau_detector_model, check_format=False) # Reset stuff here # Should have # a. Jungfrau detector geometry # b. Rayonix indexed crystal model from dials.algorithms.refinement.prediction.managed_predictors import ExperimentsPredictorFactory from dials.algorithms.indexing import index_reflections experiments[0].detector = jungfrau_det[0].detector experiments[0].crystal = rayonix_expt[0].crystal if False: observed['id'] = flex.int(len(observed), -1) observed['imageset_id'] = flex.int(len(observed), 0) observed.centroid_px_to_mm(experiments[0].detector, experiments[0].scan) observed.map_centroids_to_reciprocal_space( experiments[0].detector, experiments[0].beam, experiments[0].goniometer) index_reflections(observed, experiments) ref_predictor = ExperimentsPredictorFactory.from_experiments( experiments) ref_predictor(observed) observed['id'] = flex.int(len(observed), 0) from libtbx.easy_pickle import dump dump('my_observed_prediction_%s.pickle' % self.tag, observed) dumper = ExperimentListDumper(experiments) dumper.as_json('my_observed_prediction_%s.json' % self.tag) predictor = StillsReflectionPredictor(experiments[0]) ubx = predictor.for_ub(experiments[0].crystal.get_A()) ubx['id'] = flex.int(len(ubx), 0) n_predictions = len(ubx) n_observed = len(observed) if len(observed) > 3 and len(ubx) >= len(observed): from libtbx.easy_pickle import dump dump('my_prediction_%s.pickle' % self.tag, ubx) dumper = ExperimentListDumper(experiments) dumper.as_json('my_prediction_%s.json' % self.tag) #from IPython import embed; embed(); exit() exit()