Gravitational Wave utilities in Python
gravtools module is a complementary module to the existing, well-written libraries
pycbc and gwpy. This package began as a few simple utilities, such as constants
and date conversion helper functions.
gravtools package includes some human-readable, enumerated constants for key components of
PyCBC module structure, such as Detector names and Merger parameter names. This is made
PyCBC often relies on a lazy-loading pattern for attributes, using the
function to assign attributes to primary classes like
Merger. Unfortunately, this makes these
attributes uninspectable by most IDEs. Also the names of these attributes are occasionally less-than-legible.
>>> from gravtools import MergerParameters, Observatory >>> Observatory.LIGOHanford 'H1' >>> MergerParameters.RadiatedEnergy, MergerParameters.FinalSpin ('E_rad', 'a_final')
Gravitational wave data uses GPS time format, which is a float number of seconds since the
GPS era. The
time module in
gravtools contains a utility function to convert
from GPS time to the builtin
>>> from gravtools import time >>> time.gps_to_datetime(1187529241) datetime.datetime(2017, 8, 23, 13, 14, 20)
Merger class in the
PyCBC module doesn't have a clean repr by default. The
gravtools package includes formatting utilities for
Merger objects, mostly for quick
inspection and display purposes (for example, in a Jupyter notebook).
>>> from gravtools import merger >>> from pycbc import catalog >>> m = catalog.Merger('GW150914') >>> merger.summary(m) 'Merger[GW150914](Mass1=35.6, Mass2=30.6, FinalSpin=0.69)'
The parameters displayed are configurable as well, using the
>>> merger.summary(m, parameters=[MergerParameters.Redshift]) 'Merger[GW150914](Redshift=0.09)'