Skip to content

Commit 164ac3a

Browse files
committed
Make sure iir_params are loaded; fix a no-tones bug
1 parent 093be6e commit 164ac3a

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

sotodlib/io/load_book.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757

5858
def load_obs_book(db, obs_id, dets=None, prefix=None, samples=None,
59-
no_signal=None, no_headers=False, special_channels=False,
59+
no_signal=None, no_headers=None, special_channels=None,
6060
**kwargs):
6161
"""Obsloader function for SO "Level 3" obs/oper Books.
6262
@@ -82,6 +82,9 @@ def load_obs_book(db, obs_id, dets=None, prefix=None, samples=None,
8282

8383
if no_signal is None:
8484
no_signal = False # from here, assume no_signal in [True, False]
85+
if no_headers is None:
86+
# By default, suppress headers for "obs" book loads.
87+
no_headers = obs_id.startswith('obs_')
8588

8689
# Regardless of what dets have been asked for (maybe none), get
8790
# the list of detsets implicated in this observation. Make sure
@@ -537,17 +540,22 @@ def _concat_filesets(results, ancil=None, timestamps=None,
537540
aman['biases'][i * _TES_BIAS_COUNT:(i + 1) * _TES_BIAS_COUNT, :] = \
538541
v['biases'].finalize()[:_TES_BIAS_COUNT, :]
539542

540-
# Primary (and other stuff to group per-stream)
543+
# Other header data, per-stream
541544
aman.wrap('primary', core.AxisManager(aman.samps))
542-
aman.wrap('iir_params', core.AxisManager())
543-
aman['iir_params'].wrap('per_stream', True)
544545
for r in results.values():
545546
# Primary.
546547
_prim = core.AxisManager(aman.samps)
547548
for k, v in r['primary'].finalize().items():
548549
_prim.wrap(k, v, [(0, 'samps')])
549550
aman['primary'].wrap(r['stream_id'], _prim)
550-
# Filter parameters
551+
552+
553+
if any([v['iir_params'] is not None
554+
for v in results.values()]):
555+
# Filter parameters, per-stream
556+
aman.wrap('iir_params', core.AxisManager())
557+
aman['iir_params'].wrap('per_stream', True)
558+
for r in results.values():
551559
_iir = None
552560
if r.get('iir_params') is not None:
553561
_iir = core.AxisManager()
@@ -859,8 +867,9 @@ def _extract(self, data, src_slice, dest_slice):
859867
self.extract_at_idx,
860868
src_slice.start, src_slice.stop)
861869
elif self.shape is not None:
862-
data.extract(self.data[:, dest_slice], None, self.extract_at_idx,
863-
src_slice.start, src_slice.stop)
870+
if len(data.names) > 0:
871+
data.extract(self.data[:, dest_slice], None, self.extract_at_idx,
872+
src_slice.start, src_slice.stop)
864873
else:
865874
_sh = [len(data.names), len(data.times)]
866875
if self.extract_at_idx is not None:

0 commit comments

Comments
 (0)