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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file ringdb-0.1.3.5.tar.gz.

File metadata

  • Download URL: ringdb-0.1.3.5.tar.gz
  • Upload date:
  • Size: 33.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ringdb-0.1.3.5.tar.gz
Algorithm Hash digest
SHA256 fbb8ff8d3c3bf617b0701c0ae17ffa9b80c47c202c3ad55d3806fe89916fbfe5
MD5 3a77b510ce252275c83dd5ddc61f5d15
BLAKE2b-256 333dba50f9d6d9f5703c4c0f83f1d87269a079445c39f867f0179cf78a343d0e

See more details on using hashes here.

File details

Details for the file ringdb-0.1.3.5-py3-none-any.whl.

File metadata

  • Download URL: ringdb-0.1.3.5-py3-none-any.whl
  • Upload date:
  • Size: 34.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ringdb-0.1.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 279ce2c5c1f36061e8cba5271b88545ff5458035b111509278240c37d6d83876
MD5 125dfb193f4526280783e10371b5ebf2
BLAKE2b-256 76e528252eb9d8c8a2933e30bc191048eb9decdcd3bfbb3bef992c45d755ab82

See more details on using hashes here.

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