diff --git a/docs/source/upcoming_release_notes/1313-Improving_Qmini_spectrometer_GUI_and_adding_save_functions.rst b/docs/source/upcoming_release_notes/1313-Improving_Qmini_spectrometer_GUI_and_adding_save_functions.rst new file mode 100644 index 00000000000..f19d2272ecc --- /dev/null +++ b/docs/source/upcoming_release_notes/1313-Improving_Qmini_spectrometer_GUI_and_adding_save_functions.rst @@ -0,0 +1,32 @@ +1313 Improving Qmini spectrometer GUI and adding save functions +################# + +API Breaks +---------- +- N/A + +Library Features +---------------- +- N/A + +Device Features +--------------- +- N/A + +New Devices +----------- +- N/A + +Bugfixes +-------- +- N/A + +Maintenance +----------- +- Improving QminiSpectrometer.embedded.ui +- Adding QminiSpectrometer.detailed.ui +- Adding save_data() function and accompanying signals to qmini.py + +Contributors +------------ +- aberges-SLAC diff --git a/pcdsdevices/lasers/qmini.py b/pcdsdevices/lasers/qmini.py index b0e7767fa04..81c3d4ee700 100644 --- a/pcdsdevices/lasers/qmini.py +++ b/pcdsdevices/lasers/qmini.py @@ -1,8 +1,12 @@ +import json import logging +import os +import time from ophyd import Component as Cpt from ophyd import Device, EpicsSignal, EpicsSignalRO from ophyd import FormattedComponent as FCpt +from ophyd.signal import AttributeSignal, Signal from pcdsdevices.variety import set_metadata @@ -83,6 +87,54 @@ class QminiSpectrometer(Device): fit_stdev = Cpt(EpicsSignalRO, ':STDEV', kind='config') fit_chisq = Cpt(EpicsSignalRO, ':CHISQ', kind='config') + # Save spectra functions + def save_data(self, file_dest: str = ''): + """ + Save the wavelength and spectrum PVs to a text file + """ + # Let's check to see if we set this in a non-gui context + if not file_dest.strip(): + # let's try to use the signal instead + if not self.file_dest.get().strip(): + # set a default destination for the file we didn't set it + _file = (os.getcwd() + '/' + self.name + + time.strftime("_%Y-%m-%d_%H%M%S") + '.txt') + # otherwise just use it, silly + else: + _file = self.file_dest.get() + else: + _file = file_dest + self.log.info('Saving spectrum to disk...') + # Let's format to JSON for the science folk with sinful f-string mangling + _settings = ['sensitivity_cal', 'correct_prnu', 'correct_nonlinearity', + 'normalize_exposure', 'adjust_offset', 'subtract_dark', + 'remove_bad_pixels', 'remove_temp_bad_pixels'] + _data = {'timestamp': time.strftime("%Y-%m-%d %H:%M:%S"), + 'exposure (us)': self.exposure.get(), + 'averages': self.exposures_to_average.get(), + # Lets do some sneaky conversion to bool from int + 'settings': {f"{sig}": bool(getattr(self, sig).get()) + for sig in _settings}, + 'wavelength (nm)': [str(x) for x in self.wavelengths.get()], + 'intensity (a.u.)': [str(y) for y in self.spectrum.get()] + } + # and let's assume you have permission to save your file where you want to + with open(_file, 'w') as _f: + _f.write(json.dumps(_data)) + + save_spectrum = Cpt(AttributeSignal, attr='_save_spectrum', kind='omitted') + file_dest = Cpt(Signal, value='', kind='omitted') + set_metadata(save_spectrum, dict(variety='command-proc', value=1)) + + @property + def _save_spectrum(self): + return 0 + + # Setter will just save the data + @_save_spectrum.setter + def _save_spectrum(self, value): + self.save_data() + class QminiWithEvr(QminiSpectrometer): """ diff --git a/pcdsdevices/ui/QminiSpectrometer.detailed.ui b/pcdsdevices/ui/QminiSpectrometer.detailed.ui new file mode 100644 index 00000000000..e6fcedab128 --- /dev/null +++ b/pcdsdevices/ui/QminiSpectrometer.detailed.ui @@ -0,0 +1,2936 @@ + + + Form + + + + 0 + 0 + 557 + 654 + + + + + 0 + 0 + + + + + 0 + 10 + + + + Form + + + + + 0 + 10 + 551 + 641 + + + + + + + + + + + + + + + + + QFrame::Box + + + QFrame::Sunken + + + 0 + + + QAbstractScrollArea::AdjustToContents + + + true + + + true + + + + {"name": "Intensity", "orientation": "left", "label": "Intensity", "minRange": -1.7316764476028033, "maxRange": 1.7316764476028033, "autoRange": true, "logMode": false} + + + + + Wavelength + + + + + {"y_channel": "ca://$prefix:SPECTRUM", "x_channel": "ca://$prefix:WAVELENGTHS", "plot_style": "Line", "name": "Intensity", "color": "#0055ff", "lineStyle": 1, "lineWidth": 1, "symbol": null, "symbolSize": 10, "yAxisName": "Intensity", "barWidth": null, "upperThreshold": null, "lowerThreshold": null, "thresholdColor": "white", "redraw_mode": 2} + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 5 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + QTabWidget::North + + + QTabWidget::Rounded + + + 0 + + + + QMini Param + + + + + 10 + 10 + 531 + 231 + + + + + QLayout::SetNoConstraint + + + + + + 0 + 0 + + + + Qt::ScrollBarAsNeeded + + + QAbstractScrollArea::AdjustIgnored + + + true + + + + + 0 + 0 + 600 + 275 + + + + + 0 + 0 + + + + + 600 + 275 + + + + + + 10 + 0 + 501 + 238 + + + + + QLayout::SetDefaultConstraint + + + + + + 0 + 0 + + + + + + + Qt::PlainText + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SET_AVG_CNT + + + false + + + + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + false + + + ca://$prefix:SET_AVG_CNT + + + + + + + + 0 + 0 + + + + File dest + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:SOFT_TRIGGER_MODE + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SOFT_TRIGGER_MODE + + + + + + + + 0 + 0 + + + + + + + Force single exposure + + + false + + + false + + + + + + false + + + ca://$prefix:START_EXPOSURE.PROC + + + + + + false + + + + + + + + + false + + + Are you sure you want to proceed? + + + 1 + + + None + + + false + + + false + + + + + + + Temperature + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Exposures to average + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + true + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + false + + + Full file destination for spectra output. Default: $PWD/$name_<timestamp>.txt + + + false + + + sig://${name}_file_dest + + + PyDMLineEdit::String + + + + + + + + + + Re-init + + + false + + + false + + + + + + false + + + ca://$prefix:CLEAR_SPECTROMETER.PROC + + + recycle + + + + 0 + 255 + 127 + + + + false + + + + + + + + + false + + + Are you sure you want to proceed? + + + 1 + + + 0 + + + false + + + false + + + + + + + + 0 + 0 + + + + Status + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:TEMP + + + Qt::AlignCenter + + + 0 + + + true + + + true + + + false + + + true + + + + + + ca://$prefix:TEMP + + + false + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + + + + ca://$prefix:STATUS + + + Qt::PlainText + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:STATUS + + + + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + false + + + ca://$prefix:SET_EXPOSURE_TIME + + + + + + + + + + Save spectrum + + + false + + + false + + + Save current spectrum to disk + + + false + + + sig://${name}_save_spectrum + + + save + + + + 0 + 170 + 255 + + + + false + + + + + + + + + false + + + + + + 1 + + + 0 + + + false + + + false + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + ca://$prefix:SOFT_TRIGGER_MODE + + + + + + + + 0 + 0 + + + + + + + Qt::PlainText + + + Qt::AlignCenter + + + 0 + + + true + + + true + + + false + + + true + + + + + + ca://$prefix:GET_EXPOSURE_TIME + + + false + + + + + + + Scan Rate + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Exposure Time + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + true + + + 0 + + + false + + + true + + + false + + + true + + + + + + sig://${name}_file_dest + + + false + + + + + + + + + + + + + + Fit Param + + + + + 9 + 10 + 531 + 221 + + + + + QLayout::SetNoConstraint + + + + + + 0 + 0 + + + + Qt::ScrollBarAlwaysOn + + + QAbstractScrollArea::AdjustIgnored + + + true + + + + + 0 + 0 + 513 + 230 + + + + + 0 + 230 + + + + + + 10 + -3 + 501 + 228 + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:CHISQ + + + Qt::AlignCenter + + + ca://$prefix:CHISQ + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:FIT_ON + + + Qt::AlignCenter + + + ca://$prefix:FIT_ON + + + + + + + + 0 + 0 + + + + Width + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:FIT_ON + + + + + + + + + + 0 + + + false + + + true + + + false + + + true + + + + + + false + + + ca://$prefix:WIDTH + + + + + + + + 0 + 0 + + + + λ Fit + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Amplitude + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + λ Guess + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:STDEV + + + Qt::AlignCenter + + + ca://$prefix:STDEV + + + + + + + + 0 + 0 + + + + Fit On + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:FWHM + + + Qt::AlignCenter + + + ca://$prefix:FWHM + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + + + + ca://$prefix:W0_FIT + + + Qt::AlignCenter + + + ca://$prefix:W0_FIT + + + + + + + + + + 0 + + + false + + + true + + + false + + + true + + + + + + false + + + ca://$prefix:W0_GUESS + + + + + + + + 0 + 0 + + + + St. Dev. + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:W0_GUESS + + + Qt::AlignCenter + + + ca://$prefix:W0_GUESS + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:WIDTH + + + Qt::AlignCenter + + + ca://$prefix:WIDTH + + + + + + + + 0 + 0 + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + FWHM + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:AMPLITUDE + + + Qt::AlignCenter + + + ca://$prefix:AMPLITUDE + + + + + + + + + + + + + + + + + + + + + Device Settings + + + + + 10 + 10 + 531 + 221 + + + + + QLayout::SetNoConstraint + + + + + + 0 + 0 + + + + Qt::ScrollBarAlwaysOn + + + QAbstractScrollArea::AdjustToContents + + + true + + + + + 0 + 0 + 513 + 330 + + + + + 0 + 330 + + + + + + 10 + 0 + 501 + 356 + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:CORRECT_NONLINEARITY + + + false + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:REMOVE_BAD_PIXELS + + + + + + + + 0 + 0 + + + + + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SCALE_TO_16BIT + + + false + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:REMOVE_BAD_PIXELS + + + false + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:SUBTRACT_DARK + + + + + + + + 0 + 0 + + + + Additional filtering + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:CORRECT_PRNU + + + + + + + + 0 + 0 + + + + Subtract dark px + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + Normalize spectrum to 1 sec exposure time + + + ca://$prefix:NORMALIZE_EXPOSURE + + + false + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:SCALE_TO_16BIT + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:REMOVE_TEMP_BAD_PIXELS + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SERIAL_NUMBER + + + false + + + + + + + + 0 + 0 + + + + Correct for Photoresponse non-uniformity + + + -1 + + + + + + Correct PRNU + + + + + + + + 0 + 0 + + + + Sensitivity cal + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:MODEL_CODE + + + false + + + PyDMLabel::Hex + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:ADJUST_OFFSET + + + + + + + + 0 + 0 + + + + Remove bad pixels + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:ADDITIONAL_FILTERING + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SUBTRACT_DARK + + + false + + + + + + + + 0 + 0 + + + + Scale to 16 bit + + + + + + + + 0 + 0 + + + + Serial Number + + + + + + + + 0 + 0 + + + + Correct nonlinearity + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + Correct for Photoresponse non-uniformity + + + ca://$prefix:CORRECT_PRNU + + + false + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + Remove single pixel spikes + + + ca://$prefix:REMOVE_TEMP_BAD_PIXELS + + + false + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:ADJUST_OFFSET + + + false + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:NORMALIZE_EXPOSURE + + + + + + + + 0 + 0 + + + + Model + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:CORRECT_NONLINEARITY + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:ADDITIONAL_FILTERING + + + false + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:SENSITIVITY_CAL + + + + + + + + 0 + 0 + + + + Normalize exposure + + + + + + + + 0 + 0 + + + + Adjust offset + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SENSITIVITY_CAL + + + false + + + + + + + + 0 + 0 + + + + Remove temp. bad px + + + + + + + + + + + + + + + + + + + + + Trigger Settings + + + + + 9 + 9 + 521 + 221 + + + + + + + true + + + + + 0 + 0 + 503 + 225 + + + + + 0 + 225 + + + + + + 7 + 11 + 491 + 201 + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:SET_TRIG_PIN + + + + + + + Trigger Edge + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:SET_TRIG_ENABLE + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:SET_TRIG_EDGE + + + + + + + Trigger Mode + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + ca://$prefix:SET_TRIG_ENABLE + + + Qt::AlignCenter + + + ca://$prefix:SET_TRIG_ENABLE + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:TRIG_MODE_RBV + + + false + + + + + + + + 0 + 0 + + + + Trigger Delay + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:TRIG_PIN_RBV + + + false + + + + + + + Trig Enable + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + false + + + ca://$prefix:SET_TRIG_DELAY + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:TRIG_EDGE_RBV + + + false + + + + + + + + 0 + 0 + + + + + + + Qt::AlignCenter + + + 0 + + + true + + + true + + + false + + + true + + + + + + ca://$prefix:GET_TRIG_DELAY + + + false + + + + + + + + 0 + 0 + + + + Trigger Pin + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:TRIG_MODE + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + true + + + Indicators + + + + true + + + + 10 + 10 + 519 + 219 + + + + Qt::ScrollBarAlwaysOn + + + true + + + + true + + + + 0 + 0 + 503 + 350 + + + + + 0 + 350 + + + + + false + + + + 0 + 0 + 151 + 261 + + + + + 0 + 0 + + + + + + + false + + + false + + + Raw readback on the PROCESSING_STEPS_RBV + + + ca://$prefix:PROCESSING_STEPS_RBV + + + true + + + false + + + true + + + 11 + + + 0 + + + + Adjust offset + Correct nonlinearity + Remove bad px + Subtract dark px + Remove temp bad px + <Not Used> + Norm exposure + Sensitivity cal + Correct PRNU + Additional filtering + Scale to 16b + + + + + + + + + + + + + + PyDMLabel + QLabel +
pydm.widgets.label
+
+ + PyDMWaveformPlot + QGraphicsView +
pydm.widgets.waveformplot
+
+ + PyDMByteIndicator + QWidget +
pydm.widgets.byte
+
+ + PyDMEnumComboBox + QComboBox +
pydm.widgets.enum_combo_box
+
+ + PyDMLineEdit + QLineEdit +
pydm.widgets.line_edit
+
+ + PyDMPushButton + QPushButton +
pydm.widgets.pushbutton
+
+ + TyphosDisplayTitle + QFrame +
typhos.display
+
+
+ + +
diff --git a/pcdsdevices/ui/QminiSpectrometer.embedded.ui b/pcdsdevices/ui/QminiSpectrometer.embedded.ui index 062d2965529..b1f8b085387 100644 --- a/pcdsdevices/ui/QminiSpectrometer.embedded.ui +++ b/pcdsdevices/ui/QminiSpectrometer.embedded.ui @@ -9,12 +9,12 @@ 0 0 - 532 - 636 + 555 + 650 - + 0 0 @@ -22,7 +22,7 @@ 300 - 150 + 600 @@ -42,7 +42,7 @@ - 3 + 4 QLayout::SetDefaultConstraint @@ -61,6 +61,15 @@ + + true + + + + 282 + 75 + + @@ -69,14 +78,14 @@ - + 0 0 - 500 + 250 250 @@ -98,22 +107,22 @@ - QFrame::Box + QFrame::Panel - QFrame::Raised + QFrame::Plain - 1 + 0 - 2 + 0 - Qt::ScrollBarAsNeeded + Qt::ScrollBarAlwaysOff - Qt::ScrollBarAsNeeded + Qt::ScrollBarAlwaysOff QAbstractScrollArea::AdjustToContents @@ -125,8 +134,8 @@ 0.000000000000000 0.000000000000000 - 522.000000000000000 - 280.000000000000000 + 545.000000000000000 + 272.000000000000000 @@ -162,8 +171,10 @@ true - - false + + + {"name": "Intensity", "orientation": "left", "label": null, "minRange": -1.265319018496, "maxRange": 1.265319018496, "autoRange": true, "logMode": false} + @@ -181,7 +192,7 @@ - {"y_channel": "ca://$prefix:SPECTRUM", "x_channel": "ca://$prefix:WAVELENGTHS", "plot_style": null, "name": "", "color": "#0055ff", "lineStyle": 1, "lineWidth": 1, "symbol": null, "symbolSize": 10, "yAxisName": "Axis 1", "barWidth": null, "upperThreshold": null, "lowerThreshold": null, "thresholdColor": "white", "redraw_mode": 1} + {"y_channel": "ca://$prefix:SPECTRUM", "x_channel": "ca://$prefix:WAVELENGTHS", "plot_style": "Line", "name": "Intensity", "color": "#0055ff", "lineStyle": 1, "lineWidth": 1, "symbol": null, "symbolSize": 10, "yAxisName": "Intensity", "barWidth": null, "upperThreshold": null, "lowerThreshold": null, "thresholdColor": "white", "redraw_mode": 1} @@ -192,7 +203,7 @@ - Spectrum + Intensity @@ -214,578 +225,1215 @@ - - - QAbstractScrollArea::AdjustToContents + + + + 0 + 0 + + + + Qt::ScrollBarAsNeeded true - + 0 0 - 571 - 236 + 529 + 625 - + 0 0 - 0 - 200 + 500 + 625 - - - 3 - - - 9 - - - 3 - - - 3 + + + + 20 + 10 + 491 + 612 + - - - - - 75 - true - true - - - - Qmini Parameters - - - - QFormLayout::AllNonFixedFieldsGrow + + + 10 + + + QLayout::SetNoConstraint + + + + + + 0 + 0 + - - 6 + + + 150 + 300 + - - 6 + + + 75 + true + true + - - 6 + + Qt::LeftToRight - - - - - 0 - 0 - - - - Status - - - - - - - - 0 - 0 - - - - - 0 - 18 - - - - - - - ca://$prefix:STATUS - - - Qt::PlainText - - - 0 - - - false - - - true - - - false - - - true - - - - - - ca://$prefix:STATUS - - - - - - - Scan Rate - - - - - - - - - - ca://$prefix:SOFT_TRIGGER_MODE - - - 0 - - - false - - - true - - - false - - - true - - - - - - ca://$prefix:SOFT_TRIGGER_MODE - - - - - - - - 0 - 0 - - - - - - - false - - - true - - - - - - ca://$prefix:SOFT_TRIGGER_MODE - - - - - - - Trig Enable - - - - - - - - - - ca://$prefix:SET_TRIG_ENABLE - - - ca://$prefix:SET_TRIG_ENABLE - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:SET_TRIG_ENABLE - - - - - - - Temperature - - - - - - - - - - - - - 0 - - - false - - - true - - - false - - - true - - - - - - ca://$prefix:TEMP - - - - - - - - - - - 75 - true - true - true - - - - Fit Parameters - - - false - - - false - - - - QFormLayout::ExpandingFieldsGrow + + false - - QFormLayout::DontWrapRows + + Qmini Parameters - - 6 + + Qt::AlignCenter - - 6 + + + QLayout::SetNoConstraint + + + 6 + + + 6 + + + 6 + + + + + + 0 + 0 + + + + Scan Rate + + + + + + + + 0 + 0 + + + + File dest + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:SET_TRIG_ENABLE + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Exposure Time + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + ca://$prefix:SOFT_TRIGGER_MODE + + + + + + + + 0 + 0 + + + + Exposures to avg + + + + + + + + 0 + 0 + + + + + + + Qt::AutoText + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SET_AVG_CNT + + + false + + + + + + + true + + + + 0 + 0 + + + + + + + 0 + + + false + + + true + + + false + + + false + + + Full file destination for spectra output. Default: $PWD/$name_<timestamp>.txt + + + false + + + sig://${name}_file_dest + + + PyDMLineEdit::String + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:SET_TRIG_ENABLE + + + Qt::AlignCenter + + + ca://$prefix:SET_TRIG_ENABLE + + + + + + + + 0 + 0 + + + + + + + Qt::AutoText + + + Qt::AlignCenter + + + 0 + + + true + + + true + + + false + + + true + + + + + + ca://$prefix:GET_EXPOSURE_TIME + + + false + + + + + + + + 0 + 0 + + + + + + + Save Spectrum + + + false + + + false + + + + + + false + + + sig://${name}_save_spectrum + + + save + + + + 0 + 170 + 255 + + + + false + + + + + + + + + true + + + Are you sure you want to proceed? + + + 1 + + + 0 + + + false + + + false + + + + + + + + 0 + 0 + + + + Trig Enable + + + + + + + + 0 + 0 + + + + + + + 0 + + + false + + + true + + + false + + + true + + + + + + false + + + ca://$prefix:SET_EXPOSURE_TIME + + + + + + + + + + 0 + + + false + + + true + + + false + + + true + + + + + + false + + + ca://$prefix:SET_AVG_CNT + + + + + + + + 0 + 0 + + + + + 0 + 60 + + + + + + + true + + + 0 + + + Qt::NoTextInteraction + + + 0 + + + false + + + false + + + false + + + false + + + + + + sig://${name}_file_dest + + + false + + + PyDMLabel::String + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:SOFT_TRIGGER_MODE + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:SOFT_TRIGGER_MODE + + + false + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:TEMP + + + Qt::AlignCenter + + + 0 + + + true + + + true + + + false + + + true + + + + + + ca://$prefix:TEMP + + + false + + + + + + + + 0 + 0 + + + + Temperature + + + + + + + + 0 + 0 + + + + + + + Force Single Exposure + + + false + + + false + + + + + + false + + + ca://$prefix:START_EXPOSURE.PROC + + + + + + false + + + + + + + + + false + + + Are you sure you want to proceed? + + + 1 + + + None + + + false + + + false + + + + + + + + 0 + 0 + + + + Status + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + + + + ca://$prefix:STATUS + + + Qt::PlainText + + + Qt::AlignCenter + + + 0 + + + false + + + true + + + false + + + true + + + + + + ca://$prefix:STATUS + + + + + + + + + + Re-init + + + false + + + false + + + + + + false + + + ca://$prefix:CLEAR_SPECTROMETER.PROC + + + recycle + + + + 0 + 255 + 127 + + + + false + + + + + + + + + false + + + Are you sure you want to proceed? + + + 1 + + + 0 + + + false + + + false + + + + + + + + + + + 0 + 0 + - - 9 + + + 150 + 300 + - - 6 + + + 75 + true + true + true + - - 6 + + Fit Parameters - - - - - 0 - 0 - - - - Fit On - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:FIT_ON - - - ca://$prefix:FIT_ON - - - - - - - - 0 - 0 - - - - λ Guess - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:W0_GUESS - - - ca://$prefix:W0_GUESS - - - - - - - - 0 - 0 - - - - λ Fit - - - - - - - - 0 - 0 - - - - - 0 - 18 - - - - - - - ca://$prefix:W0_FIT - - - ca://$prefix:W0_FIT - - - - - - - - 0 - 0 - - - - Width - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:WIDTH - - - ca://$prefix:WIDTH - - - - - - - - 0 - 0 - - - - Amplitude - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:AMPLITUDE - - - ca://$prefix:AMPLITUDE - - - - - - - - 0 - 0 - - - - FWHM - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:FWHM - - - ca://$prefix:FWHM - - - - - - - - 0 - 0 - - - - St. Dev. - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:STDEV - - - ca://$prefix:STDEV - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - ca://$prefix:CHISQ - - - ca://$prefix:CHISQ - - - - - - - + + Qt::AlignCenter + + + false + + + false + + + + QLayout::SetNoConstraint + + + 6 + + + 9 + + + 6 + + + 6 + + + 6 + + + + + + 0 + 0 + + + + + + + ca://$prefix:WIDTH + + + Qt::AlignCenter + + + ca://$prefix:WIDTH + + + + + + + + 0 + 0 + + + + Fit On + + + + + + + + 0 + 0 + + + + Amplitude + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:W0_GUESS + + + Qt::AlignCenter + + + ca://$prefix:W0_GUESS + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:AMPLITUDE + + + Qt::AlignCenter + + + ca://$prefix:AMPLITUDE + + + + + + + + 0 + 0 + + + + + + + false + + + true + + + + + + false + + + ca://$prefix:FIT_ON + + + + + + + + 0 + 0 + + + + FWHM + + + + + + + + 0 + 0 + + + + St. Dev. + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + + + + ca://$prefix:W0_FIT + + + Qt::AlignCenter + + + ca://$prefix:W0_FIT + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:FWHM + + + Qt::AlignCenter + + + ca://$prefix:FWHM + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:CHISQ + + + Qt::AlignCenter + + + ca://$prefix:CHISQ + + + + + + + + 0 + 0 + + + + λ Fit + + + + + + + + 0 + 0 + + + + λ Guess + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:FIT_ON + + + Qt::AlignCenter + + + ca://$prefix:FIT_ON + + + + + + + + 0 + 0 + + + + + + + ca://$prefix:STDEV + + + Qt::AlignCenter + + + ca://$prefix:STDEV + + + + + + + + 0 + 0 + + + + Width + + + + + + + + @@ -807,6 +1455,16 @@ QComboBox
pydm.widgets.enum_combo_box
+ + PyDMLineEdit + QLineEdit +
pydm.widgets.line_edit
+
+ + PyDMPushButton + QPushButton +
pydm.widgets.pushbutton
+
TyphosDisplayTitle QFrame @@ -815,9 +1473,6 @@ SpectrumPlot - PyDMEnumComboBox - PyDMEnumComboBox_2 - Parameters