Skip to main content
Sandbox Physics
Follow a radio pulse across the plasma

AC06 · L3

Replay a measured CHIME radio flash offline

Open the frozen FRB20180725A intensity cutout from the first CHIME/FRB catalog, DOI 10.11570/21.0007. You will verify its frequency ordering, rerun three residual-dispersion trials and see why a short bright tail can give an unreliable scattering estimate. Python’s standard library is enough.

Start with the product you actually have

The archive HDF5 contains several arrays with different purposes. We extract only frb/wfall and its axis and quality information. The fitted model_wfall is a separate product and contributes no pixels to this exercise. The similarly named calibrated_wfall has 192 time bins in this source, so it cannot be paired with the 38-point plot_time axis.

The source intensity array contains 16,384 native frequency rows and 38 time samples. Our compact file averages groups of 256 adjacent rows using only finite measured values, producing 64 by 38 cells. It retains the finite native-channel count in every cell, the full native frequency axis and the indices of usable native channels. Ten coarse rows are completely masked and remain null.

The input JSON has SHA-256 dbaad39016765b834f2aa8dcb69e659aa19f5563abcf8e87ed18987f0cc62047. The extractor reads about five megabytes of byte ranges from a 35.5-megabyte source file. The source advertises an MD5 in its HTTP metadata; we record it as advertised, since the full parent file was not downloaded and independently hashed.

Reading: CHIME/FRB first catalog data and waterfall documentation · CHIME/FRB official public-data tutorials

Resolve the axes before shifting anything

For this file, intensity row zero belongs at the high-frequency end. The stored plot_freq array is ascending, but wfall rows correspond to its reverse. The extractor checks that the mean row spectrum matches the archive spectrum when this reversal is applied. Sorting a frequency array without applying the same permutation to the data would invent a different sweep.

Time centers run from 0.49152 to 36.864 milliseconds, with a spacing of 0.98304 milliseconds. A historical documentation label says microseconds. Its numeric axis and the current official tutorial use milliseconds; we freeze the numerical interpretation explicitly. This is a short processed window, not a fresh uncorrected arrival-time series.

The archive reference DM is 715.8092661658914 parsecs per cubic centimeter. That column would produce about 13.92 seconds of raw delay from four hundred to eight hundred megahertz. Applying that entire shift to a 37-millisecond cutout would discard the signal. We instead test small residual corrections around the archive’s existing dedispersion.

Reading: CHIME/FRB first catalog data and waterfall documentation · CHIME/FRB official public-data tutorials · Condon & Ransom, Essential Radio Astronomy, Chapter 6

Shift the measured samples with their masks

For each residual DM, calculate the frequency-dependent delay relative to eight hundred megahertz and divide by the sample interval. The result is usually a fractional sample index. Linearly interpolate the two neighboring intensity values; require both to be finite. Any index outside the saved window contributes nothing. There is no circular wrap from one edge to the other.

Combine channels with a weight equal to the smaller of their two contributing native-channel counts. This preserves the distinction between an average based on a few good channels and one based on a full coarse bin. It is an explicit count-weighting rule, not a calibrated inverse-variance likelihood. Correlated noise introduced by earlier archive processing is not reconstructed.

The script verifies the input hash before computing and writes all profiles, masks-as-weights and summary choices to a new JSON result. It uses no network connection.

δtνms=4.149 δDMpc cm−3[(νGHz)−2−0.8−2]\frac{\delta t_\nu}{\mathrm{ms}}=4.149\,\frac{\delta\mathrm{DM}}{\mathrm{pc}\,\mathrm{cm}^{-3}}\left[\left(\frac{\nu}{\mathrm{GHz}}\right)^{-2}-0.8^{-2}\right]
This is the rounded cold-plasma coefficient used by the replay. Frequencies in the formula are in gigahertz; the reference is eight hundred megahertz. A positive residual correction reads later low-frequency samples before combining the channels.
python3 -W error replay-chime.py
python3 -W error replay-polarization.py

Reading: CHIME/FRB first catalog data and waterfall documentation · CHIME/FRB official public-data tutorials

Read the replayed profiles

Residual DM zero puts the largest sample at 13.271 milliseconds. Estimate a baseline and RMS from the first six and last six bins; the peak rises about 29.4 RMS above that baseline. A residual correction of minus one gives about 8.12, and plus one about 8.81. The broadening after a wrong shift is visible without assuming a fitted pulse template.

These numbers compare three chosen transformations of the same measured pixels. The edge bins, interpolation and changing channel coverage influence the RMS, so the quoted ratios are descriptive signal-to-noise estimates. This exercise does not optimize a new catalog DM or assign it a confidence interval.

The gray profile below uses zero residual correction. Blue and pink apply minus one and plus one. The measured waterfall shows the unshifted processed cutout. All panels are generated from the intensity values in the downloaded package.

0102030400600800Time from saved window start (ms)MHz
Measured processed intensity, FRB20180725A; linear blue-white display, masked frequency rows gray. Input has already been dedispersed at the archive reference DM.
01020300.000.010.02Time (ms)Processed intensity
Gray: residual DM zero. Blue: minus one. Pink: plus one. The vertical scale is archive-normalized intensity, not a flux calibration in janskys.

Reading: CHIME/FRB first catalog data and waterfall documentation · CHIME/FRB official public-data tutorials

Change the band and the time bins

The saved replay also repeats zero residual DM using only the lower or upper half of the band. Their peak-to-edge-RMS estimates are 12.53 and 22.64, compared with 29.41 for the full band. Each half contains thirty-two coarse frequency rows with its original mask. The source spectrum, masked channels and noise all affect the difference, so these values are not a direct measure of telescope sensitivity per unit bandwidth.

A second comparison averages pairs of neighboring time samples with their finite-channel counts. The input becomes sixty-four by nineteen, with 1.96608-millisecond spacing. The baseline uses three bins at each edge, preserving approximately the original baseline duration. Its peak-to-RMS estimate rises to 36.58, but the pulse peak is now assigned to 12.780 milliseconds and fewer sample centers describe its shape. Smoothing can increase a peak-to-noise ratio while reducing timing detail.

The two half-bands give apparent three-point tail times of 2.06 and about 420 milliseconds under the same crude regression. Their extreme disagreement is another reason to diagnose the short-window fit before interpreting a physical scattering time.

Reading: CHIME/FRB first catalog data and waterfall documentation · CHIME/FRB official public-data tutorials · Geyer & Karastergiou (2016), revisiting pulsar scattering

Try a tail fit and watch it fail gracefully

After the peak, keep positive baseline-subtracted bins above three edge RMS. Fit the logarithm of those points against time. A straight decaying tail would have slope minus one over its e-folding time. Only three points survive for residual DM zero, giving an apparent 19.73-millisecond e-folding time. The two wrong-DM trials leave only two points each, so the script reports no tail estimate.

Three selected samples from a short processed window cannot separate intrinsic pulse width, baseline uncertainty, unresolved structure and scattering. The baseline itself uses late bins that may contain a tail. The large apparent time is a diagnostic of this fragile procedure; it is not a new scattering measurement of FRB20180725A.

To infer a physical scattering time, return to wider calibrated data, model the source profile and instrumental response jointly, retain the frequency dependence and test alternative tail shapes. The synthetic exponential experiment in the previous chapter supplies a controlled place to check causality and fluence conservation before attempting that fit.

Reading: Geyer & Karastergiou (2016), revisiting pulsar scattering · Condon & Ransom, Essential Radio Astronomy, Chapter 6

Keep intensity and polarization analyses distinct

The frozen CHIME cutout has no Q or U. The downloaded synthetic-results.json is a separate detector experiment with seed 606. Run replay-polarization.py to fit its saved integrated channels independently, then compare the result with polarization-replay.json and the RM chapter’s worked example. This replay reads the saved noise realization rather than generating new detector noise.

The official polarimetric release instead begins with calibrated voltage data, corrects instrumental phase and delay, and constructs Stokes spectra. A tiny calibrated Q/U table was not located in that release. We therefore provide the primary-source route to those products without relabeling an intensity image as polarization.

For the next file, write down the product name, processing DM, axis order, time unit, mask rule and channel response before fitting. Keep the source hash and distinguish a fitted reference array from the detector data.

Reading: CHIME/FRB official public-data tutorials · Pandhi et al. (2024), CHIME/FRB polarimetry, arXiv v2

Try the prediction

Compare the measured replay with a controlled injection

  1. Use the empty-path preset, then add electron column while keeping scattering zero. Explain how an incorrect residual correction would broaden that pulse.
  2. Export one synthetic record. Verify that its seed and settings match the visible readouts, then run the fixed-seed Q/U replay to compare the same inference method.

Download the reproducible exercise · Run instructions and provenance · File checksums

Sources and calculation scope

  1. Pandhi et al. (2024), CHIME/FRB polarimetry, arXiv v2

    Version 2, 2 May 2024. Sections I.1, II.1–II.2: Stokes data, redshift weighting and calibration. The text of equation 2 lists kpc alongside coefficient 0.812; this course uses the dimensionally consistent pc normalization from NRAO.

  2. Condon & Ransom, Essential Radio Astronomy, Chapter 6

    Section 6.2, equations 6.44–6.46 and Figure 6.5: dispersion and pulse broadening. The inverse-fourth-power scattering law is a model choice here.

  3. CHIME/FRB first catalog data and waterfall documentation

    The public FRB20180725A example distinguishes wfall from model_wfall. DOI 10.11570/21.0007, catalog version 210806.vFINAL; input range extraction and all array conventions are frozen in the companion provenance file. The historical time-unit label conflicts with the actual millisecond axis; the current tutorial and numerical sample spacing resolve it.

  4. CHIME/FRB official public-data tutorials

    Current public-data products, processed intensity and millisecond time axis. Intensity products contain no Q/U. Public data-use statement requests the relevant CHIME citation; no explicit Creative Commons grant was located.

  5. Geyer & Karastergiou (2016), revisiting pulsar scattering

    Section 2.1, equations 1–3: the one-sided exponential assumes an infinite isotropic thin screen with a Gaussian angular distribution. Finite and anisotropic screens alter the response.

FeedbackSomething broken, confusing, or missing on this page?Tell us
What kind of feedback?

Sent with this page’s address, its Lab ID, the site language and your device type. Please leave out personal details. Feedback is kept for up to 12 months.Privacy policy