diff --git a/gstlal-burst/python/fxtools/utils.py b/gstlal-burst/python/fxtools/utils.py index 64d219164cfc884c57890d75d045f8cd7f5a2896..606acecf8744bb18c03a9ef7fe9e2a58390d6890 100644 --- a/gstlal-burst/python/fxtools/utils.py +++ b/gstlal-burst/python/fxtools/utils.py @@ -103,6 +103,14 @@ def create_new_dataset(path, base, data, name = 'data', group = None, tmp = Fals return fname +def feature_dtype(columns): + """ + given a set of columns, returns back numpy dtypes associated with those + columns. All time-based columns are double-precision, others are stored + in single-precision. + """ + return [(column, numpy.float64) if 'time' in column else (column, numpy.float32) for column in columns] + #---------------------------------- ### gps time utilities @@ -273,7 +281,7 @@ class HDF5TimeseriesFeatureData(FeatureData): self.sample_rate = kwargs['sample_rate'] self.waveform = kwargs['waveform'] self.metadata = dict(**kwargs) - self.dtype = [(column, 'float') for column in self.columns] + self.dtype = feature_dtype(self.columns) self.feature_data = {key: numpy.empty((self.cadence * self.sample_rate,), dtype = self.dtype) for key in keys} self.last_save_time = 0 self.clear() @@ -322,7 +330,7 @@ class HDF5ETGFeatureData(FeatureData): self.cadence = kwargs['cadence'] self.waveform = kwargs['waveform'] self.metadata = dict(**kwargs) - self.dtype = [(column, 'float') for column in self.columns] + self.dtype = feature_dtype(self.columns) self.feature_data = {key: [] for key in keys} self.clear()