Exemplo n.º 1
0
    def get_sample_position(self):
        sample_position_widget_dict = {
            'push_get_sample_position': {
                'x_widget': 'spinBox_sample_x',
                'y_widget': 'spinBox_sample_y'
            },
            'push_get_sample_position_map_start': {
                'x_widget': 'spinBox_sample_x_map_start',
                'y_widget': 'spinBox_sample_y_map_start'
            },
            'push_get_sample_position_map_end': {
                'x_widget': 'spinBox_sample_x_map_end',
                'y_widget': 'spinBox_sample_y_map_end'
            },
        }

        sender_object = QObject().sender().objectName()
        x_value = self.sample_stage.x.position
        x_widget = getattr(
            self, sample_position_widget_dict[sender_object]['x_widget'])
        x_widget.setValue(x_value)
        y_value = self.sample_stage.y.position
        y_widget = getattr(
            self, sample_position_widget_dict[sender_object]['y_widget'])
        y_widget.setValue(y_value)
Exemplo n.º 2
0
    def fix_rois(self):
        sender = QObject()
        sender_object = sender.sender().objectName()
        indx_ch = sender_object[11]

        if sender.sender().isChecked():
            for jj in range(2):
                # repeat to make sure no values are forced
                for indx_roi in range(self.num_rois):
                    for indx_lo_hi in range(2):
                        spinbox_name_ch1 = self.spinbox_roi.format(
                            1, indx_roi + 1, self.lo_hi[indx_lo_hi])
                        spinbox_object_ch1 = getattr(self, spinbox_name_ch1)
                        value = spinbox_object_ch1.value()
                        spinbox_name = self.spinbox_roi.format(
                            indx_ch, indx_roi + 1, self.lo_hi[indx_lo_hi])
                        spinbox_object = getattr(self, spinbox_name)
                        spinbox_object.setValue(value)
                        spinbox_object.setEnabled(False)
        else:
            for indx_roi in range(self.num_rois):
                for indx_lo_hi in range(2):
                    spinbox_name = self.spinbox_roi.format(
                        indx_ch, indx_roi + 1, self.lo_hi[indx_lo_hi])
                    spinbox_object = getattr(self, spinbox_name)
                    spinbox_object.setEnabled(True)
Exemplo n.º 3
0
    def truncate(self):
        sender = QObject()
        sender_object = sender.sender().objectName()
        print(sender_object)
        selection = self.listView_xasproject.selectedIndexes()
        if selection != []:
            for indx, obj in enumerate(selection):
                print(indx)
                ds = self.xasproject._datasets[selection[indx].row()]
                print(ds.name)
                energy = ds.energy
                mu = ds.mu
                indx_energy_to_truncate_at = (
                    np.abs(energy -
                           float(self.lineEdit_truncate_at.text()))).argmin()

                if sender_object == 'pushButton_truncate_below':
                    ds.energy = energy[indx_energy_to_truncate_at:]
                    ds.mu = mu[indx_energy_to_truncate_at:]

                elif sender_object == 'pushButton_truncate_above':
                    ds.energy = energy[0:indx_energy_to_truncate_at]

                    ds.mu = mu[0:indx_energy_to_truncate_at:]
                ds.update_larch()
                self.xasproject._datasets[selection[indx].row()] = ds
Exemplo n.º 4
0
 def set_roi_value(self):
     print('Setting Roi')
     proceed = False
     sender = QObject()
     sender_object = sender.sender().objectName()
     indx_ch = sender_object[10]
     indx_roi = sender_object[15]
     lo_hi = sender_object[17:]
     signal = self.get_roi_signal(indx_ch, indx_roi,
                                  self.lo_hi.index(lo_hi))
     value = sender.sender().value()
     #validate  limits
     if lo_hi == 'lo':
         counter_signal = self.get_roi_signal(indx_ch, indx_roi,
                                              self.lo_hi.index('hi'))
         counter_value = counter_signal.get() * 10
         if value < counter_value:
             proceed = True
     elif lo_hi == 'hi':
         counter_signal = self.get_roi_signal(indx_ch, indx_roi,
                                              self.lo_hi.index('lo'))
         counter_value = counter_signal.get() * 10
         if value > counter_value:
             proceed = True
     if proceed:
         signal.put(int(value / 10))
         self.roi_values[int(indx_ch) - 1,
                         int(indx_roi) - 1,
                         self.lo_hi.index(lo_hi)] = value
     else:
         sender.sender().setValue(counter_value)
     self.update_roi_plot()
Exemplo n.º 5
0
 def set_mfc_cart_flow(self):
     sender = QObject()
     sender_object = sender.sender()
     sender_name = sender_object.objectName()
     value = sender_object.value()
     indx_mfc = int(re.findall(r'\d+', sender_name)[0])
     self.mfcs[indx_mfc - 1].sp.set(value)
Exemplo n.º 6
0
 def set_flow_rates(self):
     sender = QObject()
     sender_object = sender.sender()
     sender_name = sender_object.objectName()
     # print(sender_name)
     indx_ch, indx_mnf = re.findall(r'\d+', sender_name)
     value = sender_object.value()
     self.ghs['channels'][indx_ch][f'mfc{indx_mnf}_sp'].set(value)
Exemplo n.º 7
0
 def toggle_channels(self):
     sender = QObject()
     sender_object = sender.sender()
     sender_name = sender_object.objectName()
     indx_ch, indx_mnf = re.findall(r'\d+', sender_name)
     if sender_object.isChecked():
         self.ghs['channels'][indx_ch][f'mnf{indx_mnf}_vlv_upstream'].set(1)
         self.ghs['channels'][indx_ch][f'mnf{indx_mnf}_vlv_dnstream'].set(1)
     else:
         self.ghs['channels'][indx_ch][f'mnf{indx_mnf}_vlv_upstream'].set(0)
         self.ghs['channels'][indx_ch][f'mnf{indx_mnf}_vlv_dnstream'].set(0)
Exemplo n.º 8
0
        def push_param(self):
            self.norm_param_list = [
                'e0',
                'pre1',
                'pre2',
                'norm1',
                'norm2',
            ]

            self.bkg_param_list = [
                'kmin',
                'kmax',
                'clamp_lo',
                'clamp_hi',
                'rbkg',
                'kweight'
            ]
            self.ft_param_list = [
                'kmin_ft', 'kmax_ft'
            ]
            selection = self.list_project.selectedIndexes()
            if selection != []:
                sender = QObject()
                sender_object = sender.sender().objectName()
                index = selection[0].row()
                ds_master = self.parent.project[index]
                if sender_object == 'pushButton_push_norm_param_to_selected':
                    for indx, obj in enumerate(selection):
                        ds = self.parent.project[selection[indx].row()]
                        for param in self.norm_param_list:
                            setattr(ds, param, getattr(ds_master, param))
                if sender_object == 'pushButton_push_norm_param_to_all':
                    for indx, obj in enumerate(self.parent.project):
                        for param in self.norm_param_list:
                            setattr(self.parent.project[indx], param, getattr(ds_master, param))
                if sender_object == 'pushButton_push_bkg_param_to_selected':
                    for indx, obj in enumerate(selection):
                        ds = self.parent.project[selection[indx].row()]
                        for param in self.bkg_param_list:
                            setattr(ds, param, getattr(ds_master, param))
                if sender_object == 'pushButton_push_bkg_param_to_all':
                    for indx, obj in enumerate(self.parent.project):
                        for param in self.bkg_param_list:
                            setattr(self.parent.project[indx], param, getattr(ds_master, param))
                if sender_object == 'pushButton_push_ft_param_to_selected':
                    for indx, obj in enumerate(selection):
                        ds = self.parent.project[selection[indx].row()]
                        for param in self.ft_param_list:
                            setattr(ds, param, getattr(ds_master, param))
                if sender_object == 'pushButton_push_ft_param_to_all':
                    for indx, obj in enumerate(self.parent.project):
                        for param in self.ft_param_list:
                            setattr(self.parent.project[indx], param, getattr(ds_master, param))
Exemplo n.º 9
0
 def set_roi_value(self):
     sender = QObject()
     sender_object = sender.sender().objectName()
     indx_ch = sender_object[10]
     indx_roi = sender_object[15]
     lo_hi = sender_object[17:]
     signal = self.get_roi_signal(indx_ch, indx_roi, self.lo_hi.index(lo_hi))
     value = sender.sender().value()
     signal.put(int(value/10))
     print(f' Value {value}')
     self.roi_values[int(indx_ch)-1, int(indx_roi)-1, self.lo_hi.index(lo_hi)]= value
     self.update_roi_plot()
Exemplo n.º 10
0
 def toggle_exhaust_reactor(self):
     sender = QObject()
     sender_object = sender.sender()
     sender_name = sender_object.objectName()
     ch_num = sender_name[14]
     if sender_name.endswith('exhaust') and sender_object.isChecked():
         self.ghs['channels'][ch_num]['exhaust'].set(1)
         ttime.sleep(2)
         self.ghs['channels'][ch_num]['reactor'].set(0)
     if sender_name.endswith('reactor') and sender_object.isChecked():
         self.ghs['channels'][ch_num]['reactor'].set(1)
         ttime.sleep(2)
         self.ghs['channels'][ch_num]['exhaust'].set(0)
Exemplo n.º 11
0
    def update_reference(self):
        sender = QObject()
        sender_object = sender.sender().objectName()
        coord = sender_object[-2:]
        x_value = self.sample_stage.x.position
        y_value = self.sample_stage.y.position

        setattr(self, 'reference_x_{}'.format(coord), x_value)
        setattr(self, 'reference_y_{}'.format(coord), y_value)
        getattr(self, 'lineEdit_reference_x_{}'.format(coord)).setText(
            '{:.3f}'.format(x_value))
        getattr(self, 'lineEdit_reference_y_{}'.format(coord)).setText(
            '{:.3f}'.format(y_value))
Exemplo n.º 12
0
 def toggle_bypass_bubbler(self):
     sender = QObject()
     sender_object = sender.sender()
     sender_name = sender_object.objectName()
     ch_num = sender_name[14]
     bypass_num = sender_name[-1]
     if (sender_name.endswith('bypass1') or sender_name.endswith('bypass2')) and sender_object.isChecked():
         self.RE(bps.mv(self.ghs['channels'][ch_num][f'bypass{bypass_num}'], 1))
         self.RE(bps.mv(self.ghs['channels'][ch_num][f'bubbler{bypass_num}_1'], 0))
         self.RE(bps.mv(self.ghs['channels'][ch_num][f'bubbler{bypass_num}_2'], 0))
     elif (sender_name.endswith('bubbler1') or sender_name.endswith('bubbler2')) and sender_object.isChecked():
         self.RE(bps.mv(self.ghs['channels'][ch_num][f'bypass{bypass_num}'], 0))
         self.RE(bps.mv(self.ghs['channels'][ch_num][f'bubbler{bypass_num}_1'], 1))
         self.RE(bps.mv(self.ghs['channels'][ch_num][f'bubbler{bypass_num}_2'], 1))
Exemplo n.º 13
0
 def update_ds_params(self):
     sender = QObject()
     sender_object = sender.sender().objectName()
     print(sender_object)
     selection = self.listView_xasproject.selectedIndexes()
     if selection != []:
         index=selection[0].row()
         ds = self.xasproject[index]
         try:
             self.statusBar().showMessage(sender_object)
             print(getattr(self, sender_object).text())
             setattr(ds, self.lineEdit_to_ds_parameter_dict[sender_object], float(getattr(self, sender_object).text()))
         except:
             self.statusBar().showMessage('Use numbers only')
Exemplo n.º 14
0
    def load_sample_definition(self):
        sender = QObject()
        sender_object = sender.sender().objectName()
        coord = sender_object[-2:]
        excel_file = QtWidgets.QFileDialog.getOpenFileNames(
            directory='/nsls2/xf08id/Sandbox', filter='*.xlsx', parent=self)[0]
        if len(excel_file):

            self.label_database_status.setText(
                'Loading {} to Sample Frame {}'.format(
                    os.path.basename(excel_file[0]), coord))
            setattr(self, 'batch_experiment_{}'.format(coord),
                    XASBatchExperiment(excel_file=excel_file[0], hhm=self.hhm))
            print(self.batch_experiment_11)
Exemplo n.º 15
0
    def fromQImage(layerNode, image, position=None):
        """Paste given `image` to `position` in '`layerNode`

        The `position` value can be:
        - None, in this case, pixmap will be pasted at position (0, 0)
        - A QPoint() object, pixmap will be pasted at defined position
        """
        # NOTE: layerNode can be a QObject...
        #       that's weird, but document.nodeByUniqueID() return a QObject for a paintlayer (other Nodes seems to be Ok...)
        #       it can sound strange but in this case the returned QObject is a QObject iwht Node properties
        #       so, need to check if QObject have expected methods
        if type(layerNode)==QObject():
            if hasattr(layerNode, 'type') and hasattr(layerNode, 'colorModel') and hasattr(layerNode, 'colorDepth') and hasattr(layerNode, 'colorProfile') and hasattr(layerNode, 'setColorSpace') and hasattr(layerNode, 'setPixelData'):
                pass
            else:
                # consider that it's not a node
                raise EInvalidType("Given `layerNode` must be a valid Krita <Node> ")
        elif not isinstance(layerNode, Node):
            raise EInvalidType("Given `layerNode` must be a valid Krita <Node> ")

        if not isinstance(image, QImage):
            raise EInvalidType("Given `image` must be a valid <QImage> ")

        if position is None:
            position = QPoint(0, 0)

        if not isinstance(position, QPoint):
            raise EInvalidType("Given `position` must be a valid <QPoint> ")

        layerNeedBackConversion=False
        layerColorModel=layerNode.colorModel()
        layerColorDepth=layerNode.colorDepth()
        layerColorProfile=layerNode.colorProfile()

        if layerColorModel != "RGBA" or layerColorDepth != 'U8':
            # we need to convert layer to RGBA/U8
            layerNode.setColorSpace("RGBA", "U8", "sRGB-elle-V2-srgbtrc.icc")
            layerNeedBackConversion=True

        ptr = image.bits()
        ptr.setsize(image.byteCount())

        layerNode.setPixelData(QByteArray(ptr.asstring()), position.x(), position.y(), image.width(), image.height())

        if layerNeedBackConversion:
            layerNode.setColorSpace(layerColorModel, layerColorDepth, layerColorProfile)
Exemplo n.º 16
0
 def __init__(self, nx=0, ny=0, l0=0, m0=0, dl=1, dm=1, image=None):
     QwtPlotItem.__init__(self)
     # name, if any
     self.name = self.filename = None
     # internal init
     self.RenderAntialiased
     self._qo = QObject()
     self.qimg = None
     self._image = self._imgminmax = None
     self._nvaluecalls = 0
     self._value_time = self._value_time0 = None
     self._lminmax = (0, 0)
     self._mminmax = (0, 0)
     self._cache_qimage = {}
     self._cache_mapping = self._cache_imap = self._cache_interp = None
     self._psfsize = 0, 0, 0
     #self.projection = None
     self._nx, self._ny = 0, 0
     self._l0, self._m0 = 0, 0
     self._dl, self._dm = 0, 0
     self._x0, self._y0 = 0, 0
     self._lminmax = None
     self._mminmax = None
     self._bounding_rect = None
     self._bounding_rect_pix = None
     self._image_key = None
     self._prefilter = None
     self._current_rect = None
     self._current_rect_pix = None
     # set image, if specified
     if image is not None:
         nx, ny = image.shape
         self.setImage(image)
     # set coordinates, if specified
     if nx and ny:
         self.setImageCoordinates(nx, ny, l0, m0, dl, dm)
     # set default colormap and intensity map
     self.colormap = Colormaps.GreyscaleColormap
     self.imap = Colormaps.LinearIntensityMap()
     self.signalRepaint = None
     self.signalSlice = None
     self.signalRaise = None
     self.signalUnload = None
     self.signalCenter = None
     self.signalPlotRaised = None
Exemplo n.º 17
0
    def select_gases(self):
        sender = QObject()
        sender_object = sender.sender()
        sender_name = sender_object.objectName()
        gas = sender_object.currentText()
        #print(sender_name)
        indx_ch, indx_mnf = re.findall(r'\d+', sender_name)
        gas_command = self.ghs['manifolds'][indx_mnf]['gases'][gas]
        # print(f'Gas command {gas_command}')
        self.ghs['manifolds'][indx_mnf]['gas_selector'].set(gas_command)

        #change the gas selection for the other widget - they both come from the same source
        sub_dict = {'1':'2','2':'1'}
        other_selector = getattr(self, f'comboBox_ch{sub_dict[indx_ch]}_mnf{indx_mnf}_gas')
        #print(other_selector.objectName())
        st = other_selector.blockSignals(True)
        other_selector.setCurrentIndex(sender_object.currentIndex())
        other_selector.blockSignals(st)
Exemplo n.º 18
0
 def show_sample_definition(self):
     sender = QObject()
     sender_object = sender.sender().objectName()
     coord = sender_object[-2:]
     if hasattr(self, 'batch_experiment_{}'.format(coord)):
         exp = getattr(self, 'batch_experiment_{}'.format(coord))
         self.tableWidget_sample_def.setRowCount(len(exp.experiment_table))
         self.label_database_status.setText(exp.name)
         for i in range(len(exp.experiment_table)):
             d = exp.experiment_table.iloc[i]
             fields = [
                 'Proposal', 'SAF', 'Sample name', 'Composition', 'Element',
                 'Edge', 'Energy'
             ]
             for j, field in enumerate(fields):
                 self.tableWidget_sample_def.setItem(
                     i, j, QtWidgets.QTableWidgetItem(str(d[field])))
             self.tableWidget_sample_def.setRowHeight(i, 24)
     else:
         self.label_database_status.setText(
             'Please load Experimental Definition first')
Exemplo n.º 19
0
 def set_ds_params_from_plot(self):
     sender = QObject()
     self.sender_object = sender.sender().objectName()
     self.statusBar().showMessage('Click on graph or press Esc')
     self.cid = self.canvasXASProject.mpl_connect('button_press_event',  self.mouse_press_event)
Exemplo n.º 20
0
 def __init__(self, rest):
     QObject().__init__(self)
     self.mutex = QMutex()
Exemplo n.º 21
0
    def run_2d_pcl_scan(self):
        self.figure_scan.ax.set_aspect('auto')
        sender = QObject()
        sender_object = sender.sender().objectName()
        if 'xy' in sender_object:
            m1 = 'x'
            m2 = 'y'
        elif 'py' in sender_object:
            m1 = 'pitch'
            m2 = 'yaw'

        self.canvas_scan.mpl_disconnect(self.cid_scan)
        detector_name = self.comboBox_pcl_detectors.currentText()
        detector = self.detector_dictionary[detector_name]['device']
        channels = self.detector_dictionary[detector_name]['channels']
        channel = channels[self.comboBox_pcl_channels.currentIndex()]

        motor1 = self.motor_dictionary[f'six_axes_stage_{m1}']['object']
        motor2 = self.motor_dictionary[f'six_axes_stage_{m2}']['object']
        m1_pos = motor1.read()[motor1.name]['value']
        m2_pos = motor2.read()[motor2.name]['value']

        motor1_range = getattr(self, f'doubleSpinBox_range_{m1}').value()
        motor2_range = getattr(self, f'doubleSpinBox_range_{m2}').value()

        motor1_step = getattr(self, f'doubleSpinBox_step_{m1}').value()
        motor2_step = getattr(self, f'doubleSpinBox_step_{m2}').value()

        motor1_nsteps = int(round(motor1_range / float(motor1_step))) + 1
        motor2_nsteps = int(round(motor2_range / float(motor2_step))) + 1

        #self.figure_scan.clf()
        update_figure_with_colorbar([self.figure_scan.ax], self.toolbar_scan,
                                    self.canvas_scan, self.figure_scan)

        plan = self.aux_plan_funcs['general_spiral_scan'](
            [detector],
            motor1=motor1,
            motor2=motor2,
            motor1_range=motor1_range,
            motor2_range=motor2_range,
            motor1_nsteps=motor1_nsteps,
            motor2_nsteps=motor2_nsteps)

        # xlim =

        live_scatter = LiveScatter(motor1.name,
                                   motor2.name,
                                   channel,
                                   ax=self.figure_scan.ax,
                                   xlim=(m1_pos - motor1_range / 2,
                                         m1_pos + motor1_range / 2),
                                   ylim=(m2_pos - motor2_range / 2,
                                         m2_pos + motor2_range / 2),
                                   **{
                                       's': 100,
                                       'marker': 's',
                                       'cmap': 'nipy_spectral'
                                   })
        # live_scatter = LivePlot(channel, self.motor.name, ax=self.figure_scan.ax)

        uid = self.RE(plan, live_scatter)
        self.figure_scan.ax.set_aspect('auto')
        self.figure_scan.tight_layout()
        self.canvas_scan.draw_idle()
        self.cid_scan = self.canvas_scan.mpl_connect('button_press_event',
                                                     self.getX_scan)
        self.last_motor_used = [motor1, motor2]
def _on_button_clicked(checked: bool):
    # Небольшой костыль для получения объекта, который отправил сигнал
    # Костыль не нужен будет если метод будет внутри виджета -- button = self.sender()
    button = QObject().sender()
    print(button, button.text(), button.isChecked(), checked)
Exemplo n.º 23
0
 def change_rga_mass(self):
     sender_object = QObject().sender()
     indx = sender_object.objectName()[-1]
     self.RE(bps.mv(self.rga_masses[int(indx) - 1], sender_object.value()))
Exemplo n.º 24
0
# Author: Savenko Mike
from datetime import datetime
from logging import error
from sys import argv, exc_info
from traceback import format_exception

from PyQt5.Qt import QMainWindow, QMessageBox, QObject, QApplication, \
    QGridLayout, QTableWidget, QScrollArea, QLabel, QLineEdit, QWidget, \
    QPushButton, QHBoxLayout, pyqtSlot, QSizePolicy, QDateEdit, QDate, \
    QGroupBox, QStackedWidget, QComboBox, QVBoxLayout, QMetaObject, \
    QCoreApplication, QMenuBar, QMenu, QStatusBar, QAction, QDialog, QFileDialog

from about import Ui_Dialog

tr = QObject().tr


class Ui(QApplication):
    def __init__(self):
        super().__init__(argv)
        self.w = QMainWindow()
        self.w.setMinimumWidth(300)
        self.w.setMinimumHeight(300)
        # self.w.setWindowTitle(tr("Отправка запросов на ВС АУГО"))
        self.cw = QScrollArea()
        # self.__create_ui()
        self.__showed = False
        self.__wgts = {}
        self.cb = QComboBox()
        self.individuals = []
Exemplo n.º 25
0
'''object的父子关系'''

from PyQt5.Qt import QObject
from PyQt5.Qt import *
object0 = QObject()
object1 = QObject()
object2 = QObject()
object3 = QObject()
object4 = QObject()
object5 = QObject()

object1.setParent(object0)  # setParent设置对象的父类
object2.setParent(object0)
object3.setParent(object1)
object4.setParent(object1)
object5.setParent(object2)

print('objext0', object0)
print('objext1', object1)
print('objext2', object2)
print('objext3', object3)
print('objext4', object4)
print('objext5', object5)

print('objext1 parent ', object1.parent())  # object1.parent()返回object1的父类
print('objext5 parent ', object5.parent())

print(object0.findChild(object))  #返回一个子类

object2.setObjectName('b')
print(object0.findChild(object, 'b'))  #返回一个ObjectName为b的子类