- Avoid numpy>=2.0 deprecation warnings being raised in the
__array__()
methods ofPayload
andFrame.__array__()
. [#525]
- The minimum versions required by baseband are now python 3.10, astropy 5.1, and numpy 1.24.
- Ensure header equality tests work with numpy 2.0. [#523]
- Ensure Mark4 header shapes always are a tuple of int (no numpy ints). [#523]
- Avoid duplicated warnings about bad framesets. [#523]
- GUPPI files written by the VEGAS backend, which, oddly, writes numbers as strings with quotes around them, can now be read. [#515]
- 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] - Modules of tasks are now properly accessible. E.g., with
baseband-tasks
available,from baseband.tasks.dm import DispersionMeasure
works. [#508]
- 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]
- The deprecated
vlbi_base
module has been removed. [#484]
- Ensure that vdif files with 1 frame per second can be read. [#488]
- Entry points are now handled via
importlib.metadata
(or the python 3.7 backportimportlib_metadata
), meaning baseband no longer requires theentrypoints
package. [#477]
- Ensure that
pathlib.Path
objects are recognized as valid in the various openers. [#467] - Raise a proper
FileNotFoundError
instead of an obscureAttributeError
if trying to getfile_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 raiseTypeError
in a place where it will be clearer why that happens. [#468] - Support for VDIF EDV3 data with payload size of 1000 bytes. [#456]
- Fix the GUPPIHeader class incorrectly ignoring the STT_OFFS header keyword. [#457]
- 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]
- 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.
- 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 theirsetup.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 theirsetup.cfg
. This is primarily intended for the futurebaseband-tasks
package. [#445]
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 ofdict
), can now be merged together using the|
operator. For backward compatibility, using the+
operator will remain supported. [#424] - All
StreamWriters
now require an explicitheader0
to be passed in (as was already the case for DADA and GUPPI). Creation of aheader0
from keyword arguments is now done inside the opener. [#417] - The
vlbi_base
module has been deprecated in favour ofbase
, andVLBI
prefixes of classes have been removed where these were not specific to actual VLBI data, leaving onlyVLBIHeaderBase
,VLBIFileReaderBase
, andVLBIStreamReaderBase
. [#425] - The stream base classes will now try to get information that is not
passed in explicitly from
header0
. Given this change, the keyword argumentunsliced_shape
become somewhat illogical, so was changed tosample_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
andFrameBase
classes and thus is available for all formats. [#427] - Payloads and frames now all take
sample_shape
as an argument, instead of some takingnchan
. [#429]
- 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]
- 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
andsample_shape
properties, to match what is done for the other headers. Mark 5B headers expose onlycomplex_data
, as the sample shape cannot be inferred from the header. [#414, #428] - General classes to help writing
open
andinfo
functions are now provided inbaseband.vlbi_base.FileOpener
andFileInfo
. [#418] - The general
open
andfile_open
functions are now defined inbaseband.io
(but still imported at the top level). They are able to use any format defined via the plugin system. [#444]
- For GSB phased data, fix the interpretation of
sample_rate
in calculatingpayload_nbytes
. [#410] - Fix pickling for GSB phased data.
- All file and stream readers can now be pickled. Writers still cannot, since those do not allow appending. [#395]
- 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]
- 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]
- Mark 5B is fixed so that writing files is now also possible on big-endian architectures.
- 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]
- 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; useverify=True
for the old behaviour of raising an error on any inconsistency. [#357] - The
VDIFFileReader
gained a newget_thread_ids()
method, which will scan through frames to determine the threads present in the file. This is now used insideVDIFStreamReader
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 bylocate_frames
andfind_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]
- This version only supports python3.
- 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]
- 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]
- 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]
- VDIF and Mark 5B readers and writers now support 1 bit per sample. [#277, #278]
- 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 correspondingnp.float32
ornp.complex64
. [#280] - GUPPI stream readers no longer emit warnings on not quite FITS compliant headers. [#283]
- Added release procedure to the documentation. [#268]
- Expanded support for acccessing sequences of files to VLBI format openers and baseband.open. Enabled baseband.guppi.open to open file sequences using string templates like with baseband.dada.open. [#254]
- Created baseband.helpers.sequentialfile.FileNameSequencer, a general-purpose filename sequencer that can be passed to any format opener. [#253]
- Moved the Getting Started section to :ref:`"Using Baseband" <using_baseband>`, and created a new quickstart tutorial under :ref:`Getting Started <getting_started>` to better assist new users. [#260]
- 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]
- 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]
- 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
oroffset
(in addition totime
) to set the start time in the header. [#240]
- 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]
- 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]
- Fixed broken links and typos in the documentation. [#211]
- Initial release.