예제 #1
0
	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)
예제 #4
0
    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)