Full Changelog

4.2 (unreleased)

  • The minimum versions required by baseband are now python 3.7, astropy 4.3, and numpy 1.17.

New Features

API Changes

Bug Fixes

Other Changes and Additions

4.1.1 (unreleased)

Bug Fixes

  • DADA files such as those produced with Meerkat, in which the header ends without an # end of header comment line can now be read. [#500]

4.1.1 (2021-12-02)

Bug Fixes

  • Ensure that Mark 5B files with extra bytes at the start (i.e., with a first frame that starts later) can be read. [#489]

  • Ensure that Mark 5B frames with corrupted headers are properly recognized and do not lead to exceptions. [#490]

  • Add some minimal validation for Mark 4 and Mark 5B FileReader arguments. [#490]

4.1 (2021-11-30)

API Changes

  • The deprecated vlbi_base module has been removed. [#484]

Bug Fixes

  • Ensure that vdif files with 1 frame per second can be read. [#488]

Other Changes and Additions

  • Entry points are now handled via importlib.metadata (or the python 3.7 backport importlib_metadata), meaning baseband no longer requires the entrypoints package. [#477]

4.0.3 (2020-11-26)

Bug Fixes

  • Ensure that pathlib.Path objects are recognized as valid in the various openers. [#467]

  • Raise a proper FileNotFoundError instead of an obscure AttributeError if trying to get file_info on a non-existing file. [#467]

  • Pass on all “irrelevant” arguments not understood by file_info to the general opener, so they can be used or raise TypeError in a place where it will be clearer why that happens. [#468]

  • Support for VDIF EDV3 data with payload size of 1000 bytes. [#456]

4.0.2 (2020-10-23)

Bug Fixes

  • Fix the GUPPIHeader class incorrectly ignoring the STT_OFFS header keyword. [#457]

4.0.1 (2020-07-31)

Bug Fixes

  • Allow the GUPPI reader to assume channel-first ordering by default, i.e., no longer insist that PKTFMT is one of ‘1SFA’ or ‘SIMPLE’. Instead, info will include a warning for formats not known to work. [#453]

4.0 (2020-07-18)

  • The minimum versions required by baseband are now python 3.7, numpy 1.17 and astropy 4.0.

  • Baseband now requires the (very small) entrypoints package.

New Features

  • Baseband now provides an baseband.io entry point, which allows other packages to make new readers accessible to baseband by defining an entry point in their setup.cfg. [#418]

  • Similarly, baseband also provides an baseband.tasks entry point, which allows other packages to define tasks useful for processing baseband data by defining an entry point in their setup.cfg. This is primarily intended for the future baseband-tasks package. [#445]

API Changes

The internals of baseband have undergone fairly substantial refactoring to make the classes more coherent. This should not affect users directly, but may affect those that have built their own readers.

  • Following python 3.9, HeaderParser instances (which are subclasses of dict), can now be merged together using the | operator. For backward compatibility, using the + operator will remain supported. [#424]

  • All StreamWriters now require an explicit header0 to be passed in (as was already the case for DADA and GUPPI). Creation of a header0 from keyword arguments is now done inside the opener. [#417]

  • The vlbi_base module has been deprecated in favour of base, and VLBI prefixes of classes have been removed where these were not specific to actual VLBI data, leaving only VLBIHeaderBase, VLBIFileReaderBase, and VLBIStreamReaderBase. [#425]

  • The stream base classes will now try to get information that is not passed in explicitly from header0. Given this change, the keyword argument unsliced_shape become somewhat illogical, so was changed to sample_shape (still referring to the pre-squeeze and subset shape) [#415, #433]

  • Support for memory mapping of payloads has been moved into the base PayloadBase and FrameBase classes and thus is available for all formats. [#427]

  • Payloads and frames now all take sample_shape as an argument, instead of some taking nchan. [#429]

Bug Fixes

  • Extraneous arguments to stream writers are no longer ignored, but give rise to a TypeError. [#417]

  • The GUPPI stream reader now will include any overlap samples from the last frame. [#431]

Other Changes and Additions

  • All baseband formats now support passing in template strings for stream readers and writers (e.g., '{file_nr:07d}.vdif'). [#417]

  • The headers for VDIF and Mark 4 now expose standard complex_data and sample_shape properties, to match what is done for the other headers. Mark 5B headers expose only complex_data, as the sample shape cannot be inferred from the header. [#414, #428]

  • General classes to help writing open and info functions are now provided in baseband.vlbi_base.FileOpener and FileInfo. [#418]

  • The general open and file_open functions are now defined in baseband.io (but still imported at the top level). They are able to use any format defined via the plugin system. [#444]

3.2.1 (2020-06-24)

Bug Fixes

  • For GSB phased data, fix the interpretation of sample_rate in calculating payload_nbytes. [#410]

  • Fix pickling for GSB phased data.

3.2 (2020-06-11)

New Features

  • All file and stream readers can now be pickled. Writers still cannot, since those do not allow appending. [#395]

Bug Fixes

  • Mark 4 data written with the non-standard channel assignment used at Ft can now be read and written. [#380]

  • For GSB phased data, the default payload_nbytes has now been corrected so that it is always 4 MiB. [#401]

  • For GSB phased data, the sample_rate argument is now correctly interpreted as the rate of complete samples (previously, the number of channels were ignored). [#401]

Other Changes and Additions

  • The temporary_offset context manager of file readers now allows to pass in a possible initial offset to go to. [#390]

  • The GSB stream reader .info has been updated to include a consistency check of the size of the raw files with the number of frames inferred from the timestamp file. [#407]

3.1.1 (2020-04-05)

Bug Fixes

  • Mark 5B is fixed so that writing files is now also possible on big-endian architectures.

3.1 (2020-01-23)

Bug Fixes

  • Frame rates are now calculated correctly also for Mark 4 data in which the first frame is the last within a second. [#341]

  • Fixed a bug where a VDIF header was not found correctly if the file pointer was very close to the start of a header already. [#346]

  • In VDIF header verification, include that the implied payload must have non-negative size. [#348]

  • Mark 4 now checks by default (verify=True) that frames are ordered correctly. [#349]

  • find_header will now always check that the frame corresponding to a header is complete (i.e., fits within the file). [#354]

  • The count argument to .read() no longer is changed in-place, making it safe to pass in array scalars or dimensionless quantities. [#373]

Other Changes and Additions

  • The Mark 4, Mark 5B, and VDIF stream readers are now able to replace missing pieces of files with zeros using verify='fix'. This is also the new default; use verify=True for the old behaviour of raising an error on any inconsistency. [#357]

  • The VDIFFileReader gained a new get_thread_ids() method, which will scan through frames to determine the threads present in the file. This is now used inside VDIFStreamReader and, combined with the above, allows reading of files that have missing threads in their first frame set. [#361]

  • The stream reader info now also checks whether streams are continuous by reading the first and last sample, allowing a simple way to check whether the file will likely pose problems before possibly spending a lot of time reading it. [#364]

  • Much faster localization of Mark 5B frames. [#351]

  • VLBI file readers have gained a new method locate_frames that finds frame starts near the current location. [#354]

  • For VLBI file readers, find_header now raises an exception if no frame is found (rather than return None).

  • The Mark 4 file reader’s locate_frame has been deprecated. Its functionality is replaced by locate_frames and find_header. [#354]

  • Custom stream readers can now override only part of reading a given frame and testing that it is the right one. [#355]

  • The HeaderParser class was refactored and simplified, making setting keys faster. [#356]

  • info now also provides the number of frames in a file. [#364]

3.0 (2019-08-28)

  • This version only supports python3.

New Features

  • File information now includes whether a file can be read and decoded. The readable() method on stream readers also includes whether the data in a file can be decoded. [#316]

Bug Fixes

  • Empty GUPPI headers can now be created without having to pass in verify=False. This is needed for astropy 3.2, which initializes an empty header in its revamped .fromstring method. [#314]

  • VDIF multichannel headers and payloads are now forced to have power-of-two bits per sample. [#315]

  • Bits per complete sample for VDIF payloads are now calculated correctly also for non power-of-two bits per sample. [#315]

  • Guppi raw file info now presents the correct sample rate, corrected for overlap. [#319]

  • All headers now check that samples_per_frame are set to possible numbers. [#325]

  • Getting .info on closed files no longer leads to an error (though no information can be retrieved). [#326]

Other Changes and Additions

  • Increased speed of VDIF stream reading by removing redundant verification. Reduces the overhead for verification for VDIF CHIME data from 50% (factor 1.5) to 13%. [#321]

2.0 (2018-12-12)

  • VDIF and Mark 5B readers and writers now support 1 bit per sample. [#277, #278]

Bug Fixes

  • VDIF reader will now properly ignore corrupt last frames. [#273]

  • Mark5B reader more robust against headers not being parsed correctly in Mark5BFileReader.find_header. [#275]

  • All stream readers now have a proper dtype attribute, not a corresponding np.float32 or np.complex64. [#280]

  • GUPPI stream readers no longer emit warnings on not quite FITS compliant headers. [#283]

Other Changes and Additions

  • Added release procedure to the documentation. [#268]

1.2 (2018-07-27)

New Features

Other Changes and Additions

1.1.1 (2018-07-24)

Bug Fixes

  • Ensure gsb times can be decoded with astropy-dev (which is to become astropy 3.1). [#249]

  • Fixed rounding error when encoding 4-bit data using baseband.vlbi_base.encoding.encode_4bit_base. [#250]

  • Added GUPPI/PUPPI to the list of file formats used by baseband.open and baseband.file_info. [#251]

1.1 (2018-06-06)

New Features

  • Added a new baseband.file_info function, which can be used to inspect data files. [#200]

  • Added a general file opener, baseband.open which for a set of formats will check whether the file is of that format, and then load it using the corresponding module. [#198]

  • Allow users to pass a verify keyword to file openers reading streams. [#233]

  • Added support for the GUPPI format. [#212]

  • Enabled baseband.dada.open to read streams where the last frame has an incomplete payload. [#228]

API Changes

  • In analogy with Mark 5B, VDIF header time getting and setting now requires a frame rate rather than a sample rate. [#217, #218]

  • DADA and GUPPI now support passing either a start_time or offset (in addition to time) to set the start time in the header. [#240]

Bug Fixes

Other Changes and Additions

  • The baseband.data module with sample data files now has an explicit entry in the documentation. [#198]

  • Increased speed of VLBI stream reading by changing the way header sync patterns are stored, and removing redundant verification steps. VDIF sequential decode is now 5 - 10% faster (depending on the number of threads). [#241]

1.0.1 (2018-06-04)

Bug Fixes

  • Fixed a bug in baseband.dada.open where passing a squeeze setting is ignored when also passing header keywords in ‘ws’ mode. [#211]

  • Raise an exception rather than return incorrect times for Mark 5B files in which the fractional seconds are not set. [#216]

Other Changes and Additions

  • Fixed broken links and typos in the documentation. [#211]

1.0.0 (2018-04-09)

  • Initial release.