InversePolyphaseFilterBank

class baseband_tasks.pfb.InversePolyphaseFilterBank(ih, response, sn, pad_start=128, pad_end=128, samples_per_frame=None, frequency=None, sideband=None, dtype=None)[source] [edit on github]

Bases: baseband_tasks.base.PaddedTaskBase

Dechannelize a stream produced by a polyphase filter bank.

A polyphase filterbank attempts to make channel responses squarer, by convolving an input timestream with sinc-like function before doing a Fourier transform. This class attempts to deconvolve the signal, given the polyphase filter response. Like in most convolutions, a polyphase filter generally destroys some information, especially for frequencies near the edges of the channels. To optimize the process, Wiener deconvolution is used.

The signal-to-noise ratio required for Wiener deconvolution is a combination of the response-dependent quality with which any signal can be recovered and the quality with which the signal was sampled. For CHIME, where channels are digitized with 4 bits, simulations show that if 3 levels were covering the standard deviation of the input signal, sn=10 works fairly well. For GUPPI, which has 8 bit digitization but a response that strongly suppresses band edges, sn=30 seems a good number.

The deconvolution necessarily works poorly near edges in time, so should be done in overlapping blocks. Required padding is set with pad_start and pad_end (which are in addition to the minimum padding required by the response). Adequate padding depend on response; from simulations, for CHIME a padding of 32 on both sides seems to suffice, while for GUPPI 128 is needed.

Parameters
ihtask or baseband stream reader

Input data stream, with time as the first axis, and Fourier channel as the second.

responsendarray

Polyphase filter. The first dimension is taken to be the number of taps, and the second the number of channels.

snfloat

Effective signal-to-noise ratio; see note above.

pad_start, pad_endint, optional

Extra samples at the start and end to pad the frame being deconvolved; see note above. Default: 128.

samples_per_frameint, optional

Number of complete output samples per frame. Default: inferred from padding such that a minimum efficiency of 75% is reached.

frequencyQuantity, optional

Frequencies for each output channel. Default: inferred from ih (if available).

sidebandarray, optional

Whether frequencies are upper (+1) or lower (-1) sideband. Default: taken from ih (if available).

See also

PolyphaseFilterBank

apply polyphase filter.

baseband_tasks.fourier.fft_maker

to select the FFT package used.

Methods Summary

task(data)

Apply the inverse polyphase filter to a frame.

Methods Documentation

task(data)[source] [edit on github]

Apply the inverse polyphase filter to a frame.

Padding is removed from the result.