CNN-based detection of continuous gravitational waves from spinning neutron stars in LIGO data
Continuous gravitational waves (CWs) are persistent signals emitted by rapidly rotating neutron stars. Unlike transient signals from black hole mergers, CWs are much weaker and require computationally expensive matched-filter searches across large parameter spaces.
This solution uses deep learning on Short Fourier Transform (SFT) spectrograms from LIGO's H1 and L1 detectors, achieving 3rd place in the G2NET competition. The winning approaches from this competition demonstrated potential to reduce computing costs by 1-3 orders of magnitude. This work contributed to the published paper "Learning to detect continuous gravitational waves".
SFT (Short Fourier Transform) files from LIGO contain complex Fourier coefficients across 360 time steps and 4096 frequency bins for each detector (H1, L1). The preprocessing:
- Load complex SFT data from HDF5 files
- Compute power spectrum:
P = Re(z)² + Im(z)² - Normalize by mean power per detector
- Compress frequency dimension: 4096 → 128 bins via averaging
- Stack H1/L1 as 2-channel image:
(2, 360, 128)
- Architecture: ConvNeXt (medium/large variants)
- Input: 2-channel time-frequency spectrograms
- Output: Binary classification (signal present / absent)
- Training: Mixed precision, cosine annealing, mixup augmentation
- Debiasing: Post-processing to correct for dataset distribution shifts
| Folder | Focus |
|---|---|
EXP_10 |
Baseline CNN experiments |
EXP_20 |
EfficientNet, PSD features |
EXP_40 |
Noise injection, denoising |
EXP_50 |
ConvNeXt variants (final models) |
EXP_120 |
ViT baselines |
EXP_200 |
Cached dataset experiments |
DEBIAS_SUB |
Submission debiasing |
gravitational-waves ligo deep-learning signal-processing cnn pytorch neutron-stars astrophysics kaggle-competition
Star this repo if you find it useful!