コード例 #1
0
    def __init__(self):
        super(calibrationpanel, self).__init__()

        self.autoCalibrateAction = pTypes.ActionParameter(
            name='Auto Calibrate')
        self.autoCalibrateAction.sigActivated.connect(self.calibrate)

        calibrants = sorted(calibrant.ALL_CALIBRANTS.all.keys())
        self.calibrant = pTypes.ListParameter(name='Calibrant Material',
                                              values=calibrants)

        self.autoCalibrateMethod = pTypes.ListParameter(name='Algorithm',
                                                        values=self.algorithms)

        self.overlayAction = pTypes.ActionParameter(name='Simulate Calibrant')
        self.overlayAction.sigActivated.connect(self.simulatecalibrant)

        self.setParameters(pTypes.GroupParameter(name='Calibration',
                                                 children=[
                                                     self.autoCalibrateAction,
                                                     self.calibrant,
                                                     self.autoCalibrateMethod,
                                                     self.overlayAction
                                                 ]),
                           showTop=False)
コード例 #2
0
    def parameter(self) -> Parameter:
        if not self._param:
            self._param = parameterTypes.GroupParameter(
                name='Line ROI',
                children=[
                    parameterTypes.SimpleParameter(title='Center X',
                                                   name='center_x',
                                                   value=self.center_x,
                                                   type='float',
                                                   units='px'),
                    parameterTypes.SimpleParameter(title='Center Y',
                                                   name='center_y',
                                                   value=self.center_y,
                                                   type='float',
                                                   units='px'),
                    parameterTypes.SimpleParameter(title='Rotation Angle',
                                                   name='rotation',
                                                   value=self.rotation,
                                                   type='float',
                                                   units='px'),
                    parameterTypes.SimpleParameter(title='Length',
                                                   name='length',
                                                   value=self.length,
                                                   type='float',
                                                   units='px'),
                    parameterTypes.SimpleParameter(title='Width',
                                                   name='width',
                                                   value=self.width,
                                                   type='float',
                                                   units='px'),
                ])

            self._param.sigTreeStateChanged.connect(self.valueChanged)

        return self._param
コード例 #3
0
    def parameter(self) -> Parameter:
        if not self._param:
            self._param = parameterTypes.GroupParameter(
                name="Rectangular ROI",
                children=[
                    parameterTypes.SimpleParameter(title="Width",
                                                   name="width",
                                                   value=self.width,
                                                   type="float",
                                                   units="px"),
                    parameterTypes.SimpleParameter(title="Height",
                                                   name="height",
                                                   value=self.height,
                                                   type="float",
                                                   units="px"),
                    parameterTypes.SimpleParameter(title="Horizontal Segments",
                                                   name="segments_h",
                                                   value=self.segments_h,
                                                   type="int"),
                    parameterTypes.SimpleParameter(title="Vertical Segments",
                                                   name="segments_v",
                                                   value=self.segments_v,
                                                   type="int"),
                ],
            )

            self._param.sigTreeStateChanged.connect(self.valueChanged)

        return self._param
コード例 #4
0
    def parameter(self):
        if not self._param:
            self._param = parameterTypes.GroupParameter(
                name="Segmented Arc ROI",
                children=[
                    parameterTypes.SimpleParameter(
                        title="χ Segments", name="segments_angular", value=self.segments_angular, type="int", min=1
                    ),
                    parameterTypes.SimpleParameter(
                        title=f"{self.radius_name} segments", name="segments_radial", value=self.segments_radial,
                        type="int", min=1
                    ),
                    parameterTypes.SimpleParameter(
                        title=f"{self.radius_name} Minimum", name="innerradius", value=self.innerradius, type="float",
                        units=self.radius_units, min=0
                    ),
                    parameterTypes.SimpleParameter(
                        title=f"{self.radius_name} Maximum", name="outerradius", value=self.outerradius, type="float",
                        units=self.radius_units, min=0
                    ),
                    parameterTypes.SimpleParameter(
                        title="χ Width", name="thetawidth", value=self.thetawidth, type="float", units="°"
                    ),
                    parameterTypes.SimpleParameter(
                        title="χ Center", name="thetacenter", value=self.thetacenter, type="float", siSuffix="°"
                    ),

                ],
            )

            self._param.sigTreeStateChanged.connect(self.valueChanged)

        return self._param
コード例 #5
0
    def parameter(self):
        if not self._param:
            self._param = parameterTypes.GroupParameter(
                name='Arc ROI',
                children=[
                    parameterTypes.SimpleParameter(title='Q Minimum',
                                                   name='innerradius',
                                                   value=self.innerradius,
                                                   type='float',
                                                   units='Å⁻¹'),
                    parameterTypes.SimpleParameter(title='Q Maximum',
                                                   name='outerradius',
                                                   value=self.outerradius,
                                                   type='float',
                                                   units='Å⁻¹'),
                    parameterTypes.SimpleParameter(title='χ Width',
                                                   name='thetawidth',
                                                   value=self.thetawidth,
                                                   type='float',
                                                   units='°'),
                    parameterTypes.SimpleParameter(title='χ Center',
                                                   name='thetacenter',
                                                   value=self.thetacenter,
                                                   type='float',
                                                   siSuffix='°')
                ])

            self._param.sigTreeStateChanged.connect(self.valueChanged)

        return self._param
コード例 #6
0
ファイル: suite.py プロジェクト: slactjohnson/typhos
    def _add_to_sidebar(self, parameter, category=None):
        """Add an item to the sidebar, connecting necessary signals."""
        if category:
            # Create or grab our category
            if category in self.top_level_groups:
                group = self.top_level_groups[category]
            else:
                logger.debug("Creating new category %r ...", category)
                group = ptypes.GroupParameter(name=category)
                self._tree.addParameters(group)
                self._tree.sortItems(0, QtCore.Qt.AscendingOrder)
            logger.debug("Adding %r to category %r ...", parameter.name(),
                         group.name())
            group.addChild(parameter)

        widget = parameter.value()
        if isinstance(widget, QtWidgets.QWidget):
            # Setup window to have a parent
            widget.setParent(self)
            widget.setHidden(True)

        logger.debug("Connecting parameter signals ...")
        parameter.sigOpen.connect(partial(self.show_subdisplay, parameter),
                                  QtCore.Qt.QueuedConnection)
        parameter.sigHide.connect(partial(self.hide_subdisplay, parameter),
                                  QtCore.Qt.QueuedConnection)
        if parameter.embeddable:
            parameter.sigEmbed.connect(
                partial(self.embed_subdisplay, parameter),
                QtCore.Qt.QueuedConnection)
        return parameter
コード例 #7
0
    def build_parameter_list(params):
        return_params = []
        for param_dict in params:

            assert 'key' in param_dict, 'Must provide a key for each item'
            assert 'value' in param_dict, 'Must provide a value for each item; %s does not have a value' % param_dict[
                'key']
            if param_dict['value'] == None:
                continue
            if 'name' not in param_dict:
                param_dict['name'] = param_dict['key']

            if param_dict['value'] == 'group':
                return_params.append(
                    pTypes.GroupParameter(
                        name=param_dict['name'],
                        children=ParameterWidget.build_parameter_list(
                            param_dict['children'])))
                continue

            if 'type' not in param_dict:
                param_dict['type'] = ParameterWidget.type_as_str(
                    param_dict['value'])

            if param_dict['type'] == 'list':
                param_dict['values'] = param_dict.pop('value')

            return_params.append(param_dict)
        return return_params
コード例 #8
0
    def parameter(self):
        if not self._param:
            self._param = parameterTypes.GroupParameter(
                name="Arc ROI",
                children=[
                    parameterTypes.SimpleParameter(title="Q Minimum",
                                                   name="innerradius",
                                                   value=self.innerradius,
                                                   type="float",
                                                   units="Å⁻¹"),
                    parameterTypes.SimpleParameter(title="Q Maximum",
                                                   name="outerradius",
                                                   value=self.outerradius,
                                                   type="float",
                                                   units="Å⁻¹"),
                    parameterTypes.SimpleParameter(title="χ Width",
                                                   name="thetawidth",
                                                   value=self.thetawidth,
                                                   type="float",
                                                   units="°"),
                    parameterTypes.SimpleParameter(title="χ Center",
                                                   name="thetacenter",
                                                   value=self.thetacenter,
                                                   type="float",
                                                   siSuffix="°"),
                ],
            )

            self._param.sigTreeStateChanged.connect(self.valueChanged)

        return self._param
コード例 #9
0
    def parameter(self) -> Parameter:
        if not self._param:
            self._param = parameterTypes.GroupParameter(
                name='Rectangular ROI',
                children=[
                    parameterTypes.SimpleParameter(title='Width',
                                                   name='width',
                                                   value=self.width,
                                                   type='float',
                                                   units='px'),
                    parameterTypes.SimpleParameter(title='Height',
                                                   name='height',
                                                   value=self.height,
                                                   type='float',
                                                   units='px'),
                    parameterTypes.SimpleParameter(title='Horizontal Segments',
                                                   name='segments_h',
                                                   value=self.segments_h,
                                                   type='int'),
                    parameterTypes.SimpleParameter(title='Vertical Segments',
                                                   name='segments_v',
                                                   value=self.segments_v,
                                                   type='int')
                ])

            self._param.sigTreeStateChanged.connect(self.valueChanged)

        return self._param
コード例 #10
0
ファイル: __init__.py プロジェクト: JulReinhardt/Xi-cam
def args_to_params(*args, **kwargs):
    param = parameterTypes.GroupParameter(name="Parameters")
    for arg in args + tuple(kwargs.values()):
        if isinstance(arg, Parameter):
            param.addChild(arg)
        elif isinstance(arg, (list, tuple)):
            param.addChild(args_to_params(*arg))
    return param
コード例 #11
0
 def _create_node_controls_widget(self, node):
     controls_cls = node_to_controls_map[node.__class__.__name__]
     controls = controls_cls(node)
     params = parameterTypes.GroupParameter(name=repr(node))
     params.addChild(controls)
     widget = ParameterTree(showHeader=False)
     widget.setParameters(params)
     widget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
     widget.setSizeAdjustPolicy(1)
     return widget
コード例 #12
0
ファイル: polygon.py プロジェクト: tangkong/Xi-cam.SAXS
    def parameter(self):
        if not (hasattr(self, '_param') and self._param):
            instructions = parameterTypes.TextParameter(name='Instructions',
                                                        value='Use the mouse to draw the mask. Click [Finish Mask] below when complete, or [Clear Selection] to start over.',
                                                        readonly=True)
            clearmask = parameterTypes.ActionParameter(name='Clear Selection')
            finishmask = parameterTypes.ActionParameter(name='Finish Mask')

            children = [instructions, clearmask, finishmask]
            self._param = parameterTypes.GroupParameter(name='Polygon Mask', children=children)
        return self._param
コード例 #13
0
ファイル: test_suite.py プロジェクト: slacAdpai/typhos
def test_device_parameter_tree(qtbot, motor, device):
    tree = ParameterTree(showHeader=False)
    devices = ptypes.GroupParameter(name='Devices')
    tree.addParameters(devices)
    qtbot.addWidget(tree)
    # Device with no subdevices
    motor_param = DeviceParameter(motor, embeddable=False)
    assert len(motor_param.childs) == 0
    devices.addChild(motor_param)
    # Device with subdevices
    dev_param = DeviceParameter(device, emeddable=True)
    assert len(dev_param.childs) == len(device._sub_devices)
    devices.addChild(dev_param)
コード例 #14
0
    def __init__(self, headermodel: QStandardItemModel,
                 selectionmodel: QItemSelectionModel):
        super(CalibrationPanel, self).__init__()

        self.selectionmodel = selectionmodel
        self.headermodel = headermodel

        self.header().close()

        calibrants = dict(
            zip(calibrant.ALL_CALIBRANTS.keys(),
                calibrant.ALL_CALIBRANTS.values()))
        self.device = pTypes.ListParameter(name='Device',
                                           type='list',
                                           values=[],
                                           value='')
        self.calibrant = pTypes.ListParameter(name='Calibrant Material',
                                              values=calibrants,
                                              value=calibrants['AgBh'])
        self.autoCalibrateMethod = pTypes.ListParameter(
            name='Algorithm', values=self.algorithms.keys())
        self.autoCalibrateAction = pTypes.ActionParameter(
            name='Auto Calibrate')
        self.autoCalibrateAction.sigActivated.connect(self.calibrate)
        self.calibratetext = pTypes.TextParameter(name='Instructions',
                                                  value='',
                                                  readonly=True,
                                                  visible=False)

        self.parameter = pTypes.GroupParameter(name='Calibration',
                                               children=[
                                                   self.device, self.calibrant,
                                                   self.autoCalibrateMethod,
                                                   self.autoCalibrateAction,
                                                   self.autoCalibrateAction,
                                                   self.calibratetext
                                               ])

        self.setParameters(self.parameter, showTop=False)

        from xicam.core.execution import Workflow
        self.workflow = Workflow()
コード例 #15
0
    def __init__(self, node_cls, parent=None):
        QDialog.__init__(self, parent)

        self.widget = ParameterTree(showHeader=False)
        layout = QVBoxLayout()
        layout.addWidget(self.widget)
        params = parameterTypes.GroupParameter(name="Parameters setup")
        self.node = node_cls()
        controls_cls = node_to_controls_map[node_cls.__name__]
        self.controls = controls_cls(self.node)
        params.addChild(self.controls)
        self.widget.setParameters(params)
        dialog_buttons = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel
        )
        layout.addWidget(dialog_buttons)
        dialog_buttons.accepted.connect(self._on_ok)
        dialog_buttons.rejected.connect(self.reject)

        self.setLayout(layout)
        self._thread = QThread()
コード例 #16
0
    def __init__(self):
        super(calibrationpanel, self).__init__()

        self.autoCalibrateAction = pTypes.ActionParameter(
            name='Auto Calibrate')
        self.autoCalibrateAction.sigActivated.connect(self.calibrate)

        calibrants = sorted(calibrant.calibrant_factory().all.keys())
        self.calibrant = pTypes.ListParameter(name='Calibrant Material',
                                              values=calibrants)

        self.autoCalibrateMethod = pTypes.ListParameter(
            name='Algorithm', values=self.algorithms.keys())

        self.setParameters(pTypes.GroupParameter(name='Calibration',
                                                 children=[
                                                     self.autoCalibrateAction,
                                                     self.calibrant,
                                                     self.autoCalibrateMethod
                                                 ]),
                           showTop=False)
コード例 #17
0
    def parameter(self) -> Parameter:
        if not self._param:
            self._param = parameterTypes.GroupParameter(
                name="Line ROI",
                children=[
                    parameterTypes.SimpleParameter(
                        title="Center X", name="center_x", value=self.center_x, type="float", units="px"
                    ),
                    parameterTypes.SimpleParameter(
                        title="Center Y", name="center_y", value=self.center_y, type="float", units="px"
                    ),
                    parameterTypes.SimpleParameter(
                        title="Rotation Angle", name="rotation", value=self.rotation, type="float", units="px"
                    ),
                    parameterTypes.SimpleParameter(
                        title="Length", name="length", value=self.length, type="float", units="px"
                    ),
                    parameterTypes.SimpleParameter(title="Width", name="width", value=self.width, type="float", units="px"),
                ],
            )

            self._param.sigTreeStateChanged.connect(self.valueChanged)

        return self._param
コード例 #18
0
    def __init__(self):
        super(spacegroupwidget, self).__init__()
        self.parameter = pTypes.GroupParameter(name='')
        self.setParameters(self.parameter, showTop=False)
        self.crystalsystem = pTypes.ListParameter(type='list',
                                                  name='Crystal System',
                                                  values=spacegrouptypes,
                                                  value=None)
        self.spacegroupparameter = pTypes.ListParameter(
            type='list',
            name='Space Group',
            values=spacegroupnames[0],
            value=None)
        self.rotationstyle = pTypes.ListParameter(type='list',
                                                  name='Rotation Mode',
                                                  values=[
                                                      'Sample-frame vector',
                                                      'Crystal-frame vector',
                                                      'Crystal plane'
                                                  ])
        self.rotationstyle.sigValueChanged.connect(self.rotationmodechanged)

        self.rotationxyz = VectorParameter(name='Vector (x,y,z)')
        self.rotationvectorsample = hideableGroup(
            name='Rotation (sample-frame vector)', children=[self.rotationxyz])
        self.rotationxyz.setValue([0, 0, 1])

        self.rotationuvw = VectorParameter(name='Vector (u,v,w)')
        self.rotationvectorcrystal = hideableGroup(
            name='Rotation (crystal-frame vector)',
            children=[self.rotationuvw])
        self.rotationuvw.setValue([0, 0, 1])

        self.rotationhkl = VectorParameter(name='Vector (h,k,l)')
        self.rotationplane = hideableGroup(name='Rotation (crystal plane)',
                                           children=[self.rotationhkl])
        self.rotationhkl.setValue([0, 0, 1])

        self.spacegroupeditors = [
            triclinicparameter(),
            monoclinicparameter(),
            orthorhombicparameter(),
            tetragonalparameter(),
            trigonalparameter(),
            hexagonalparameter(),
            cubicparameter()
        ]
        self.rotations = [
            self.rotationvectorsample, self.rotationvectorcrystal,
            self.rotationplane
        ]

        self.delta = pTypes.SimpleParameter(name=u'δ',
                                            type='float',
                                            value=2.67150153E-06)
        self.beta = pTypes.SimpleParameter(name=u'β',
                                           type='float',
                                           value=3.71373554E-09)
        self.refractiveindex = pTypes.GroupParameter(
            name='Refractive Index', children=[self.delta, self.beta])

        self.redrawsg = pTypes.ActionParameter(name='Overlay space group')
        self.redrawsg.sigActivated.connect(self.drawoverlay)

        self.parameter.addChildren(
            [self.crystalsystem, self.spacegroupparameter] +
            self.spacegroupeditors + [self.rotationstyle] + self.rotations +
            [self.refractiveindex, self.redrawsg])

        self.hidechildren()
        self.hiderotations()
        self.parameter.children()[2].show()
        self.rotations[0].show()
        self.crystalsystem.sigValueChanged.connect(self.crystalsystemchanged)
コード例 #19
0
from qtpy.QtWidgets import QWidget, QListView, QPushButton, QSplitter, QVBoxLayout
from qtpy.QtCore import QItemSelectionModel, Qt
from qtpy.QtGui import QStandardItemModel
from xicam.plugins import manager as pluginmanager
from pyqtgraph.parametertree import ParameterTree, parameterTypes
from xicam.gui.widgets.metadataview import MetadataWidget
from functools import partial
from xicam.core import threads
from xicam.Acquire.runengine import get_run_engine

empty_parameter = parameterTypes.GroupParameter(name='No parameters')


class RunEngineWidget(QWidget):
    def __init__(self, *args, **kwargs):
        super(RunEngineWidget, self).__init__(*args, **kwargs)

        self.planview = QListView()
        self.plansmodel = pluginmanager.get_plugin_by_name('plans',
                                                           'SettingsPlugin').plansmodel  # type: QStandardItemModel
        self.planview.setModel(self.plansmodel)
        self.selectionmodel = QItemSelectionModel(self.plansmodel)
        self.planview.setSelectionModel(self.selectionmodel)

        self.parameterview = ParameterTree()

        self.metadata = MetadataWidget()

        self.runbutton = QPushButton('Run')
        self.pausebutton = QPushButton('Pause')
        self.resumebutton = QPushButton('Resume')