mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-02-13 17:58:43 +01:00
Merge pull request #1385 from slsdetectorgroup/dev/fix_update_ctb
All checks were successful
Build on RHEL9 / build (push) Successful in 3m21s
Build on RHEL8 / build (push) Successful in 4m45s
Run Simulator Tests on local RHEL9 / build (push) Successful in 14m40s
Build on local RHEL9 / build (push) Successful in 1m26s
Run Simulator Tests on local RHEL8 / build (push) Successful in 17m1s
Build on local RHEL8 / build (push) Successful in 3m32s
All checks were successful
Build on RHEL9 / build (push) Successful in 3m21s
Build on RHEL8 / build (push) Successful in 4m45s
Run Simulator Tests on local RHEL9 / build (push) Successful in 14m40s
Build on local RHEL9 / build (push) Successful in 1m26s
Run Simulator Tests on local RHEL8 / build (push) Successful in 17m1s
Build on local RHEL8 / build (push) Successful in 3m32s
skip if not plotted
This commit is contained in:
@@ -36,16 +36,16 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
for i in range(Defines.signals.count):
|
for i in range(Defines.signals.count):
|
||||||
getattr(self.view, f"checkBoxBIT{i}DB").stateChanged.connect(partial(self.setDigitalBitEnable, i))
|
getattr(self.view, f"checkBoxBIT{i}DB").stateChanged.connect(partial(self.setDigitalBitEnable, i))
|
||||||
getattr(self.view, f"checkBoxBIT{i}Out").stateChanged.connect(partial(self.setIOOut, i))
|
getattr(self.view, f"checkBoxBIT{i}Out").stateChanged.connect(partial(self.setIOOut, i))
|
||||||
getattr(self.view, f"checkBoxBIT{i}Plot").stateChanged.connect(partial(self.setEnableBitPlot, i))
|
getattr(self.view, f"checkBoxBIT{i}Plot").stateChanged.connect(partial(self.setBitPlot, i))
|
||||||
getattr(self.view, f"pushButtonBIT{i}").clicked.connect(partial(self.selectBitColor, i))
|
getattr(self.view, f"pushButtonBIT{i}").clicked.connect(partial(self.selectBitColor, i))
|
||||||
self.view.checkBoxBIT0_31DB.stateChanged.connect(
|
self.view.checkBoxBIT0_31DB.stateChanged.connect(
|
||||||
partial(self.setDigitalBitEnableRange, 0, Defines.signals.half))
|
partial(self.setDigitalBitEnableRange, 0, Defines.signals.half))
|
||||||
self.view.checkBoxBIT32_63DB.stateChanged.connect(
|
self.view.checkBoxBIT32_63DB.stateChanged.connect(
|
||||||
partial(self.setDigitalBitEnableRange, Defines.signals.half, Defines.signals.count))
|
partial(self.setDigitalBitEnableRange, Defines.signals.half, Defines.signals.count))
|
||||||
self.view.checkBoxBIT0_31Plot.stateChanged.connect(partial(self.setEnableBitPlotRange, 0,
|
self.view.checkBoxBIT0_31Plot.stateChanged.connect(partial(self.setBitPlotRange, 0,
|
||||||
Defines.signals.half))
|
Defines.signals.half))
|
||||||
self.view.checkBoxBIT32_63Plot.stateChanged.connect(
|
self.view.checkBoxBIT32_63Plot.stateChanged.connect(
|
||||||
partial(self.setEnableBitPlotRange, Defines.signals.half, Defines.signals.count))
|
partial(self.setBitPlotRange, Defines.signals.half, Defines.signals.count))
|
||||||
self.view.checkBoxBIT0_31Out.stateChanged.connect(partial(self.setIOOutRange, 0, Defines.signals.half))
|
self.view.checkBoxBIT0_31Out.stateChanged.connect(partial(self.setIOOutRange, 0, Defines.signals.half))
|
||||||
self.view.checkBoxBIT32_63Out.stateChanged.connect(
|
self.view.checkBoxBIT32_63Out.stateChanged.connect(
|
||||||
partial(self.setIOOutRange, Defines.signals.half, Defines.signals.count))
|
partial(self.setIOOutRange, Defines.signals.half, Defines.signals.count))
|
||||||
@@ -89,8 +89,13 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
for plot, name in self.getEnabledPlots():
|
for plot, name in self.getEnabledPlots():
|
||||||
self.legend.addItem(plot, name)
|
self.legend.addItem(plot, name)
|
||||||
|
|
||||||
|
def updatePlotRange(self):
|
||||||
|
vb = self.mainWindow.plotDigitalWaveform.getViewBox()
|
||||||
|
vb.enableAutoRange(enable=True) # Enable auto-range
|
||||||
|
vb.updateAutoRange() # Force immediate update
|
||||||
|
|
||||||
@recordOrApplyPedestal
|
@recordOrApplyPedestal
|
||||||
def _processWaveformData(self, data, aSamples, dSamples, rx_dbitreorder, rx_dbitlist, isPlottedArray, romode,
|
def _processWaveformData(self, data, aSamples, dSamples, rx_dbitreorder, rx_dbitlist, romode,
|
||||||
nADCEnabled):
|
nADCEnabled):
|
||||||
|
|
||||||
#transform raw waveform data into a processed numpy array
|
#transform raw waveform data into a processed numpy array
|
||||||
@@ -110,10 +115,7 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
# where numbits * numsamples is not a multiple of 8
|
# where numbits * numsamples is not a multiple of 8
|
||||||
if bit_index % 8 != 0:
|
if bit_index % 8 != 0:
|
||||||
bit_index += (8 - (bit_index % 8))
|
bit_index += (8 - (bit_index % 8))
|
||||||
if not isPlottedArray[i]:
|
|
||||||
bit_index += nbitsPerDBit
|
|
||||||
samples_per_bit[idx, :] = np.nan
|
|
||||||
continue
|
|
||||||
for iSample in range(dSamples):
|
for iSample in range(dSamples):
|
||||||
# all samples for digital bit together from slsReceiver
|
# all samples for digital bit together from slsReceiver
|
||||||
index = int(bit_index / 8)
|
index = int(bit_index / 8)
|
||||||
@@ -128,10 +130,6 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
for iSample in range(dSamples):
|
for iSample in range(dSamples):
|
||||||
bit_index = nbitsPerSample * iSample
|
bit_index = nbitsPerSample * iSample
|
||||||
for idx, i in enumerate(rx_dbitlist):
|
for idx, i in enumerate(rx_dbitlist):
|
||||||
if not isPlottedArray[i]:
|
|
||||||
bit_index += 1
|
|
||||||
bits_per_sample[iSample, idx] = np.nan
|
|
||||||
|
|
||||||
index = int(bit_index/8)
|
index = int(bit_index/8)
|
||||||
iBit = idx % 8
|
iBit = idx % 8
|
||||||
bit = (digital_array[index] >> iBit) & 1
|
bit = (digital_array[index] >> iBit) & 1
|
||||||
@@ -152,18 +150,14 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
self.refresh()
|
self.refresh()
|
||||||
|
|
||||||
waveforms = {}
|
waveforms = {}
|
||||||
isPlottedArray = {i: getattr(self.view, f"checkBoxBIT{i}Plot").isChecked() for i in self.rx_dbitlist}
|
|
||||||
|
|
||||||
digital_array = self._processWaveformData(data, aSamples, dSamples, self.rx_dbitreorder, self.rx_dbitlist, isPlottedArray,
|
digital_array = self._processWaveformData(data, aSamples, dSamples, self.rx_dbitreorder, self.rx_dbitlist,
|
||||||
self.mainWindow.romode.value,
|
self.mainWindow.romode.value,
|
||||||
self.mainWindow.nADCEnabled)
|
self.mainWindow.nADCEnabled)
|
||||||
|
|
||||||
irow = 0
|
irow = 0
|
||||||
for idx, i in enumerate(self.rx_dbitlist):
|
for idx, i in enumerate(self.rx_dbitlist):
|
||||||
# bits enabled but not plotting
|
|
||||||
waveform = digital_array[idx, :]
|
waveform = digital_array[idx, :]
|
||||||
if np.isnan(waveform[0]):
|
|
||||||
continue
|
|
||||||
self.mainWindow.digitalPlots[i].setData(waveform)
|
self.mainWindow.digitalPlots[i].setData(waveform)
|
||||||
plotName = getattr(self.view, f"labelBIT{i}").text()
|
plotName = getattr(self.view, f"labelBIT{i}").text()
|
||||||
waveforms[plotName] = waveform
|
waveforms[plotName] = waveform
|
||||||
@@ -173,7 +167,9 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
irow += 1
|
irow += 1
|
||||||
else:
|
else:
|
||||||
self.mainWindow.digitalPlots[i].setY(0)
|
self.mainWindow.digitalPlots[i].setY(0)
|
||||||
|
|
||||||
|
self.updatePlotRange() # Call after all data is set
|
||||||
|
|
||||||
return waveforms
|
return waveforms
|
||||||
|
|
||||||
|
|
||||||
@@ -215,11 +211,11 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
self.mainWindow.nDBitEnabled = len(list(retval))
|
self.mainWindow.nDBitEnabled = len(list(retval))
|
||||||
for i in range(Defines.signals.count):
|
for i in range(Defines.signals.count):
|
||||||
self.getDigitalBitEnable(i, retval)
|
self.getDigitalBitEnable(i, retval)
|
||||||
self.getEnableBitPlot(i)
|
self.EnableBitPlot(i)
|
||||||
self.getEnableBitColor(i)
|
self.getEnableBitColor(i)
|
||||||
self.plotTab.addSelectedDigitalPlots(i)
|
self.plotTab.addSelectedDigitalPlots(i)
|
||||||
self.getDigitalBitEnableRange(retval)
|
self.getDigitalBitEnableRange(retval)
|
||||||
self.getEnableBitPlotRange()
|
self.EnableBitPlotRange()
|
||||||
|
|
||||||
def setDigitalBitEnable(self, i):
|
def setDigitalBitEnable(self, i):
|
||||||
bitList = self.det.rx_dbitlist
|
bitList = self.det.rx_dbitlist
|
||||||
@@ -257,21 +253,29 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
|
|
||||||
self.updateDigitalBitEnable()
|
self.updateDigitalBitEnable()
|
||||||
|
|
||||||
def getEnableBitPlot(self, i):
|
def EnableBitPlot(self, i):
|
||||||
|
""" enables plot check box if bit is enabled, otherwise unchecks and disables plot check box """
|
||||||
|
|
||||||
checkBox = getattr(self.view, f"checkBoxBIT{i}DB")
|
checkBox = getattr(self.view, f"checkBoxBIT{i}DB")
|
||||||
checkBoxPlot = getattr(self.view, f"checkBoxBIT{i}Plot")
|
checkBoxPlot = getattr(self.view, f"checkBoxBIT{i}Plot")
|
||||||
|
if(checkBoxPlot.isChecked()):
|
||||||
|
checkBoxPlot.setChecked(checkBox.isChecked())
|
||||||
|
|
||||||
checkBoxPlot.setEnabled(checkBox.isChecked())
|
checkBoxPlot.setEnabled(checkBox.isChecked())
|
||||||
|
|
||||||
def setEnableBitPlot(self, i):
|
def setBitPlot(self, i):
|
||||||
|
""" sets plot check box e.g. adds plots to plot tab """
|
||||||
pushButton = getattr(self.view, f"pushButtonBIT{i}")
|
pushButton = getattr(self.view, f"pushButtonBIT{i}")
|
||||||
checkBox = getattr(self.view, f"checkBoxBIT{i}Plot")
|
checkBox = getattr(self.view, f"checkBoxBIT{i}Plot")
|
||||||
pushButton.setEnabled(checkBox.isChecked())
|
pushButton.setEnabled(checkBox.isChecked())
|
||||||
|
|
||||||
self.getEnableBitPlotRange()
|
self.EnableBitPlotRange()
|
||||||
self.plotTab.addSelectedDigitalPlots(i)
|
self.plotTab.addSelectedDigitalPlots(i)
|
||||||
self.updateLegend()
|
self.updateLegend()
|
||||||
|
self.updatePlotRange()
|
||||||
|
|
||||||
|
|
||||||
def getEnableBitPlotRange(self):
|
def EnableBitPlotRange(self):
|
||||||
self.view.checkBoxBIT0_31Plot.stateChanged.disconnect()
|
self.view.checkBoxBIT0_31Plot.stateChanged.disconnect()
|
||||||
self.view.checkBoxBIT32_63Plot.stateChanged.disconnect()
|
self.view.checkBoxBIT32_63Plot.stateChanged.disconnect()
|
||||||
self.view.checkBoxBIT0_31Plot.setEnabled(
|
self.view.checkBoxBIT0_31Plot.setEnabled(
|
||||||
@@ -286,12 +290,12 @@ class SignalsTab(QtWidgets.QWidget):
|
|||||||
all(
|
all(
|
||||||
getattr(self.view, f"checkBoxBIT{i}Plot").isChecked()
|
getattr(self.view, f"checkBoxBIT{i}Plot").isChecked()
|
||||||
for i in range(Defines.signals.half, Defines.signals.count)))
|
for i in range(Defines.signals.half, Defines.signals.count)))
|
||||||
self.view.checkBoxBIT0_31Plot.stateChanged.connect(partial(self.setEnableBitPlotRange, 0,
|
self.view.checkBoxBIT0_31Plot.stateChanged.connect(partial(self.setBitPlotRange, 0,
|
||||||
Defines.signals.half))
|
Defines.signals.half))
|
||||||
self.view.checkBoxBIT32_63Plot.stateChanged.connect(
|
self.view.checkBoxBIT32_63Plot.stateChanged.connect(
|
||||||
partial(self.setEnableBitPlotRange, Defines.signals.half, Defines.signals.count))
|
partial(self.setBitPlotRange, Defines.signals.half, Defines.signals.count))
|
||||||
|
|
||||||
def setEnableBitPlotRange(self, start_nr, end_nr):
|
def setBitPlotRange(self, start_nr, end_nr):
|
||||||
checkBox = getattr(self.view, f"checkBoxBIT{start_nr}_{end_nr - 1}Plot")
|
checkBox = getattr(self.view, f"checkBoxBIT{start_nr}_{end_nr - 1}Plot")
|
||||||
enable = checkBox.isChecked()
|
enable = checkBox.isChecked()
|
||||||
for i in range(start_nr, end_nr):
|
for i in range(start_nr, end_nr):
|
||||||
|
|||||||
Reference in New Issue
Block a user