Source code for baseband.mark5b.file_info
# Licensed under the GPLv3 - see LICENSE
"""The Mark5BFileReaderInfo property.
Includes information about what is needed to calcuate times.
"""
from ..vlbi_base.file_info import VLBIFileReaderInfo, info_item
__all__ = ['Mark5BFileReaderInfo']
[docs]class Mark5BFileReaderInfo(VLBIFileReaderInfo):
_header0_attrs = ()
_parent_attrs = ('nchan', 'bps', 'ref_time', 'kday')
bps = info_item('bps', needs='_parent', missing='needed to decode data')
nchan = info_item('nchan', needs='_parent', missing=(
"needed to determine sample shape, frame rate, decode data."))
@info_item
def time_info(self):
"""Additional time info needed to get the start time."""
time_info = (self.kday, self.ref_time)
if time_info == (None, None):
self.missing['kday'] = self.missing['ref_time'] = (
"needed to infer full times.")
return None
return time_info
@info_item(needs=('header0', 'frame_rate', 'time_info'))
def start_time(self):
"""Time of the first sample."""
return self.header0.get_time(frame_rate=self.frame_rate)
@info_item(needs='nchan')
def sample_shape(self):
"""Dimensions of each complete sample."""
return (self.nchan,)
@info_item(needs=('header0', 'bps', 'nchan'))
def samples_per_frame(self):
"""Number of complete samples in each frame."""
return (self.header0.payload_nbytes * 8
// (self.bps * self.nchan))
# Override just to replace what it "needs".
@info_item(needs=('header0', 'bps', 'nchan'))
def frame0(self):
"""First frame from the file."""
return super().frame0
complex_data = False