DOI: 10.5281/zenodo.14238889
title: Reproduction package for 'Sporadic radio pulses from a white dwarf binary at the orbital period'

description: This is a basic reproduction package for the paper " Sporadic radio pulses from a white dwarf binary at the orbital period" 

https://www.nature.com/articles/s41550-025-02491-0

This repository contains the LOFAR images of the ILTJ1101+55 flares. Due to data volume constraints, uploading all 8 second snapshot images for the 8 hour observations here is impossible. The full observations are available for reprocessing in the LOFAR archive under project codes LC3_008, LT14_003 and DDT20_005.

Most analysis is performed in Jupyter notebooks using default astronomy packages (numpy, astropy, scipy, pandas). The broadband spectral modelling additionally requires the emcee and corner and tqdm packages.

Each folder roughly corresponds to one figure in the paper, below we provide short description per folder



astrometry/ uses the input from images/ to perform an astrometry correction to the location of ILTJ1101 by comparing compact sources in the image to their location in the LoTSS DR2 source catalog (Shimwell et al. 2022). This file contains a jupyter notebook for the analysis and a fits file with nearby compact sources from LoTSS DR2 (subset_LoTSS.fits).

images/ contains the snapshot images where ILTJ1101 was flaring. Additionally, this folder contains the source finder output for these images.

Fig1_folded_flares_dynspec/ notebooks to create panels a and b of figure 1. The csv files in folded_flares contain the force extracted flux measurement at the location of ILTJ1101 for every 8 second snapshot in the five 8 hour observations where flares were identified (L259781, L801324, L801338, L801366, L801380).

Fig2_ExtFig4_rv_fit_and_spectrum/ contains the MMT and HET spectra, the spectral models used for template matching and three jupyter notebooks. These are used for plotting the spectra, performing the radial velocity (RV) analysis, and inspecting the Halpha emission line in the HET spectrum.

Fig3_ExtFig6_broadband_modelling/ contains two python scripts. model_observed_magntidues.py: Runs the mcmc model to sample to combination of main-sequence and white dwarf models that best fits the data. plot_model.py: photometry data and fits are plotted using a least squares method.



wd_models/ and parsec_z0.0152_10Gyr.dat contain the models as described in the paper, which will be interpolated over for fitting.

magnitudes.csv contains the broadband photometry for ILTJ1101

Finally this folder contains the results from several mcmc runs, with and without a distance prior.



Fig4_binary_ mass_function/ contains a Jupyter notebook to plot the binary mass function.

ExtFig1_gallery_archival_flares/ contains a jupyter notebook that shows all the initially significant lpf detections at the location of ILTJ1101. After follow-up with a second source finder (pyse), some of these flare appeared to be due to noise aretefacts. lpf_5sigma/ contains the 5 sigma lpf detections, and pyse/ contains the corresponding pyse source finder parameters.

ExtFig2_timing_residuals/ contains a simple script to plot the timing residuals resulting from TEMPO2, which are given in the data file residuals_7p_new.dat

ExtFig3_VLITE/ contains a script to visualise the VLITE non-detections of ILTJ1101. The VLITE observations are detailed in data.csv.

ExtFig5_colours/ contains a script to plot the ILTJ1101 SDSS colours against a background HR diagram. contours.csv contains the contour defined in Rebassa-Mansergas et al (2016) that selects white dwarf - M dwarf binaries.

ExtFig7_ztf/ contains all the ztf observations of ILTJ1101 in 20240607_ztf_radio_mstar.csv. The accompanying python script is used to plot these light curves and perform a periodicity search.

ExtFig8_RL_overflow/ contains a simple script to plot the M dwarf Roche radius as a function of white dwarf mass.

Swift/ contains the raw data from the four Swift scans.

Supplementary_information/ scripts to create the plots in the supplementary information. For the getper.py file in the timing folder runs with the following input: >>> python getper.py -i time_sec.txt -p1 8 -p2 21600 -maxdiff 1000000000 -pstep 0.01 -tol 2