def __init__(self, parent = None,name = None, fl = 0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, fl, 'Energy scan') if not name: self.setObjectName("create_energy_scan_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._periodic_table_widget = PeriodicTableWidget(self) self._data_path_widget = DataPathWidget(self, data_model = self._path_template, layout = 'vertical') # Layout -------------------------------------------------------------- self.main_layout = QtGui.QVBoxLayout(self) self.main_layout.addWidget(self._periodic_table_widget) self.main_layout.addWidget(self._data_path_widget) self.main_layout.setContentsMargins(0, 0, 0, 0) self.main_layout.setSpacing(6) self.main_layout.addStretch(10) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._periodic_table_widget.elementEdgeSelectedSignal.\ connect(self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.\ connect(self.acq_parameters_changed)
def _init_models(self): """ Descript. : """ CreateTaskBase.init_models(self) self._processing_parameters = queue_model_objects.ProcessingParameters( ) if self._beamline_setup_hwobj is not None: has_shutter_less = self._beamline_setup_hwobj.\ detector_has_shutterless() self._acquisition_parameters.shutterless = has_shutter_less self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_acquisition_parameters("default_advanced_values") if not self._advanced_methods: self._advanced_methods = self._beamline_setup_hwobj.get_advanced_methods( ) if self._advanced_methods: for method in self._advanced_methods: self._advanced_methods_widget.method_combo.addItem( method) else: self.setEnabled(False) self.grid_treewidget_item_selection_changed()
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): self._init_models() self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): data_collection = tree_item.get_model() if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) # sample_data_model = self.get_sample_item(tree_item).get_model() #self._acq_widget.disable_inverse_beam(True) #self._graphics_manager_hwobj.de_select_all() self._graphics_manager_hwobj.select_shape(data_collection.grid) self._path_template = data_collection.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_collection.acquisitions[0].\ acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self.get_acquisition_widget().use_osc_start(True) else: self.setDisabled(True) self.grid_treewidget_item_selection_changed()
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) escan_model = tree_item.get_model() if isinstance(tree_item, Qt4_queue_item.EnergyScanQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) if escan_model.get_path_template(): self._path_template = escan_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) # ----------------------------------------------------------------- # LNLS self._periodic_table_widget.set_current_element_edge(\ tree_item.get_model().element_symbol, tree_item.get_model().edge) # ----------------------------------------------------------------- elif not(isinstance(tree_item, Qt4_queue_item.SampleQueueItem) or \ isinstance(tree_item, Qt4_queue_item.DataCollectionGroupQueueItem)): self.setDisabled(True)
def init_models(self): CreateTaskBase.init_models(self) self.xrf_spectrum_model = queue_model_objects.XRFSpectrum() self._path_template.start_num = 1 self._path_template.num_files = 1 self._path_template.suffix = 'raw' self._path_template.compression = False
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): self._init_models() self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): data_collection = tree_item.get_model() if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) # sample_data_model = self.get_sample_item(tree_item).get_model() #self._acq_widget.disable_inverse_beam(True) #self._graphics_manager_hwobj.de_select_all() self._graphics_manager_hwobj.select_shape(data_collection.grid) self._path_template = data_collection.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_collection.acquisitions[0].\ acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self.get_acquisition_widget().use_osc_start(True) else: self.setDisabled(True)
def init_models(self): """ Descript. : """ CreateTaskBase.init_models(self) self._energy_scan_result = queue_model_objects.EnergyScanResult() self._processing_parameters = queue_model_objects.ProcessingParameters()
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) self.setDisabled(True) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.XrayImagingQueueItem): data_model= tree_item.get_model() self._path_template = data_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_model.acquisition.acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self._xray_imaging_parameters = data_model.xray_imaging_parameters self._xray_imaging_parameters_widget.update_data_model(data_model) self.setDisabled(False)
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): self._init_models() self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.AdvancedQueueItem): advanced = tree_item.get_model() if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) # sample_data_model = self.get_sample_item(tree_item).get_model() #self._acq_widget.disable_inverse_beam(True) self._path_template = advanced.get_path_template() self._data_path_widget.update_data_model(self._path_template) data_collection = advanced.reference_image_collection self._acquisition_parameters = data_collection.acquisitions[0].\ acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self.get_acquisition_widget().use_osc_start(True) else: self.setDisabled(True)
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) wf_model = tree_item.get_model() if isinstance(tree_item, queue_item.SampleQueueItem): sample_model = tree_item.get_model() self._processing_parameters = sample_model.processing_parameters else: if isinstance(tree_item, queue_item.GphlWorkflowQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) if wf_model.get_path_template(): self._path_template = wf_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) elif isinstance(tree_item, queue_item.BasketQueueItem): self.setDisabled(False) elif not isinstance(tree_item, queue_item.DataCollectionGroupQueueItem): self.setDisabled(True) self._processing_widget.update_data_model(self._processing_parameters)
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): self._init_models() self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.AdvancedQueueItem): advanced = tree_item.get_model() if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) # sample_data_model = self.get_sample_item(tree_item).get_model() # self._acq_widget.disable_inverse_beam(True) self._path_template = advanced.get_path_template() self._data_path_widget.update_data_model(self._path_template) data_collection = advanced.reference_image_collection self._acquisition_parameters = data_collection.acquisitions[0].acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self.get_acquisition_widget().use_osc_start(True) else: self.setDisabled(True)
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, fl, "Helical") if not name: self.setObjectName("create_helical_widget") self.init_models() # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._lines_map = {} # Graphic elements ---------------------------------------------------- self._lines_widget = uic.loadUi( os.path.join(os.path.dirname(__file__), "ui_files/Qt4_helical_line_widget_layout.ui") ) self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout="vertical", acq_params=self._acquisition_parameters, path_template=self._path_template, ) self._data_path_widget = DataPathWidget( self, "create_dc_path_widget", data_model=self._path_template, layout="vertical" ) self._processing_widget = ProcessingWidget(self, data_model=self._processing_parameters) # Layout -------------------------------------------------------------- _main_vlayout = QtGui.QVBoxLayout(self) _main_vlayout.addWidget(self._lines_widget) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._processing_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._lines_widget.lines_treewidget.itemSelectionChanged.connect(self.lines_treewidget_selection_changed) self._lines_widget.create_line_button.clicked.connect(self.create_line_button_clicked) self._lines_widget.remove_line_button.clicked.connect(self.remove_line_button_clicked) self._data_path_widget.data_path_layout.prefix_ledit.textChanged.connect(self._prefix_ledit_change) self._data_path_widget.data_path_layout.run_number_ledit.textChanged.connect(self._run_number_ledit_change) self._data_path_widget.pathTemplateChangedSignal.connect(self.handle_path_conflict) self._acq_widget.madEnergySelectedSignal.connect(self.mad_energy_selected) self._acq_widget.acqParametersChangedSignal.connect(self.handle_path_conflict) self._processing_widget.enableProcessingSignal.connect(self._enable_processing_toggled) # Other --------------------------------------------------------------- for col in range(self._lines_widget.lines_treewidget.columnCount()): self._lines_widget.lines_treewidget.resizeColumnToContents(col)
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) self.setDisabled(True) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.XrayImagingQueueItem): data_model = tree_item.get_model() self._path_template = data_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_model.acquisitions[ 0].acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self._xray_imaging_parameters = data_model.xray_imaging_parameters self._xray_imaging_parameters_widget.update_data_model( self._xray_imaging_parameters) self.setDisabled(False)
def __init__(self, parent=None, name=None, fl=0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, fl, 'Energy scan') if not name: self.setObjectName("create_energy_scan_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._periodic_table_widget = PeriodicTableWidget(self) self._data_path_widget = DataPathWidget(self, data_model=self._path_template, layout='vertical') _parameters_gbox = QGroupBox('Parameters', self) self._adjust_transmission_cbox = QCheckBox(\ "Adjust transmission", _parameters_gbox) self._adjust_transmission_cbox.setChecked(False) self._adjust_transmission_cbox.setEnabled(True) self._max_transmission_label = QLabel("Maximum transmission:") self._max_transmission_ledit = QLineEdit("20", _parameters_gbox) self._max_transmission_ledit.setFixedWidth(80) self._max_transmission_ledit.setEnabled(False) # Layout -------------------------------------------------------------- _parameters_gbox_hlayout = QGridLayout(_parameters_gbox) _parameters_gbox_hlayout.addWidget(self._adjust_transmission_cbox, 0, 0) _parameters_gbox_hlayout.addWidget(self._max_transmission_label, 1, 0) _parameters_gbox_hlayout.addWidget(self._max_transmission_ledit, 1, 1) _parameters_gbox_hlayout.setColumnStretch(2, 1) _parameters_gbox_hlayout.setSpacing(2) _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self._periodic_table_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.setSpacing(6) _main_vlayout.addStretch(10) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ #self._periodic_table_widget.elementEdgeSelectedSignal.connect(\ # self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.connect(\ self.path_template_changed) self._adjust_transmission_cbox.stateChanged.connect(\ self.adjust_transmission_state_changed) self._max_transmission_ledit.textEdited.connect(\ self.max_transmission_value_changed)
def __init__(self, parent=None,name=None, fl=0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, fl, 'Energy scan') if not name: self.setObjectName("create_energy_scan_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._periodic_table_widget = PeriodicTableWidget(self) self._data_path_widget = DataPathWidget(self, data_model = self._path_template, layout = 'vertical') _parameters_gbox = QGroupBox('Parameters', self) self._adjust_transmission_cbox = QCheckBox(\ "Adjust transmission", _parameters_gbox) self._adjust_transmission_cbox.setChecked(False) self._adjust_transmission_cbox.setEnabled(True) self._max_transmission_label = QLabel("Maximum transmission:") self._max_transmission_ledit = QLineEdit("20", _parameters_gbox) self._max_transmission_ledit.setFixedWidth(80) self._max_transmission_ledit.setEnabled(False) # Layout -------------------------------------------------------------- _parameters_gbox_hlayout = QGridLayout(_parameters_gbox) _parameters_gbox_hlayout.addWidget(self._adjust_transmission_cbox, 0, 0) _parameters_gbox_hlayout.addWidget(self._max_transmission_label, 1, 0) _parameters_gbox_hlayout.addWidget(self._max_transmission_ledit, 1, 1) _parameters_gbox_hlayout.setColumnStretch(2, 1) _parameters_gbox_hlayout.setSpacing(2) _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self._periodic_table_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.setSpacing(6) _main_vlayout.addStretch(10) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ #self._periodic_table_widget.elementEdgeSelectedSignal.connect(\ # self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.connect(\ self.path_template_changed) self._adjust_transmission_cbox.stateChanged.connect(\ self.adjust_transmission_state_changed) self._max_transmission_ledit.textEdited.connect(\ self.max_transmission_value_changed) self._data_path_widget.data_path_layout.compression_cbox.setVisible(False)
def __init__(self, parent=None, name=None, fl=0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, QtCore.Qt.WindowFlags(fl), "Standart") if not name: self.setObjectName("Qt4_create_discrete_widget") self.init_models() # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.previous_energy = None self.init_models() # Graphic elements ---------------------------------------------------- self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout='vertical', acq_params=self._acquisition_parameters, path_template=self._path_template) self._data_path_widget = DataPathWidget(self, 'create_dc_path_widget', data_model=self._path_template, layout='vertical') self._processing_widget = ProcessingWidget( self, data_model=self._processing_parameters) # Layout -------------------------------------------------------------- _main_vlayout = QtGui.QVBoxLayout(self) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._processing_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.data_path_layout.prefix_ledit.textChanged.\ connect(self._prefix_ledit_change) self._data_path_widget.data_path_layout.run_number_ledit.textChanged.\ connect(self._run_number_ledit_change) self._data_path_widget.pathTemplateChangedSignal.connect(\ self.handle_path_conflict) self._acq_widget.acqParametersChangedSignal.connect(\ self.handle_path_conflict) self._acq_widget.madEnergySelectedSignal.connect(\ self.mad_energy_selected) self._processing_widget.enableProcessingSignal.connect(\ self._enable_processing_toggled)
def set_beamline_setup(self, bl_setup_hwobj): CreateTaskBase.set_beamline_setup(self, bl_setup_hwobj) # At startup, if scene loaded from file, then update listwidget shapes = self._graphics_manager_hwobj.get_shapes() for shape in shapes: if isinstance(shape, GraphicsItemLine): self.shape_created(shape, "Line")
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, QtCore.Qt.WindowFlags(fl), 'XRF-scan') if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.count_time = None self.init_models() # Graphic elements ---------------------------------------------------- self._data_path_gbox = QtGui.QGroupBox('Data location', self) self._data_path_widget = DataPathWidget(self._data_path_gbox, data_model=self._path_template, layout='vertical') _parameters_gbox = QtGui.QGroupBox('Parameters', self) _count_time_label = QtGui.QLabel("Count time (sec.):", _parameters_gbox) self.count_time_ledit = QtGui.QLineEdit("1", _parameters_gbox) self.count_time_ledit.setMaximumWidth(75) # Layout -------------------------------------------------------------- self._data_path_gbox_vlayout = QtGui.QVBoxLayout(self) self._data_path_gbox_vlayout.addWidget(self._data_path_widget) self._data_path_gbox_vlayout.setSpacing(0) self._data_path_gbox_vlayout.setContentsMargins(0, 0, 0, 0) self._data_path_gbox.setLayout(self._data_path_gbox_vlayout) _parameters_gbox_hlayout = QtGui.QHBoxLayout(self) _parameters_gbox_hlayout.addWidget(_count_time_label) _parameters_gbox_hlayout.addWidget(self.count_time_ledit) _parameters_gbox_hlayout.addStretch(0) _parameters_gbox_hlayout.setSpacing(2) _parameters_gbox_hlayout.setContentsMargins(0, 0, 0, 0) _parameters_gbox.setLayout(_parameters_gbox_hlayout) _main_vlayout = QtGui.QVBoxLayout(self) _main_vlayout.addWidget(self._data_path_gbox) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.addStretch(0) self.setLayout(_main_vlayout) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.data_path_layout.run_number_ledit.textChanged.\ connect(self._run_number_ledit_change) self.connect(self._data_path_widget, QtCore.SIGNAL("pathTemplateChanged"), self.handle_path_conflict)
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, QtCore.Qt.WindowFlags(fl), 'GphlWorkflow') if not name: self.setObjectName("Qt4_create_gphl_workflow_widget") # Hardware objects ---------------------------------------------------- self._workflow_hwobj = None # Internal variables -------------------------------------------------- self.current_prefix = None self.init_models() # Graphic elements ---------------------------------------------------- self._workflow_type_widget = QtGui.QGroupBox('Workflow type', self) self._workflow_cbox = QtGui.QComboBox(self._workflow_type_widget) self._gphl_acq_widget = QtGui.QGroupBox('Acquisition', self) self._gphl_acq_param_widget = GphlAcquisitionWidget( self._gphl_acq_widget, "gphl_acquisition_parameter_widget") self._gphl_diffractcal_widget = GphlDiffractcalWidget( self._gphl_acq_widget, "gphl_diffractcal_widget") self._data_path_widget = DataPathWidget(self, 'create_dc_path_widget', layout='vertical') data_path_layout = self._data_path_widget.data_path_layout data_path_layout.file_name_label.hide() data_path_layout.file_name_value_label.hide() data_path_layout.run_number_label.hide() data_path_layout.run_number_ledit.hide() # Layout -------------------------------------------------------------- _workflow_type_vlayout = QtGui.QVBoxLayout(self._workflow_type_widget) _workflow_type_vlayout.addWidget(self._workflow_cbox) _gphl_acq_vlayout = QtGui.QVBoxLayout(self._gphl_acq_widget) _gphl_acq_vlayout.addWidget(self._gphl_acq_param_widget) _gphl_acq_vlayout.addWidget(self._gphl_diffractcal_widget) _main_vlayout = QtGui.QVBoxLayout(self) _main_vlayout.addWidget(self._workflow_type_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._gphl_acq_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(0, 0, 0, 0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._workflow_cbox.currentIndexChanged[str].connect( self.workflow_selected) # set up popup data dialog self.gphl_data_dialog = GphlDataDialog(self, 'GPhL Workflow Data') self.gphl_data_dialog.setModal(True) self.gphl_data_dialog.continueClickedSignal.connect(self.data_acquired)
def init_models(self): """ Descript. : """ CreateTaskBase.init_models(self) self.enery_scan = queue_model_objects.EnergyScan() self._path_template.start_num = 1 self._path_template.num_files = 1 self._path_template.suffix = 'raw'
def set_beamline_setup(self, bl_setup_hwobj): """ In plate mode osciallation is start is in the middle of grid """ CreateTaskBase.set_beamline_setup(self, bl_setup_hwobj) if bl_setup_hwobj.diffractometer_hwobj.in_plate_mode(): self._acq_widget.acq_widget_layout.osc_start_label.\ setText("Oscillation middle:")
def __init__(self, parent = None, name = None, fl = 0): CreateTaskBase.__init__(self, parent, name, QtCore.Qt.WindowFlags(fl), 'XRF-scan') if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.count_time = None self.init_models() # Graphic elements ---------------------------------------------------- self._data_path_gbox = QtGui.QGroupBox('Data location', self) self._data_path_widget = DataPathWidget(self._data_path_gbox, data_model = self._path_template, layout = 'vertical') _parameters_gbox = QtGui.QGroupBox('Parameters', self) _count_time_label = QtGui.QLabel("Count time (sec.):", _parameters_gbox) self.count_time_ledit = QtGui.QLineEdit("1", _parameters_gbox) self.count_time_ledit.setMaximumWidth(75) # Layout -------------------------------------------------------------- self._data_path_gbox_vlayout = QtGui.QVBoxLayout(self) self._data_path_gbox_vlayout.addWidget(self._data_path_widget) self._data_path_gbox_vlayout.setSpacing(0) self._data_path_gbox_vlayout.setContentsMargins(0, 0, 0, 0) self._data_path_gbox.setLayout(self._data_path_gbox_vlayout) _parameters_gbox_hlayout = QtGui.QHBoxLayout(self) _parameters_gbox_hlayout.addWidget(_count_time_label) _parameters_gbox_hlayout.addWidget(self.count_time_ledit) _parameters_gbox_hlayout.addStretch(0) _parameters_gbox_hlayout.setSpacing(2) _parameters_gbox_hlayout.setContentsMargins(0, 0, 0, 0) _parameters_gbox.setLayout(_parameters_gbox_hlayout) _main_vlayout = QtGui.QVBoxLayout(self) _main_vlayout.addWidget(self._data_path_gbox) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.addStretch(0) self.setLayout(_main_vlayout) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.data_path_layout.run_number_ledit.textChanged.\ connect(self._run_number_ledit_change) self.connect(self._data_path_widget, QtCore.SIGNAL("pathTemplateChanged"), self.handle_path_conflict)
def set_beamline_setup(self, bl_setup_hwobj): """ In plate mode osciallation is start is in the middle of grid """ CreateTaskBase.set_beamline_setup(self, bl_setup_hwobj) self._acq_widget.acq_widget_layout.osc_start_label.\ setText("Oscillation middle:") self._acq_widget.acq_widget_layout.set_max_osc_range_button.setVisible(\ self._beamline_setup_hwobj.diffractometer_hwobj.in_plate_mode())
def __init__(self, parent=None, name=None, fl=0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, Qt.WindowFlags(fl), "Standard") if not name: self.setObjectName("create_discrete_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout='vertical', acq_params=self._acquisition_parameters, path_template=self._path_template) self._data_path_widget = DataPathWidget(self, 'create_dc_path_widget', data_model=self._path_template, layout='vertical') self._processing_widget = ProcessingWidget( self, data_model=self._processing_parameters) # Layout -------------------------------------------------------------- _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._processing_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._acq_widget.acqParametersChangedSignal.\ connect(self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.\ connect(self.path_template_changed) self._acq_widget.madEnergySelectedSignal.connect(\ self.mad_energy_selected) self._processing_widget.enableProcessingSignal.connect(\ self._run_processing_toggled) self._acq_widget.acq_widget_layout.set_max_osc_range_button.clicked.\ connect(self.set_max_osc_total_range_clicked)
def __init__(self, parent=None, name=None, fl=0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, QtCore.Qt.WindowFlags(fl), "Standart") if not name: self.setObjectName("create_discrete_widget") self.init_models() # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.previous_energy = None self.init_models() # Graphic elements ---------------------------------------------------- self._acq_widget = AcquisitionWidget(self, "acquisition_widget", layout='vertical', acq_params=self._acquisition_parameters, path_template=self._path_template) self._data_path_widget = DataPathWidget(self, 'create_dc_path_widget', data_model=self._path_template, layout='vertical') self._processing_widget = ProcessingWidget(self, data_model=self._processing_parameters) # Layout -------------------------------------------------------------- _main_vlayout = QtGui.QVBoxLayout(self) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(self._processing_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(2) _main_vlayout.setContentsMargins(0,0,0,0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._acq_widget.acqParametersChangedSignal.\ connect(self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.\ connect(self.acq_parameters_changed) self._acq_widget.madEnergySelectedSignal.connect(\ self.mad_energy_selected) self._processing_widget.enableProcessingSignal.connect(\ self._run_processing_toggled) # Other --------------------------------------------------------------- self._processing_widget.processing_widget.\ run_processing_parallel_cbox.hide()
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, Qt.WindowFlags(fl), 'XRF spectrum') if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.count_time = None self.init_models() # Graphic elements ---------------------------------------------------- self._data_path_widget = DataPathWidget(self, data_model=self._path_template, layout='vertical') _parameters_gbox = QGroupBox('Parameters', self) _count_time_label = QLabel("Count time (sec.):", _parameters_gbox) self.count_time_ledit = QLineEdit("1", _parameters_gbox) #self.count_time_ledit.setMaximumWidth(75) self.adjust_transmission_cbox = QCheckBox(\ "Adjust transmission", _parameters_gbox) self.adjust_transmission_cbox.setChecked(True) # Layout -------------------------------------------------------------- _parameters_gbox_hlayout = QHBoxLayout(_parameters_gbox) _parameters_gbox_hlayout.addWidget(_count_time_label) _parameters_gbox_hlayout.addWidget(self.count_time_ledit) _parameters_gbox_hlayout.addWidget(self.adjust_transmission_cbox) _parameters_gbox_hlayout.addStretch(0) _parameters_gbox_hlayout.setSpacing(2) _parameters_gbox_hlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.addStretch(0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.pathTemplateChangedSignal.\ connect(self.path_template_changed) self.adjust_transmission_cbox.stateChanged.connect(\ self.adjust_transmission_state_changed) # Other --------------------------------------------------------------- self._data_path_widget.data_path_layout.compression_cbox.setVisible( False)
def init_models(self): CreateTaskBase.init_models(self) self._energy_scan_result = queue_model_objects.EnergyScanResult() self._processing_parameters = queue_model_objects.ProcessingParameters() if self._beamline_setup_hwobj is not None: has_shutter_less = self._beamline_setup_hwobj.\ detector_has_shutterless() self._acquisition_parameters.shutterless = has_shutter_less self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_acquisition_parameters("default_helical_values")
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): sample_model = tree_item.get_model() self._processing_parameters = sample_model.processing_parameters #self._processing_parameters = copy.deepcopy(self._processing_parameters) self._processing_widget.update_data_model( self._processing_parameters) elif isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): data_collection = tree_item.get_model() if data_collection.experiment_type == EXPERIMENT_TYPE.HELICAL: if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) self._path_template = data_collection.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_collection.acquisitions[0].\ acquisition_parameters if len(data_collection.acquisitions) == 2: start_cpos = data_collection.acquisitions[0].acquisition_parameters.\ centred_position end_cpos = data_collection.acquisitions[1].acquisition_parameters.\ centred_position self.select_shape_with_cpos(start_cpos, end_cpos) self._acq_widget.update_data_model( self._acquisition_parameters, self._path_template) self.get_acquisition_widget().use_osc_start(True) self._processing_parameters = data_collection.processing_parameters self._processing_widget.update_data_model( self._processing_parameters) else: self.setDisabled(True) else: self.setDisabled(True) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem) or \ isinstance(tree_item, Qt4_queue_item.DataCollectionGroupQueueItem) or \ isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): self._processing_widget.update_data_model( self._processing_parameters) self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template)
def init_models(self): """ Descript. : """ CreateTaskBase.init_models(self) self._xray_imaging_parameters = queue_model_objects.XrayImagingParameters( ) if self._beamline_setup_hwobj is not None: self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_acquisition_parameters("default_imaging_values")
def __init__(self, parent = None, name = None, fl = 0): CreateTaskBase.__init__(self, parent, name, Qt.WindowFlags(fl), 'XRF spectrum') if name is not None: self.setObjectName(name) # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.count_time = None self.init_models() # Graphic elements ---------------------------------------------------- self._data_path_widget = DataPathWidget(self, data_model = self._path_template, layout = 'vertical') _parameters_gbox = QGroupBox('Parameters', self) _count_time_label = QLabel("Count time (sec.):", _parameters_gbox) self.count_time_ledit = QLineEdit("1", _parameters_gbox) #self.count_time_ledit.setMaximumWidth(75) self.adjust_transmission_cbox = QCheckBox(\ "Adjust transmission", _parameters_gbox) self.adjust_transmission_cbox.setChecked(True) # Layout -------------------------------------------------------------- _parameters_gbox_hlayout = QHBoxLayout(_parameters_gbox) _parameters_gbox_hlayout.addWidget(_count_time_label) _parameters_gbox_hlayout.addWidget(self.count_time_ledit) _parameters_gbox_hlayout.addWidget(self.adjust_transmission_cbox) _parameters_gbox_hlayout.addStretch(0) _parameters_gbox_hlayout.setSpacing(2) _parameters_gbox_hlayout.setContentsMargins(0, 0, 0, 0) _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addWidget(_parameters_gbox) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) _main_vlayout.addStretch(0) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.pathTemplateChangedSignal.\ connect(self.path_template_changed) self.adjust_transmission_cbox.stateChanged.connect(\ self.adjust_transmission_state_changed) # Other --------------------------------------------------------------- self._data_path_widget.data_path_layout.compression_cbox.setVisible(False)
def init_models(self): """ Descript. : """ CreateTaskBase.init_models(self) self._xray_imaging_parameters = queue_model_objects.XrayImagingParameters() if self._beamline_setup_hwobj is not None: self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_acquisition_parameters("default_imaging_values") self._path_template.suffix = 'tiff'
def __init__(self, parent=None, name=None, fl=0): CreateTaskBase.__init__(self, parent, name, Qt.WindowFlags(fl), 'XrayImaging') if not name: self.setObjectName("create_xray_imaging_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self._xray_imaging_parameters = None self._processing_parameters = None self.init_models() # Graphic elements ---------------------------------------------------- self._xray_imaging_parameters_widget = XrayImagingParametersWidget(\ self, 'xray_imaging_widget', xray_imaging_params=self._xray_imaging_parameters) self._acq_widget = AcquisitionWidget( self, "acquisition_widget", layout='vertical', acq_params=self._acquisition_parameters, path_template=self._path_template) self._acq_widget.grid_mode = False self._data_path_widget = DataPathWidget(self, 'create_dc_path_widget', data_model=self._path_template, layout='vertical') # Layout -------------------------------------------------------------- _main_vlayout = QVBoxLayout(self) _main_vlayout.addWidget(self._xray_imaging_parameters_widget) _main_vlayout.addWidget(self._acq_widget) _main_vlayout.addWidget(self._data_path_widget) _main_vlayout.addStretch(0) _main_vlayout.setSpacing(6) _main_vlayout.setContentsMargins(2, 2, 2, 2) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._acq_widget.acqParametersChangedSignal.\ connect(self.acq_parameters_changed) self._data_path_widget.pathTemplateChangedSignal.\ connect(self.path_template_changed) # Other --------------------------------------------------------------- self._acq_widget.use_osc_start(False) self._acq_widget.use_kappa(False)
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): self._init_models() if self._char_params.space_group > 0: self._set_space_group(self._char_params.space_group) else: sample_model = tree_item.get_model() self._set_space_group( sample_model.processing_parameters.space_group) self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self._char_params_mib.set_model(self._char_params) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.CharacterisationQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) self._char = tree_item.get_model() if self._char.get_path_template(): self._path_template = self._char.get_path_template() self._data_path_widget.update_data_model(self._path_template) data_collection = self._char.reference_image_collection self._char_params = self._char.characterisation_parameters self._char_params_mib.set_model(self._char_params) self._acquisition_parameters = data_collection.acquisitions[0].\ acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self.get_acquisition_widget().use_osc_start(True) if len(data_collection.acquisitions) == 1: self.select_shape_with_cpos(self._acquisition_parameters.\ centred_position) self._processing_parameters = data_collection.processing_parameters else: self.setDisabled(True)
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): sample_model = tree_item.get_model() #self._processing_parameters = copy.deepcopy(self._processing_parameters) self._processing_parameters = sample_model.processing_parameters self._processing_widget.update_data_model( self._processing_parameters) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): dc = tree_item.get_model() self._acq_widget.use_kappa(False) if not dc.is_helical(): if dc.is_executed(): self.setDisabled(True) else: self.setDisabled(False) sample_data_model = self.get_sample_item(tree_item).get_model() energy_scan_result = sample_data_model.crystals[ 0].energy_scan_result self._acq_widget.set_energies(energy_scan_result) #self._acq_widget.disable_inverse_beam(True) self._path_template = dc.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = dc.acquisitions[ 0].acquisition_parameters self._acq_widget.update_data_model( self._acquisition_parameters, self._path_template) #self.get_acquisition_widget().use_osc_start(True) if len(dc.acquisitions) == 1: self.select_shape_with_cpos(self._acquisition_parameters.\ centred_position) self._processing_parameters = dc.processing_parameters self._processing_widget.update_data_model( self._processing_parameters) else: self.setDisabled(True) else: self.setDisabled(True)
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): sample_model = tree_item.get_model() self._processing_parameters = sample_model.processing_parameters #self._processing_parameters = copy.deepcopy(self._processing_parameters) self._processing_widget.update_data_model(self._processing_parameters) elif isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): data_collection = tree_item.get_model() if data_collection.experiment_type == EXPERIMENT_TYPE.HELICAL: if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) self._path_template = data_collection.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = data_collection.acquisitions[0].\ acquisition_parameters if len(data_collection.acquisitions) == 2: start_cpos = data_collection.acquisitions[0].acquisition_parameters.\ centred_position end_cpos = data_collection.acquisitions[1].acquisition_parameters.\ centred_position self.select_shape_with_cpos(start_cpos, end_cpos) self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) self.get_acquisition_widget().use_osc_start(True) self._processing_parameters = data_collection.processing_parameters self._processing_widget.update_data_model(self._processing_parameters) else: self.setDisabled(True) else: self.setDisabled(True) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem) or \ isinstance(tree_item, Qt4_queue_item.DataCollectionGroupQueueItem) or \ isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): self._processing_widget.update_data_model(self._processing_parameters) self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template)
def init_models(self): CreateTaskBase.init_models(self) self._processing_parameters = queue_model_objects.ProcessingParameters() if self._beamline_setup_hwobj is not None: has_shutter_less = self._beamline_setup_hwobj.\ detector_has_shutterless() self._acquisition_parameters.shutterless = has_shutter_less self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_acquisition_parameters("default_acquisition_values") self._acquisition_parameters.num_triggers = 1 self._acquisition_parameters.num_images_per_trigger = 1 self._processing_widget.processing_widget.run_processing_parallel_cbox.setChecked(\ self._beamline_setup_hwobj._get_run_processing_parallel())
def set_beamline_setup(self, bl_setup_hwobj): """ In plate mode osciallation is start is in the middle of grid """ CreateTaskBase.set_beamline_setup(self, bl_setup_hwobj) self._acq_widget.acq_widget_layout.osc_start_label.\ setText("Oscillation middle:") hor_size, ver_size = bl_setup_hwobj.beam_info_hwobj.get_beam_size() self.spacing = [hor_size, ver_size] self._advanced_methods_widget.hor_spacing_ledit.setText(\ "%.1f" % (hor_size * 1000)) self._advanced_methods_widget.ver_spacing_ledit.setText(\ "%.1f" % (ver_size * 1000))
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): #self._init_models() if self._char_params.space_group == "": sample_model = tree_item.get_model() self._set_space_group(sample_model.processing_parameters.space_group) #self._acq_widget.update_data_model(self._acquisition_parameters, # self._path_template) #self._char_params_mib.set_model(self._char_params) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.CharacterisationQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) self._char = tree_item.get_model() if self._char.get_path_template(): self._path_template = self._char.get_path_template() self._data_path_widget.update_data_model(self._path_template) data_collection = self._char.reference_image_collection self._char_params = self._char.characterisation_parameters self._char_params_mib.set_model(self._char_params) self._acquisition_parameters = data_collection.acquisitions[0].\ acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) #self.get_acquisition_widget().use_osc_start(True) if len(data_collection.acquisitions) == 1: self.select_shape_with_cpos(self._acquisition_parameters.\ centred_position) self._processing_parameters = data_collection.processing_parameters else: self.setDisabled(True)
def set_beamline_setup(self, bl_setup_hwobj): """ In plate mode oscillation start is in the middle of the grid """ CreateTaskBase.set_beamline_setup(self, bl_setup_hwobj) self._acq_widget.acq_widget_layout.osc_start_label.\ setText("Oscillation middle:") hor_size, ver_size = bl_setup_hwobj.beam_info_hwobj.get_beam_size() self.spacing[0] = hor_size self.spacing[1] = ver_size self._advanced_methods_widget.hor_spacing_ledit.setText(\ "%.1f" % (hor_size * 1000)) self._advanced_methods_widget.ver_spacing_ledit.setText(\ "%.1f" % (ver_size * 1000))
def approve_creation(self): """ Descript. : """ result = CreateTaskBase.approve_creation(self) try: #This is very EMBL specific and soon will be removed if self._beamline_setup_hwobj.detector_hwobj.get_roi_mode_name( ) == "16M": file_size = 18. total_num_of_images = 14400 else: file_size = 18. / 4 total_num_of_images = 14400 * 4 num_images = float( self._acq_widget.acq_widget_layout.num_images_ledit.text()) total, free, perc = self._beamline_setup_hwobj.machine_info_hwobj.get_ramdisk_size( ) free_mb = free / (2**20) if num_images > total_num_of_images * free_mb / (125.8 * 1024): msg = "Ramdisk size (%d GB) is not enough to run the collection with " % ( free_mb / 1024) msg += "%d frames." % num_images logging.getLogger("GUI").error(msg) result = False except: pass return result
def approve_creation(self): """ Descript. : """ result = CreateTaskBase.approve_creation(self) selected_grid = self.get_selected_shapes()[0] if not selected_grid: msg = "No grid selected. Please select a grid to continue!" logging.getLogger("GUI").warning(msg) result = False #selected_grid = self._graphics_manager_hwobj.get_auto_grid() else: grid_properties = selected_grid.get_properties() exp_time = float(self._acq_widget.acq_widget_layout.exp_time_ledit.text()) speed = grid_properties["yOffset"] / exp_time if speed >= 2.25: logging.getLogger("GUI").error("Translation speed %.3f is above the limit 2.25" % speed) return False osc_range_per_frame = float(self._acq_widget.acq_widget_layout.osc_range_ledit.text()) speed = osc_range_per_frame / exp_time if speed >= 300: logging.getLogger("GUI").error("Rotation speed per frame %.3f is above the limit 300" % speed) return False return result
def approve_creation(self): """ Descript. : """ result = CreateTaskBase.approve_creation(self) selected_grid = self.get_selected_grid() if not selected_grid: msg = "No grid selected. Please select a grid to continue!" logging.getLogger("GUI").warning(msg) result = False else: grid_properties = selected_grid.get_properties() exp_time = float(self._acq_widget.\ acq_widget_layout.exp_time_ledit.text()) speed = grid_properties["yOffset"] / exp_time if speed >= 0.8: logging.getLogger("GUI").error(\ "Translation speed " + \ "%.3f is above the limit 0.8" % speed) return False osc_range_per_frame = float(self._acq_widget.\ acq_widget_layout.osc_range_ledit.text()) speed = osc_range_per_frame / exp_time if speed >= 166: logging.getLogger("GUI").error(\ "Rotation speed per frame " + \ "%.3f is above the limit 166" % speed) return False result = True return result
def approve_creation(self): """ Descript. : """ result = CreateTaskBase.approve_creation(self) try: #This is very EMBL specific and soon will be removed if self._beamline_setup_hwobj.detector_hwobj.get_roi_mode_name() == "16M": file_size = 18. total_num_of_images = 14400 else: file_size = 18. / 4 total_num_of_images = 14400 * 4 num_images = float(self._acq_widget.acq_widget_layout.num_images_ledit.text()) total, free, perc = self._beamline_setup_hwobj.machine_info_hwobj.get_ramdisk_size() free_mb = free / (2 ** 20) if num_images > total_num_of_images * free_mb / (125.8 * 1024): msg = "Ramdisk size (%d GB) is not enough to run the collection with " % (free_mb / 1024) msg += "%d frames." % num_images logging.getLogger("GUI").error(msg) result = False except: pass return result
def _folder_ledit_change(self, new_value): """ Descript. : """ if (self._base_image_dir is None): if (type(self.parent) in CreateTaskBase.__subclasses__()): self._base_image_dir = self.parent._session_hwobj.get_base_image_directory() base_image_dir = self._base_image_dir if (self._base_process_dir is None): if (type(self.parent) in CreateTaskBase.__subclasses__()): self._base_process_dir = self.parent._session_hwobj.get_base_process_directory() base_proc_dir = self._base_process_dir if (self._base_snapshot_dir is None): if (type(self.parent) in CreateTaskBase.__subclasses__()): self._base_snapshot_dir = self.parent._session_hwobj.get_base_snapshot_directory() base_snap_dir = self._base_snapshot_dir if (self._base_log_dir is None): if (type(self.parent) in CreateTaskBase.__subclasses__()): self._base_log_dir = self.parent._session_hwobj.get_base_log_directory() base_log_dir = self._base_log_dir new_sub_dir = str(new_value).strip(' ') if len(new_sub_dir) > 0: if new_sub_dir[0] == os.path.sep: new_sub_dir = new_sub_dir[1:] new_image_directory = os.path.join(base_image_dir, str(new_sub_dir)) new_snap_directory = os.path.join(base_snap_dir, str(new_sub_dir)) new_log_directory = os.path.join(base_log_dir, str(new_sub_dir)) new_proc_dir = os.path.join(base_proc_dir, str(new_sub_dir)) else: new_image_directory = base_image_dir new_snap_directory = base_snap_dir new_log_directory = base_log_dir new_proc_dir = base_proc_dir self._data_model.directory = new_image_directory self._data_model.snapshot_directory = new_snap_directory self._data_model.log_directory = new_log_directory self._data_model.process_directory = new_proc_dir Qt4_widget_colors.set_widget_color(self.data_path_layout.folder_ledit, Qt4_widget_colors.WHITE) self.pathTemplateChangedSignal.emit()
def init_models(self): """ Descript. : """ CreateTaskBase.init_models(self) #self._energy_scan_result = queue_model_objects.EnergyScanResult() self._processing_parameters = queue_model_objects.ProcessingParameters() if self._beamline_setup_hwobj is not None: has_shutter_less = self._beamline_setup_hwobj.\ detector_has_shutterless() self._acquisition_parameters.shutterless = has_shutter_less self._acquisition_parameters = self._beamline_setup_hwobj.\ get_default_acquisition_parameters("default_acquisition_values") self._processing_widget.processing_widget.run_processing_parallel_cbox.setChecked(\ self._beamline_setup_hwobj._get_run_processing_parallel())
def __init__(self, parent=None, name=None, fl=0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, fl, 'Energy scan') if not name: self.setObjectName("create_energy_scan_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._periodic_table_widget = PeriodicTableWidget(self) self._data_path_gbox = QtGui.QGroupBox('Data location', self) self._data_path_widget = DataPathWidget(self._data_path_gbox, data_model=self._path_template, layout='vertical') # Layout -------------------------------------------------------------- self._data_path_gbox_vlayout = QtGui.QVBoxLayout(self) self._data_path_gbox_vlayout.addWidget(self._data_path_widget) self._data_path_gbox_vlayout.setSpacing(0) self._data_path_gbox_vlayout.setContentsMargins(0, 0, 0, 0) self._data_path_gbox.setLayout(self._data_path_gbox_vlayout) self.main_layout = QtGui.QVBoxLayout(self) self.main_layout.addWidget(self._periodic_table_widget) self.main_layout.addWidget(self._data_path_gbox) self.main_layout.addStretch(0) self.main_layout.setSpacing(0) self.main_layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.main_layout) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.data_path_layout.run_number_ledit.textChanged.\ connect(self._run_number_ledit_change) self.connect(self._data_path_widget, QtCore.SIGNAL("pathTemplateChanged"), self.handle_path_conflict)
def __init__(self, parent = None,name = None, fl = 0): """ Descript. : """ CreateTaskBase.__init__(self, parent, name, fl, 'Energy scan') if not name: self.setObjectName("create_energy_scan_widget") # Hardware objects ---------------------------------------------------- # Internal variables -------------------------------------------------- self.init_models() # Graphic elements ---------------------------------------------------- self._periodic_table_widget = PeriodicTableWidget(self) self._data_path_gbox = QtGui.QGroupBox('Data location', self) self._data_path_widget = DataPathWidget(self._data_path_gbox, data_model = self._path_template, layout = 'vertical') # Layout -------------------------------------------------------------- self._data_path_gbox_vlayout = QtGui.QVBoxLayout(self) self._data_path_gbox_vlayout.addWidget(self._data_path_widget) self._data_path_gbox_vlayout.setSpacing(0) self._data_path_gbox_vlayout.setContentsMargins(0, 0, 0, 0) self._data_path_gbox.setLayout(self._data_path_gbox_vlayout) self.main_layout = QtGui.QVBoxLayout(self) self.main_layout.addWidget(self._periodic_table_widget) self.main_layout.addWidget(self._data_path_gbox) self.main_layout.addStretch(0) self.main_layout.setSpacing(0) self.main_layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.main_layout) # SizePolicies -------------------------------------------------------- # Qt signal/slot connections ------------------------------------------ self._data_path_widget.data_path_layout.run_number_ledit.textChanged.\ connect(self._run_number_ledit_change) self.connect(self._data_path_widget, QtCore.SIGNAL("pathTemplateChanged"), self.handle_path_conflict)
def set_beamline_setup(self, bl_setup_hwobj): """ In plate mode osciallation is start is in the middle of grid """ CreateTaskBase.set_beamline_setup(self, bl_setup_hwobj) bl_setup_hwobj.omega_axis_hwobj.connect('positionChanged', self.set_osc_start) self._acq_widget.acq_widget_layout.osc_start_label.\ setText("Oscillation middle:") hor_size, ver_size = bl_setup_hwobj.beam_info_hwobj.get_beam_size() self.spacing = [hor_size, ver_size] self._advanced_methods_widget.hor_spacing_ledit.setText(\ "%.1f" % (hor_size * 1000)) self._advanced_methods_widget.ver_spacing_ledit.setText(\ "%.1f" % (ver_size * 1000))
def approve_creation(self): base_result = CreateTaskBase.approve_creation(self) if len(self._lines_widget.lines_treewidget.selectedItems()) == 0: logging.getLogger("user_level_log").warning("No lines selected, please select one or more lines.") return False else: return base_result
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) self.xrf_spectrum_model = tree_item.get_model() if isinstance(tree_item, Qt4_queue_item.XRFSpectrumQueueItem): if self.xrf_spectrum_model.is_executed(): self.setDisabled(True) else: self.setDisabled(False) if self.xrf_spectrum_model.get_path_template(): self._path_template = self.xrf_spectrum_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) elif not(isinstance(tree_item, Qt4_queue_item.SampleQueueItem) or \ isinstance(tree_item, Qt4_queue_item.DataCollectionGroupQueueItem)): self.setDisabled(True)
def single_item_selection(self, tree_item): """ Descript. : """ CreateTaskBase.single_item_selection(self, tree_item) if isinstance(tree_item, Qt4_queue_item.SampleQueueItem): sample_model = tree_item.get_model() #self._processing_parameters = copy.deepcopy(self._processing_parameters) self._processing_parameters = sample_model.processing_parameters self._processing_widget.update_data_model(self._processing_parameters) elif isinstance(tree_item, Qt4_queue_item.BasketQueueItem): self.setDisabled(False) elif isinstance(tree_item, Qt4_queue_item.DataCollectionQueueItem): dc = tree_item.get_model() self._acq_widget.use_kappa(False) if not dc.is_helical(): if dc.is_executed(): self.setDisabled(True) else: self.setDisabled(False) sample_data_model = self.get_sample_item(tree_item).get_model() energy_scan_result = sample_data_model.crystals[0].energy_scan_result self._acq_widget.set_energies(energy_scan_result) #self._acq_widget.disable_inverse_beam(True) self._path_template = dc.get_path_template() self._data_path_widget.update_data_model(self._path_template) self._acquisition_parameters = dc.acquisitions[0].acquisition_parameters self._acq_widget.update_data_model(self._acquisition_parameters, self._path_template) #self.get_acquisition_widget().use_osc_start(True) if len(dc.acquisitions) == 1: self.select_shape_with_cpos(self._acquisition_parameters.\ centred_position) self._processing_parameters = dc.processing_parameters self._processing_widget.update_data_model(self._processing_parameters) else: self.setDisabled(True) else: self.setDisabled(True)
def single_item_selection(self, tree_item): CreateTaskBase.single_item_selection(self, tree_item) escan_model = tree_item.get_model() if isinstance(tree_item, Qt4_queue_item.XRFSpectrumQueueItem): if tree_item.get_model().is_executed(): self.setDisabled(True) else: self.setDisabled(False) if escan_model.get_path_template(): self._path_template = escan_model.get_path_template() self._data_path_widget.update_data_model(self._path_template) elif not(isinstance(tree_item, Qt4_queue_item.SampleQueueItem) or \ isinstance(tree_item, Qt4_queue_item.DataCollectionGroupQueueItem)): self.setDisabled(True)