def executeCollection(self, *args): self.params = args[0] self.beamline_setup = hwr.getHardwareObject("beamline-setup") self.lims_client_hwobj = self.beamline_setup.lims_client_hwobj self.collect_hwobj = self.beamline_setup.collect_hwobj self.diffractometer_hwobj = self.beamline_setup.diffractometer_hwobj self.shape_history = self.beamline_setup.shape_history_hwobj self.session = self.beamline_setup.session_hwobj self.acq = qmo.Acquisition() self.acq.acquisition_parameters.collect_agent = qme.COLLECTION_ORIGIN.MXCUBE #self.acq.path_template = queue_model_objects.PathTemplate() #self.acq.path_template = '/home/mikel/Desktop/mxdatadir/mxdata'#copy.deepcopy(self._path_template) self.acq.path_template = self.beamline_setup.get_default_path_template() self.acq.acquisition_parameters.centred_position = None self.acq.acquisition_parameters.energy = 12.3894 #float(self.params['parameters[energy][value]']) self.acq.acquisition_parameters.osc_range = 1.0 #float(self.params['parameters[osc_range][value]']) self.acq.acquisition_parameters.osc_start = 0.0 #float(self.params['parameters[osc_start][value]']) self.acq.acquisition_parameters.exp_time = 10.0 #float(self.params['parameters[exp_time][value]']) self.acq.acquisition_parameters.num_images = 1 #float(self.params['parameters[num_images][value]']) self.acq.acquisition_parameters.resolution = 2.498 #float(self.params['parameters[resolution][value]']) self.acq.acquisition_parameters.transmission = 100.0# float(self.params['parameters[transmission][value]']) self.acq.acquisition_parameters.take_snapshots = False self.acq.path_template.directory = '/data/data1/visitor/mx20110291/20150814/RAW_DATA' self.acq.path_template.process_directory = '/data/data1/visitor/mx20110291/20150814/PROCESSED_DATA' self.acq.path_template.run_number = 1 self.acq.path_template.prefix = 'mx20110291' self.sample = qmo.Sample() self.dc = qmo.DataCollection([self.acq], self.sample.crystals[0], self.sample.processing_parameters) self.dc.set_name('aTest') self.dc.set_number(0) self.dc.experiment_type = qme.EXPERIMENT_TYPE.NATIVE self.fileinfo = {'directory':'/data/data1/visitor/mx20110291/20150814/RAW_DATA', 'prefix':'mx20110291', 'run_number': 1, 'process_directory': '/data/data1/visitor/mx20110291/20150814/PROCESSED_DATA'} self.param_list = qmo.to_collect_dict(self.dc, self.session, self.sample) print "###################################" print "###################################" print "###################################" print self.param_list print "###################################" print "###################################" print self.acq.acquisition_parameters #update with data sent from client #self.bl9113 = hwr.getObjectByRole("collect") #self.bl9113.collect(COLLECTION_ORIGIN_STR.MXCUBE,self.param_list) #or.. self.collect_hwobj.collect(COLLECTION_ORIGIN_STR.MXCUBE,self.param_list)
def execute_task(self, sample): #All this should be in queue_entry level group_data = {'sessionId': self._session_hwobj.session_id, 'experimentType': 'OSC'} gid = self._beamline_setup_hwobj.lims_client_hwobj.\ _store_data_collection_group(group_data) sample.lims_group_id = gid task_list = self._create_task(sample, None) task_list[0].lims_group_id = gid param_list = queue_model_objects.to_collect_dict(task_list[0], \ self._session_hwobj, sample, None) self._beamline_setup_hwobj.collect_hwobj.collect(\ queue_model_enumerables.COLLECTION_ORIGIN_STR.MXCUBE, param_list)
def execute_task(self, sample): #All this should be in queue_entry level group_data = { 'sessionId': self._session_hwobj.session_id, 'experimentType': 'OSC' } gid = self._beamline_setup_hwobj.lims_client_hwobj.\ _store_data_collection_group(group_data) sample.lims_group_id = gid task_list = self._create_task(sample, None) task_list[0].lims_group_id = gid param_list = queue_model_objects.to_collect_dict(task_list[0], \ self._session_hwobj, sample, None) self._beamline_setup_hwobj.collect_hwobj.collect(\ queue_model_enumerables.COLLECTION_ORIGIN_STR.MXCUBE, param_list)
def collect_dc(self, dc, list_item): log = logging.getLogger("user_level_log") if self.collect_hwobj: acq_1 = dc.acquisitions[0] cpos = acq_1.acquisition_parameters.centred_position sample = self.get_data_model().get_parent().get_parent() try: if dc.experiment_type is EXPERIMENT_TYPE.HELICAL: acq_1, acq_2 = (dc.acquisitions[0], dc.acquisitions[1]) # self.collect_hwobj.getChannelObject("helical").setValue(1) #JN TMP disable, need to fix SPEC start_cpos = acq_1.acquisition_parameters.centred_position end_cpos = acq_2.acquisition_parameters.centred_position dc.lims_end_pos_id = self.lims_client_hwobj.\ store_centred_position(end_cpos) helical_oscil_pos = {'1': start_cpos.as_dict(), '2': end_cpos.as_dict()} log.info('Helical_pos value is ' + str(helical_oscil_pos)) # self.collect_hwobj.getChannelObject('helical_pos').setValue(helical_oscil_pos) #JN TMP disable, need to fix SPEC msg = "Helical data collection, moving to start position" log.info(msg) log.info("Moving sample to given position ...") list_item.setText(1, "Moving sample") else: #self.collect_hwobj.getChannelObject("helical").setValue(0) pass empty_cpos = queue_model_objects.CentredPosition() if cpos != empty_cpos: log.info("Moving sample to given position ...") list_item.setText(1, "Moving sample") self.shape_history.select_shape_with_cpos(cpos) self.centring_task = self.diffractometer_hwobj.\ moveToCentredPosition(cpos) self.centring_task.get() else: pos_dict = self.diffractometer_hwobj.getPositions() cpos = queue_model_objects.CentredPosition(pos_dict) snapshot = self.shape_history.get_snapshot([]) acq_1.acquisition_parameters.centred_position = cpos acq_1.acquisition_parameters.centred_position.snapshot_image = snapshot dc.lims_start_pos_id = self.lims_client_hwobj.store_centred_position(cpos) param_list = queue_model_objects.to_collect_dict(dc, self.session, sample) self.collect_task = self.collect_hwobj.\ collect(COLLECTION_ORIGIN_STR.MXCUBE, param_list) self.collect_task.get() if 'collection_id' in param_list[0]: dc.id = param_list[0]['collection_id'] dc.acquisitions[0].path_template.xds_dir = param_list[0]['xds_dir'] except gevent.GreenletExit: #log.warning("Collection stopped by user.") list_item.setText(1, 'Stopped') raise QueueAbortedException('queue stopped by user', self) except Exception as ex: print traceback.print_exc() raise QueueExecutionException(ex.message, self) else: log.error("Could not call the data collection routine," +\ " check the beamline configuration") list_item.setText(1, 'Failed') msg = "Could not call the data collection" +\ " routine, check the beamline configuration" raise QueueExecutionException(msg, self)