The skill prepares gravitational wave data by applying signal processing techniques like filtering and resampling for matched filtering.

Install

mkdir -p .claude/skills/conditioning && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4007" && unzip -o skill.zip -d .claude/skills/conditioning && rm skill.zip

Installs to .claude/skills/conditioning

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Data conditioning techniques for gravitational wave detector data. Use when preprocessing raw detector strain data before matched filtering, including high-pass filtering, resampling, removing filter wraparound artifacts, and estimating power spectral density (PSD). Works with PyCBC TimeSeries data.
300 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Apply high-pass filtering to strain data
  • Resample detector data to specific rates
  • Remove filter wraparound artifacts
  • Estimate power spectral density
  • Interpolate PSD to match frequency resolution

How it works

The pipeline processes raw strain data by applying high-pass filters, resampling, cropping edge artifacts, and calculating PSD using Welch's method.

Inputs & outputs

You give it
Raw detector strain data
You get back
Conditioned strain data and PSD

When to use conditioning

  • Apply high-pass filtering to strain data
  • Resample detector data
  • Remove filter wraparound artifacts
  • Estimate power spectral density

About this skill

Gravitational Wave Data Conditioning

Data conditioning is essential before matched filtering. Raw gravitational wave detector data contains low-frequency noise, instrumental artifacts, and needs proper sampling rates for computational efficiency.

Overview

The conditioning pipeline typically involves:

  1. High-pass filtering (remove low-frequency noise below ~15 Hz)
  2. Resampling (downsample to appropriate sampling rate)
  3. Crop filter wraparound (remove edge artifacts from filtering)
  4. PSD estimation (calculate power spectral density for matched filtering)

High-Pass Filtering

Remove low-frequency noise and instrumental artifacts:

from pycbc.filter import highpass

# High-pass filter at 15 Hz (typical for LIGO/Virgo data)
strain_filtered = highpass(strain, 15.0)

# Common cutoff frequencies:
# 15 Hz: Standard for ground-based detectors
# 20 Hz: Higher cutoff, more aggressive noise removal
# 10 Hz: Lower cutoff, preserves more low-frequency content

Why 15 Hz? Ground-based detectors like LIGO/Virgo have significant low-frequency noise. High-pass filtering removes this noise while preserving the gravitational wave signal (typically >20 Hz for binary mergers).

Resampling

Downsample the data to reduce computational cost:

from pycbc.filter import resample_to_delta_t

# Resample to 2048 Hz (common for matched filtering)
delta_t = 1.0 / 2048
strain_resampled = resample_to_delta_t(strain_filtered, delta_t)

# Or to 4096 Hz for higher resolution
delta_t = 1.0 / 4096
strain_resampled = resample_to_delta_t(strain_filtered, delta_t)

# Common sampling rates:
# 2048 Hz: Standard, computationally efficient
# 4096 Hz: Higher resolution, better for high-mass systems

Note: Resampling should happen AFTER high-pass filtering to avoid aliasing. The Nyquist frequency (half the sampling rate) must be above the signal frequency of interest.

Crop Filter Wraparound

Remove edge artifacts introduced by filtering:

# Crop 2 seconds from both ends to remove filter wraparound
conditioned = strain_resampled.crop(2, 2)

# The crop() method removes time from start and end:
# crop(start_seconds, end_seconds)
# Common values: 2-4 seconds on each end

# Verify the duration
print(f"Original duration: {strain_resampled.duration} s")
print(f"Cropped duration: {conditioned.duration} s")

Why crop? Digital filters introduce artifacts at the edges of the time series. These artifacts can cause false triggers in matched filtering.

Power Spectral Density (PSD) Estimation

Calculate the PSD needed for matched filtering:

from pycbc.psd import interpolate, inverse_spectrum_truncation

# Estimate PSD using Welch's method
# seg_len: segment length in seconds (typically 4 seconds)
psd = conditioned.psd(4)

# Interpolate PSD to match data frequency resolution
psd = interpolate(psd, conditioned.delta_f)

# Inverse spectrum truncation for numerical stability
# This limits the effective filter length
psd = inverse_spectrum_truncation(
    psd,
    int(4 * conditioned.sample_rate),
    low_frequency_cutoff=15
)

# Check PSD properties
print(f"PSD length: {len(psd)}")
print(f"PSD delta_f: {psd.delta_f}")
print(f"PSD frequency range: {psd.sample_frequencies[0]:.2f} - {psd.sample_frequencies[-1]:.2f} Hz")

PSD Parameters Explained

  • Segment length (4 seconds): Longer segments give better frequency resolution but fewer averages. 4 seconds is a good balance.
  • Low frequency cutoff (15 Hz): Should match your high-pass filter cutoff. Frequencies below this are not well-characterized.

Best Practices

  1. Always high-pass filter first: Remove low-frequency noise before resampling
  2. Choose appropriate sampling rate: 2048 Hz is standard, 4096 Hz for high-mass systems
  3. Crop enough time: 2 seconds is minimum, but may need more for longer templates
  4. Match PSD cutoff to filter: PSD low-frequency cutoff should match high-pass filter frequency
  5. Verify data quality: Plot the conditioned strain to check for issues

Dependencies

pip install pycbc

References

Common Issues

Problem: PSD estimation fails with "must contain at least one sample" error

  • Solution: Ensure data is long enough after cropping (need several segments for Welch method)

Problem: Filter wraparound artifacts in matched filtering

  • Solution: Increase crop amount or check that filtering happened before cropping

Problem: Poor SNR due to low-frequency noise

  • Solution: Increase high-pass filter cutoff frequency or check PSD inverse spectrum truncation

When not to use it

  • When data length is insufficient for PSD estimation
  • When filtering is performed after resampling

Prerequisites

pycbc package

Limitations

  • Requires data to be long enough for Welch's method
  • PSD low-frequency cutoff must match the high-pass filter

How it compares

It provides a standardized, reproducible signal processing workflow specifically tuned for gravitational wave data analysis compared to manual filtering.

Compared to similar skills

conditioning side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
conditioning (this skill)16moReviewIntermediate
quant-analyst1032moNo flagsAdvanced
umap-learn62moReviewIntermediate
embedding-strategies82moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

quant-analyst

zenobi-us

Expert quantitative analyst specializing in financial modeling, algorithmic trading, and risk analytics. Masters statistical methods, derivatives pricing, and high-frequency trading with focus on mathematical rigor, performance optimization, and profitable strategy development.

103355

umap-learn

K-Dense-AI

UMAP dimensionality reduction. Fast nonlinear manifold learning for 2D/3D visualization, clustering preprocessing (HDBSCAN), supervised/parametric UMAP, for high-dimensional data.

6100

embedding-strategies

wshobson

Select and optimize embedding models for semantic search and RAG applications. Use when choosing embedding models, implementing chunking strategies, or optimizing embedding quality for specific domains.

890

building-automl-pipelines

jeremylongshore

Build automated machine learning pipelines, including feature engineering, model selection, and performance evaluation.

688

model-compare

rawwerks

Compare 3D CAD models using boolean operations (IoU, Dice, precision/recall). Use when evaluating generated models against gold references, diffing CAD revisions, or computing similarity metrics for ML training. Triggers on: model diff, compare models, IoU, intersection over union, model similarity, CAD comparison, STEP diff, 3D evaluation, gold reference, generated model, precision recall 3D.

783

matchms

davila7

Mass spectrometry analysis. Process mzML/MGF/MSP, spectral similarity (cosine, modified cosine), metadata harmonization, compound ID, for metabolomics and MS data processing.

674

Search skills

Search the agent skills registry