diff --git a/lasp/lasp_common.py b/lasp/lasp_common.py index 3c3ec95..2bb9e74 100644 --- a/lasp/lasp_common.py +++ b/lasp/lasp_common.py @@ -99,12 +99,13 @@ class SIQtys: @dataclass class CalSetting: name: str - cal_value: float + cal_value_dB: float + cal_value_linear: float qty: Qty class CalibrationSettings: - one = CalSetting('94 dB SPL', 1.0, SIQtys.AP) - two = CalSetting('114 dB SPL', 10.0, SIQtys.AP) + one = CalSetting('94 dB SPL', 94.0 , 1.0, SIQtys.AP) + two = CalSetting('114 dB SPL', 114.0 , 10.0, SIQtys.AP) types = (one, two) default = one @@ -120,12 +121,15 @@ class CalibrationSettings: """ cb.clear() for ty in CalibrationSettings.types: - cb.addItem(f'{ty.name}') + cb.addItem(f'{ty.cal_value_dB}') cb.setCurrentIndex(CalibrationSettings.default_index) @staticmethod def getCurrent(cb): - return CalibrationSettings.types[cb.currentIndex()] + if cb.currentIndex() < len(CalibrationSettings.types): + return CalibrationSettings.types[cb.currentIndex()] + else: + return None lasp_appdir = appdirs.user_data_dir('Lasp', 'ASCEE') diff --git a/lasp/lasp_measurement.py b/lasp/lasp_measurement.py index 643b8d4..9699bf4 100644 --- a/lasp/lasp_measurement.py +++ b/lasp/lasp_measurement.py @@ -370,6 +370,8 @@ class Measurement: sensitivity is applied, converted to floating point acoustic pressure values [Pa].""" + print('TODO: THIS SHOULD BE CHANGED, VERY INCONSISTENT AND CONFUSING API') + blocks = self.rawData(block) # Apply scaling (sensitivity, integer -> float) @@ -394,26 +396,6 @@ class Measurement: """ return self._sens - def checkOverflow(self): - """Coarse check for overflow in measurement. - - Return: - True if overflow is possible, else False - """ - - with self.file() as f: - for block in self.iterBlocks(f): - dtype = block.dtype - if dtype.kind == 'i': - # minvalue = np.iinfo(dtype).min - maxvalue = np.iinfo(dtype).max - if np.max(np.abs(block)) >= 0.9*maxvalue: - return True - else: - # Cannot check for floating point values. - return False - return False - @sensitivity.setter def sensitivity(self, sens): """Set the sensitivity of the measurement in the file. @@ -437,6 +419,27 @@ class Measurement: f.attrs['sensitivity'] = sens self._sens = sens + def checkOverflow(self): + """Coarse check for overflow in measurement. + + Return: + True if overflow is possible, else False + """ + + with self.file() as f: + for block in self.iterBlocks(f): + dtype = block.dtype + if dtype.kind == 'i': + # minvalue = np.iinfo(dtype).min + maxvalue = np.iinfo(dtype).max + if np.max(np.abs(block)) >= 0.9*maxvalue: + return True + else: + # Cannot check for floating point values. + return False + return False + + def exportAsWave(self, fn=None, force=False, newsampwidth=None, normalize=True): """Export measurement file as wave. In case the measurement data is stored as floats, the values are scaled to the proper integer (PCM)