Skip to main content

Synthetic LIGO gravitational-wave glitch generator (cDVGAN architecture)

Project description

GlitchGAN

Conditional Dual-discriminator Variational GAN (cDVGAN) for synthesising LIGO gravitational-wave glitch signals. Trained on seven Gravity Spy glitch classes from the O3 observing run.

Overview

GlitchGAN uses a Wasserstein GAN with gradient penalty (WGAN-GP) augmented by a first-derivative discriminator. The derivative discriminator encourages the generator to produce signals with realistic time-domain structure, not just realistic amplitude distributions.

Architecture: Generator + Discriminator + Derivative Discriminator
Classes: Blip, Fast Scattering, Koi Fish, Low Frequency Burst, Scattered Light, Tomte, Whistle
Signal length: 8192 samples @ 4096 Hz (~2 s)

Repository structure

glitchgan/
├── evaluation.ipynb          # UMAP + GravitySpy evaluation notebook
├── src/cdvgan/
│   ├── tf/
│   │   ├── model_components.py   # Generator / discriminator layers
│   │   ├── gan_models.py         # cWGAN, cDVGAN, cDVGAN2, GlitchGAN
│   │   ├── train.py              # Training entry point
│   │   └── utils.py              # Dataset, callbacks, checkpointing
│   └── utils.py                  # Signal processing utilities
├── weights/tensorflow/
│   └── generator_210_keras3.keras   # Trained generator (epoch 210)
├── models/                       # GravitySpy CNN weights (gitignored — see below)
├── data/                         # Training data (gitignored — see below)
└── environment.yml

Setup

conda env create -f environment.yml
conda activate cdvgan

The environment installs TensorFlow, Keras 3, GWpy, PyCBC, umap-learn, and GravitySpy.

Note: environment.yml targets Apple Silicon (tensorflow-macos / tensorflow-metal). On Linux/HPC replace those with tensorflow and remove tensorflow-metal.

Data

The training data (~2.3 GB) is not included in this repository.

Download from Zenodo: (link TBD — will be added before publication)

Place the downloaded files in data/:

data/
├── glitch_GAN_samples_scaled_balanced.npy   # (N, 8192) float32 signals
├── glitch_GAN_labels_balanced.npy           # (N, 7) one-hot labels
└── glitch_GAN_label_order.npy               # class name ordering

GravitySpy model

The GravitySpy O3 CNN (sidd-cqg-paper-O3-model.h5) is not included. It ships with the gravityspy package or can be found in a local GravitySpy clone.

  1. Install GravitySpy: pip install gravityspy
  2. Copy the model to models/sidd-cqg-paper-O3-model.h5
  3. Set PATH_TO_REPO in evaluation.ipynb to your GravitySpy clone path

Training

python -m cdvgan.tf.train \
    --data-dir data/ \
    --variant cDVGAN \
    --epochs 500 \
    --output-dir GAN_outputs/

See src/cdvgan/tf/train.py for all options.

Evaluation

Open evaluation.ipynb and run all cells. The notebook:

  1. Loads real glitch data and the trained generator
  2. Visualises real vs generated waveforms
  3. Embeds real and generated signals jointly in 3D UMAP space (correlation metric)
  4. Injects generated signals into whitened H1 background and classifies with GravitySpy

Citation

(BibTeX will be added upon publication)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glitchgan-0.1.6.tar.gz (15.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glitchgan-0.1.6-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file glitchgan-0.1.6.tar.gz.

File metadata

  • Download URL: glitchgan-0.1.6.tar.gz
  • Upload date:
  • Size: 15.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for glitchgan-0.1.6.tar.gz
Algorithm Hash digest
SHA256 c8b25ea838cd8e61557bda0e5046aefbc4dbee765941fbca8ca8dcaa92ef2f13
MD5 268d08a0b45ea870fcf6ae8d68ff6258
BLAKE2b-256 034081f1ede7a74f63b5936af8a9d8b56fd6f5ff2f60d3fe0c21477fcd5356f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for glitchgan-0.1.6.tar.gz:

Publisher: publish.yml on tomdooney95/glitchgan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file glitchgan-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: glitchgan-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for glitchgan-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d81b34bdca139bbde6bb657413ee72788bf29f4ee01d37a3393d4485e8d05959
MD5 d051c9afadcc5ae057b3f0d0a369694b
BLAKE2b-256 5d72ae7a7c959ec2a31e9e9f7a8d82c8ec36ab76e41bbe0ae46b4fba7c267288

See more details on using hashes here.

Provenance

The following attestation bundles were made for glitchgan-0.1.6-py3-none-any.whl:

Publisher: publish.yml on tomdooney95/glitchgan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page