Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GW Matched Filter

Independent reproduction of a gravitational-wave detection (GW150914) using open LIGO strain data and a matched-filtering pipeline built from scratch.

Project structure

gw-matched-filter/
├── data/           # raw strain data (not tracked in git, .hdf5/.gwf ignored)
├── src/            # source code
│   ├── fetch_data.py    # pulls strain data from GWOSC
│   └── plot_strain.py   # milestone 1: raw time-domain plot
├── notebooks/      # exploratory Jupyter notebooks
├── figures/        # generated plots (not tracked in git)
├── tests/          # pytest tests
├── environment.yml # conda environment spec
└── .vscode/        # VS Code settings (interpreter path, pytest config)

Setup

# create and activate the conda environment
conda env create -f environment.yml
conda activate gw-matched-filter

# open in VS Code
code .

In VS Code: Ctrl+Shift+P -> "Python: Select Interpreter" -> choose the gw-matched-filter conda environment if it isn't picked up automatically.

Roadmap

  • Project scaffold
  • Milestone 1: fetch and plot raw H1/L1 strain around GW150914 (signal not visible by eye)
  • Milestone 2: estimate the noise power spectral density (PSD), whiten the data
  • Milestone 3: build a matched filter using a real waveform template (IMRPhenomD via pycbc), recover an SNR time series with a peak at the known merger time
  • Milestone 4 (stretch): repeat for a second event (e.g. GW151226 or GW170104) to show the pipeline generalizes
  • Milestone 5 (stretch): estimate chirp mass / distance by scanning over a small grid of template masses and finding which maximizes recovered SNR

Results

Matched filter recovers the GW150914 signal in both detectors, with peak SNR landing within ~30 milliseconds of the true published merger time (GPS 1126259462.4):

  • H1: peak SNR = 17.55 at offset +0.029 s
  • L1: peak SNR = 13.10 at offset +0.022 s

H1 matched filter SNR L1 matched filter SNR

Whitened strain (noise flattened across frequency, milestone 2):

H1 whitened strain

Data source

Open strain data from the Gravitational Wave Open Science Center, accessed via the gwpy and gwosc Python packages.

Notes

First run of python src/fetch_data.py will download ~32 seconds of strain data for H1 and L1 around the GW150914 merger time and cache it locally in data/.

About

Gravitational-wave detection pipeline utilizing open LIGO strain data and custom matched-filtering to reproduce the GW150914 discovery.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages