or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

astrophysics.mddetector.mdfrequencyseries.mdindex.mdplotting.mdsegments.mdsignal-processing.mdspectrogram.mdtimeseries.md
tile.json

tessl/pypi-gwpy

A python package for gravitational-wave astrophysics

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/gwpy@3.0.x

To install, run

npx @tessl/cli install tessl/pypi-gwpy@3.0.0

index.mddocs/

GWpy - Gravitational-Wave Astrophysics

GWpy is a collaboration-driven Python package providing comprehensive tools for studying data from ground-based gravitational-wave detectors like LIGO and Virgo. It offers a user-friendly, intuitive interface to common time-domain and frequency-domain data produced by gravitational-wave observatories, enabling researchers to perform complex astrophysical analyses with easy-to-follow workflows.

Package Information

  • Package Name: gwpy
  • Language: Python
  • Installation: conda install -c conda-forge gwpy or pip install gwpy
  • Documentation: https://gwpy.github.io/docs/
  • License: GPL-3.0-or-later

Core Imports

import gwpy

Common imports for working with gravitational-wave data:

from gwpy.timeseries import TimeSeries
from gwpy.frequencyseries import FrequencySeries  
from gwpy.spectrogram import Spectrogram
from gwpy.segments import DataQualityFlag, Segment
from gwpy.table import EventTable
from gwpy.plot import Plot

Basic Usage

from gwpy.timeseries import TimeSeries
from gwpy.segments import DataQualityFlag

# Read gravitational-wave strain data
strain = TimeSeries.read('H-H1_STRAIN-1126259446-32.gwf', 
                        'H1:DCS-CALIB_STRAIN_C02', 
                        start=1126259446, end=1126259478)

# Calculate power spectral density
psd = strain.psd(fftlength=4, overlap=2)

# Create a time-frequency spectrogram
spec = strain.spectrogram(stride=1, fftlength=4, overlap=2)

# Read data quality information
dqflag = DataQualityFlag.query('H1:DMT-ANALYSIS_READY:1',
                              start=1126259446, end=1126259478)

# Create a plot
plot = strain.plot()
plot.show()

Architecture

GWpy is built around core data types that extend standard scientific Python libraries:

  • Data Types: TimeSeries, FrequencySeries, Spectrogram extend numpy arrays with metadata
  • Collections: Dict and List variants provide multi-channel data handling
  • I/O System: Unified interface for reading/writing gravitational-wave data formats
  • Plotting: Enhanced matplotlib integration with domain-specific visualizations
  • Signal Processing: Specialized algorithms for gravitational-wave data analysis

The package integrates seamlessly with the broader scientific Python ecosystem (NumPy, SciPy, Astropy, Matplotlib) while providing gravitational-wave specific functionality and metadata handling.

Capabilities

Time Series Analysis

Tools for analyzing time-domain gravitational-wave data including strain measurements, auxiliary channels, and detector state information. Supports reading from various data formats and provides filtering, resampling, and statistical analysis.

class TimeSeries(Series):
    def __init__(self, data, times=None, **kwargs): ...
    def read(source, channel, start=None, end=None, **kwargs): ...
    def get(channel, start, end, **kwargs): ...
    def filter(*filters, **kwargs): ...
    def resample(rate, **kwargs): ...
    def psd(fftlength=None, overlap=None, **kwargs): ...
    def asd(fftlength=None, overlap=None, **kwargs): ...

class StateVector(TimeSeries):
    def __init__(self, data, bits=None, **kwargs): ...
    def to_dqflags(self): ...

Time Series Analysis

Frequency Domain Analysis

Spectral analysis tools for power spectral densities, amplitude spectral densities, and frequency-domain filtering. Includes methods for noise characterization and detector sensitivity analysis.

class FrequencySeries(Series):
    def __init__(self, data, frequencies=None, **kwargs): ...
    def read(source, **kwargs): ...
    def plot(**kwargs): ...
    def zpk(zeros, poles, gain, **kwargs): ...

class SpectralVariance(Array2D):
    def __init__(self, data, **kwargs): ...

Frequency Domain Analysis

Time-Frequency Analysis

Time-frequency representation tools including spectrograms and Q-transforms for transient gravitational-wave event analysis and glitch characterization.

class Spectrogram(Array2D):
    def __init__(self, data, times=None, frequencies=None, **kwargs): ...
    def read(source, **kwargs): ...
    def ratio(method='median'): ...
    def q_transform(**kwargs): ...

Time-Frequency Analysis

Segments and Data Quality

Data quality flag handling and time segment management for identifying valid analysis periods and detector operational states.

class Segment:
    def __init__(self, start, end): ...
    def __contains__(self, other): ...
    def protract(self, x): ...
    def contract(self, x): ...

class DataQualityFlag:
    def __init__(self, name=None, **kwargs): ...
    def query(flag, start, end, **kwargs): ...
    def read(source, **kwargs): ...
    def write(target, **kwargs): ...

Segments and Data Quality

Signal Processing

Advanced signal processing algorithms including digital filtering, window functions, Q-transforms, and spectral estimation methods optimized for gravitational-wave data.

# Filter design functions
def lowpass(frequency, sample_rate, **kwargs): ...
def highpass(frequency, sample_rate, **kwargs): ...  
def bandpass(flow, fhigh, sample_rate, **kwargs): ...
def notch(frequency, sample_rate, **kwargs): ...

# Spectral analysis functions  
def welch(data, **kwargs): ...
def bartlett(data, **kwargs): ...
def median(data, **kwargs): ...
def coherence(x, y, **kwargs): ...

Signal Processing

Plotting and Visualization

Enhanced matplotlib integration with gravitational-wave specific plot types, GPS time handling, and publication-quality figure generation.

class Plot:
    def __init__(self, *data, **kwargs): ...
    def add_timeseries(self, ts, **kwargs): ...
    def add_spectrogram(self, spec, **kwargs): ...
    def show(self, **kwargs): ...
    def save(self, filename, **kwargs): ...

class BodePlot(Plot):
    def __init__(self, **kwargs): ...

Plotting and Visualization

Detector Utilities

Detector-specific utilities for channel management, timezone handling, and interferometer-specific configurations.

class Channel:
    def __init__(self, name, **kwargs): ...
    def query(self, **kwargs): ...

def get_timezone(ifo): ...
def get_timezone_offset(ifo, dt=None): ...

Detector Utilities

Astrophysics Calculations

Sensitivity and detection range calculations for gravitational-wave sources including binary inspirals and burst sources.

def inspiral_range(psd, **kwargs): ...
def burst_range(spectrum, **kwargs): ...
def sensemon_range(psd, **kwargs): ...
def range_timeseries(timeseries, **kwargs): ...

Astrophysics Calculations

Types

# Core data types from gwpy.types
from gwpy.types import Array, Series, Array2D

class Array:
    def __init__(self, data, **kwargs): ...
    def copy(self): ...
    def __getitem__(self, item): ...
    def value_at(self, x): ...
    def shift(self, delta): ...

class Series(Array):
    def __init__(self, data, index=None, **kwargs): ...
    def plot(**kwargs): ...
    def write(target, **kwargs): ...
    def crop(self, start=None, end=None, copy=False): ...
    def append(self, other, inplace=True, **kwargs): ...
    def prepend(self, other, inplace=True, **kwargs): ...

class Array2D(Array):
    def __init__(self, data, **kwargs): ...
    def transpose(self): ...

# Collection types  
from gwpy.timeseries import TimeSeriesDict, TimeSeriesList
from gwpy.frequencyseries import FrequencySeriesDict, FrequencySeriesList
from gwpy.segments import SegmentList, DataQualityDict

# Time types
from gwpy.time import Time, LIGOTimeGPS
from astropy.time import Time

# Event types
from gwpy.table import EventTable

# I/O and utility types
from astropy.units import Unit, Quantity
import numpy as np