VLBIFileReaderBase¶
-
class
baseband.vlbi_base.base.
VLBIFileReaderBase
(fh_raw)[source] [edit on github]¶ Bases:
baseband.vlbi_base.base.VLBIFileBase
VLBI wrapped file reader base class.
Typically, a subclass will define
read_header
,read_frame
, andfind_header
methods. This baseclass includes aget_frame_rate
method which determines the frame rate by scanning the file for headers, looking for the maximum frame number that occurs before the jump down for the next second. This method requires the subclass to define aread_header
method and assumes headers have a ‘frame_nr’ item, and define apayload_nbytes
property (as do all standard VLBI formats).- Parameters
- fh_rawfilehandle
Filehandle of the raw binary data file.
Attributes Summary
info
()Standardized information on file readers.
Methods Summary
close
(self)get_frame_rate
(self)Determine the number of frames per second.
temporary_offset
(self)Context manager for temporarily seeking to another file position.
Attributes Documentation
-
info
¶ Standardized information on file readers.
The
info
descriptor has a number of standard attributes, which are determined from arguments passed in opening the file, from the first header (info.header0
) and from possibly scanning the file to determine the duration of frames.Examples
The most common use is simply to print information:
>>> from baseband.data import SAMPLE_MARK5B >>> from baseband import mark5b >>> fh = mark5b.open(SAMPLE_MARK5B, 'rb') >>> fh.info File information: format = mark5b frame_rate = 6400.0 Hz bps = 2 complex_data = False readable = False missing: nchan: needed to determine sample shape and rate. kday, ref_time: needed to infer full times. errors: start_time: unsupported operand type(s) for +: 'NoneType' and 'int' frame0: In order to read frames, the file handle should be initialized with nchan set. >>> fh.close() >>> fh = mark5b.open(SAMPLE_MARK5B, 'rb', kday=56000, nchan=8) >>> fh.info File information: format = mark5b frame_rate = 6400.0 Hz sample_rate = 32.0 MHz samples_per_frame = 5000 sample_shape = (8,) bps = 2 complex_data = False start_time = 2014-06-13T05:30:01.000000000 readable = True >>> fh.close()
- Attributes
- formatstr or
None
File format, or
None
if the underlying file cannot be parsed.- frame_rate
Quantity
Number of data frames per unit of time.
- sample_rate
Quantity
Complete samples per unit of time.
- samples_per_frameint
Number of complete samples in each frame.
- sample_shapetuple
Dimensions of each complete sample (e.g.,
(nchan,)
).- bpsint
Number of bits used to encode each elementary sample.
- complex_databool
Whether the data are complex.
- start_time
Time
Time of the first complete sample.
- readablebool
Whether the first sample could be read and decoded.
- missingdict
Entries are keyed by names of arguments that should be passed to the file reader to obtain full information. The associated entries explain why these arguments are needed.
- errorsdict
Any exceptions raised while trying to determine attributes. Keyed by the attributes.
- formatstr or
Methods Documentation
-
close
(self) [edit on github]¶
-
get_frame_rate
(self)[source] [edit on github]¶ Determine the number of frames per second.
The method cycles through headers, starting from the start of the file, finding the largest frame number before it jumps back to 0 for a new second.
-
temporary_offset
(self) [edit on github]¶ Context manager for temporarily seeking to another file position.
To be used as part of a
with
statement:with fh_raw.temporary_offset() [as fh_raw]: with-block
On exiting the
with-block
, the file pointer is moved back to its original position.