pulsarbat.readers.BasebandReader#

class pulsarbat.readers.BasebandReader(name, /, *, signal_type=<class 'pulsarbat.core.Signal'>, signal_kwargs={}, intensity=None, lower_sideband=False, **kwargs)[source]#

Wrapper around StreamReader from the baseband package.

Parameters
name, **kwargs

Arguments to pass on to baseband.open() to create a reader via baseband.open(name, 'rs', **kwargs).

signal_typesubclass of Signal, default: Signal

Type of signal that will be returned by read().

signal_kwargsdict, optional

Additional kwargs to pass on to signal_type when creating a Signal object. Must not include sample_rate or start_time as dictionary fields.

intensitybool, optional

Whether the data is intensity data. If signal_type is a subclass of IntensitySignal, assumed to be True. If signal_type is a subclass of BasebandSignal, assumed to be False. Default is False.

lower_sidebandbool or array-like, optional

Whether the data is lower-sideband (LSB) data. Default is False. If not a boolean, must be an array-like of booleans with the same shape as the sample_shape of original data as read by the baseband StreamReader.

Attributes

complex_data

Whether the data is complex-valued.

dt

Sample spacing (1 / sample_rate).

dtype

Data-type of data.

intensity

Where the data is intensity data (as opposed to raw baseband).

lower_sideband

Whether data is lower sideband (LSB) data.

ndim

Number of dimensions in data.

real_baseband

Whether the data is real-valued baseband data.

sample_rate

Sample rate of the signal data.

sample_shape

Shape of a sample.

shape

Shape of data.

start_time

Timestamp at first sample.

stop_time

Timestamp after last sample.

time_length

Length of signal in time units.

Methods

contains(t, /)

Whether time(s) are within the bounds of the signal.

dask_read(offset, n, /, **kwargs)

Read n samples from given offset using Dask arrays.

offset_at(t, /)

Returns nearest integer offset at given time.

read(offset, n, /, **kwargs)

Read n samples from given offset.

time_at(offset, /[, unit])

Returns time at given offset.

contains(t, /)#

Whether time(s) are within the bounds of the signal.

dask_read(offset, n, /, **kwargs)#

Read n samples from given offset using Dask arrays.

A convenience method equivalent to the read() method with use_dask=True.

Parameters
offsetint

Position to read from. Must be non-negative.

nint

Number of samples to read. Must be non-negative.

**kwargs

See read() for list of supported kwargs.

Returns
Signal

Signal of length n containing data that was read as a Dask array.

offset_at(t, /)#

Returns nearest integer offset at given time.

Parameters
tQuantity or Time

Can be an absolute time as an astropy Time object, or an astropy Quantity in time units relative to the start.

Returns
int

The nearest integer position (in number of samples).

read(offset, n, /, **kwargs)[source]#

Read n samples from given offset.

Parameters
offsetint

Position to read from. Must be non-negative.

nint

Number of samples to read. Must be non-negative.

**kwargs

Currently supported keyword arguments:

  • use_dask – Whether to use dask arrays.

  • chunks – Chunk sizes if using dask arrays. By default, there is no chunking along the zeroth dimension.

  • lock – A lock object to prevent concurrent reads. Must be a context manager.

Returns
Signal

Signal of length n containing data that was read.

time_at(offset, /, unit=None)#

Returns time at given offset.

Parameters
offsetint

Position in number of samples.

unitUnit, optional

Desired unit of returned value (as an astropy unit). By default (None), the absolute timestamp is returned.

Returns
Quantity or Time

Time relative to the start as an astropy Quantity if unit is provided, otherwise an absolute time as an astropy Time object.