Baseband Analysis -- Core¶
Some basic routines are called core routines. This is a bit arbitrary, but functions like RFI flagging, dedispersion, and downsampling are included in baseband_analysis.core
in a Pythonic way so they can be sped up with Numba later.
Dedispersion¶
In CHIME we divide the frequency band 400-800 MHz into 1024 channels of width 390 kHz, each of which is centered at some \(\nu_0\) (a vector of 1024 channel centres, from 800,...400.390625 MHz). Within each channel, ISM-dispersed broadband impulses can be significantly smeared. For dispersion measures of \(>100\), e.g. those of FRBs, it is necessary to coherently de-smear each channel. We do this for each channel independently by further dividing each channel into a range of ``intra-channel frequencies'' \(-190 kHz < \nu < +190 kHz\).
Then for each channel we apply the two transfer functions below, which describe an sub-integer translation, and an intra-channel de-smearing which applies a phase shift to each channel after upchannelizing. $$ H{smear}(\nu) = \exp(-2\pi i K \nu^2 / \nu_0^2 / (\nu + \nu_0))$$
Note that when applying \(H_{shift}\), we effectively roll the data along the time axis. This breaks the timestamp accounting using data['ctime']
.