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.