Skip to main content

No project description provided

Project description

ringdb

PyPI version

A gravitational event database that queries and locally saves event strain samples, detector PSDs and posterior samples.

Quick Start

from ringdb import Database

# Initialise the database in an empty folder you want your data stored
db = Database("./Data") 
db.initialize()

# Pick an event of your choosing 
event = db.event("GW190521")

# Query it for psds, posteriors and strain data for each detector 
psd = event.psd()	
posteriors = event.posteriors() 
strains = event.strain()

Installation

From pip

This package can be downloaded directly from pip.

pip install ringdb

(Will error out for most non x86-64 setups, use Rosetta if on M1)

Virtual Environments

For the latest version, you can use make to run and install the required things in a virtual environment. Replace VENV_PATH with any path you're comfortable with making a folder in. First import once the venv is setup may be slow, but it will be fine after that.

git clone https://github.com/Potatoasad/ringdb
cd ringdb
make install VENV_PATH=/path/to/venv
. /path/to/venv/bin/activate

Usage:

Initialize

Set a folder in your computer somewhere where data will be saved (if the folder isn't there it will be created). Initialize a Database object.

from ringdb import Database

# Sets up the database inside a folder called Data
db = Database("./Data")
db.initialize()

Get an object corresponding to a particular event, and query it for psds, posteriors or strain

first_event = db.event("GW150914")

Query

Now you can query a bunch of things from the Event object. The most important are:

  • event.posteriors() -> pandas Dataframe with all the posterior samples
  • event.psd() -> dictionary of ringdown.PowerSpectrum objects (from the ringdown package) for each detector
  • event.strain() -> dictionary of ringdown.Data objects (from the ringdown package) for each detector

Get a PSD

first_psd = first_event.psd() # Returns a dictionary labelled by detectors
type(first_psd['H1']) # Ringdown.PowerSpectrum object

Get posteriors

first_posteriors = first_event.posteriors() # Returns a pandas dataframe
type(first_posteriors) # pandas DataFrame with all the posteriors

Get the strain files

first_strain = first_event.strain() # Returns a dictionary labelled by detectors
type(first_strain['L1']) # Ringdown.Data object

Custom Queries

This doesn't work for GWTC-1 events, but will work for the rest

If you have a particular object you would like to pull from an hdf5 file that is not covered by the above, you can query it directly.

As an example, if I wanted to pull prior samples for the total mass. I know for example in GW200316_215756 they will be found in the directory: /C01:IMRPhenomXPHM/priors/samples/total_mass and it needs to read as an array.

In general the path seems to follow /{approximant}/priors/samples/total_mass. I can then call that for this event:

event = db.event("GW200316_215756")
total_mass_priors = event.read_posterior_file("/{approximant}/priors/samples/total_mass", datatype='array')

The database knows how to interpolate things like {approximant}, {detector} and{event}, which correspond to the waveform name, the detectors and the event name.

If you happen to use a particular query a lot you can save it in the database schema, making subsequent accesses easier:

db.update_posterior_schema({'prior_total_mass': {'path': "/{approximant}/priors/samples/total_mass", 'type':'array'}})

total_mass_priors = event.read_posterior_file_from_schema('prior_total_mass')

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

ringdb-0.1.3.5.tar.gz (33.7 kB view hashes)

Uploaded Source

Built Distribution

ringdb-0.1.3.5-py3-none-any.whl (34.3 kB view hashes)

Uploaded Python 3

Supported by

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