56
56
57
57
58
58
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 ,
60
60
** kwargs ):
61
61
"""Obsloader function for SO "Level 3" obs/oper Books.
62
62
@@ -82,6 +82,9 @@ def load_obs_book(db, obs_id, dets=None, prefix=None, samples=None,
82
82
83
83
if no_signal is None :
84
84
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_' )
85
88
86
89
# Regardless of what dets have been asked for (maybe none), get
87
90
# the list of detsets implicated in this observation. Make sure
@@ -537,17 +540,22 @@ def _concat_filesets(results, ancil=None, timestamps=None,
537
540
aman ['biases' ][i * _TES_BIAS_COUNT :(i + 1 ) * _TES_BIAS_COUNT , :] = \
538
541
v ['biases' ].finalize ()[:_TES_BIAS_COUNT , :]
539
542
540
- # Primary (and other stuff to group per-stream)
543
+ # Other header data, per-stream
541
544
aman .wrap ('primary' , core .AxisManager (aman .samps ))
542
- aman .wrap ('iir_params' , core .AxisManager ())
543
- aman ['iir_params' ].wrap ('per_stream' , True )
544
545
for r in results .values ():
545
546
# Primary.
546
547
_prim = core .AxisManager (aman .samps )
547
548
for k , v in r ['primary' ].finalize ().items ():
548
549
_prim .wrap (k , v , [(0 , 'samps' )])
549
550
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 ():
551
559
_iir = None
552
560
if r .get ('iir_params' ) is not None :
553
561
_iir = core .AxisManager ()
@@ -859,8 +867,9 @@ def _extract(self, data, src_slice, dest_slice):
859
867
self .extract_at_idx ,
860
868
src_slice .start , src_slice .stop )
861
869
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 )
864
873
else :
865
874
_sh = [len (data .names ), len (data .times )]
866
875
if self .extract_at_idx is not None :
0 commit comments