ripplegw


Nameripplegw JSON
Version 0.0.9 PyPI version JSON
download
home_pagehttps://ripple.readthedocs.io/en/latest/
SummaryA small jax package for differentiable and fast gravitational wave data analysis.
upload_time2024-05-23 18:48:07
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords gravitational waves jax
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Ripple :ocean:

A small `jax` package for differentiable and fast gravitational wave data analysis.

# Getting Started

### Installation

Both waveforms have been tested extensively and match `lalsuite` implementations to machine precision across all the parameter space. 

Ripple can be installed using 

```
pip3 install ripplegw
```

Note that by default we do not include enable float64 in `jax`` since we want allow users to use float32 to improve performance.
If you require float64, please include the following code at the start of the script:

```
from jax import config
config.update("jax_enable_x64", True)
```

See https://jax.readthedocs.io/en/latest/notebooks/Common_Gotchas_in_JAX.html for other common `jax` gotchas.

### Supported waveforms

- IMRPhenomXAS (aligned spin)
- IMRPhenomD (aligned spin)
- IMRPhenomPv2 (Still finalizing sampling checks)
- TaylorF2 with tidal effects
- IMRPhenomD_NRTidalv2, verified for the low spin regime (chi1, chi2 < 0.05), further testing is required for higher spins

### Generating a waveform and its derivative

Generating a waveform is incredibly easy. Below is an example of calling the PhenomXAS waveform model
to get the h_+ and h_x polarizations of the waveform model

We start with some basic imports:

```python
import jax.numpy as jnp

from ripple.waveforms import IMRPhenomXAS
from ripple import ms_to_Mc_eta
```

And now we can just set the parameters and call the waveform!

```python
# Get a frequency domain waveform
# source parameters

m1_msun = 20.0 # In solar masses
m2_msun = 19.0
chi1 = 0.5 # Dimensionless spin
chi2 = -0.5
tc = 0.0 # Time of coalescence in seconds
phic = 0.0 # Time of coalescence
dist_mpc = 440 # Distance to source in Mpc
inclination = 0.0 # Inclination Angle

# The PhenomD waveform model is parameterized with the chirp mass and symmetric mass ratio
Mc, eta = ms_to_Mc_eta(jnp.array([m1_msun, m2_msun]))

# These are the parametrs that go into the waveform generator
# Note that JAX does not give index errors, so if you pass in the
# the wrong array it will behave strangely
theta_ripple = jnp.array([Mc, eta, chi1, chi2, dist_mpc, tc, phic, inclination])

# Now we need to generate the frequency grid
f_l = 24
f_u = 512
del_f = 0.01
fs = jnp.arange(f_l, f_u, del_f)
f_ref = f_l

# And finally lets generate the waveform!
hp_ripple, hc_ripple = IMRPhenomXAS.gen_IMRPhenomXAS_hphc(fs, theta_ripple, f_ref)

# Note that we have not internally jitted the functions since this would
# introduce an annoying overhead each time the user evaluated the function with a different length frequency array
# We therefore recommend that the user jit the function themselves to accelerate evaluations. For example:

import jax

@jax.jit
def waveform(theta):
    return IMRPhenomXAS.gen_IMRPhenomXAS_hphc(fs, theta)
```




            

Raw data

            {
    "_id": null,
    "home_page": "https://ripple.readthedocs.io/en/latest/",
    "name": "ripplegw",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "gravitational waves, jax",
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/52/68/0a8d7851a44c8ed6bcdd353337d2dc4e0a891e7cc2895f7fe9bbe17cbbd3/ripplegw-0.0.9.tar.gz",
    "platform": null,
    "description": "# Ripple :ocean:\n\nA small `jax` package for differentiable and fast gravitational wave data analysis.\n\n# Getting Started\n\n### Installation\n\nBoth waveforms have been tested extensively and match `lalsuite` implementations to machine precision across all the parameter space. \n\nRipple can be installed using \n\n```\npip3 install ripplegw\n```\n\nNote that by default we do not include enable float64 in `jax`` since we want allow users to use float32 to improve performance.\nIf you require float64, please include the following code at the start of the script:\n\n```\nfrom jax import config\nconfig.update(\"jax_enable_x64\", True)\n```\n\nSee https://jax.readthedocs.io/en/latest/notebooks/Common_Gotchas_in_JAX.html for other common `jax` gotchas.\n\n### Supported waveforms\n\n- IMRPhenomXAS (aligned spin)\n- IMRPhenomD (aligned spin)\n- IMRPhenomPv2 (Still finalizing sampling checks)\n- TaylorF2 with tidal effects\n- IMRPhenomD_NRTidalv2, verified for the low spin regime (chi1, chi2 < 0.05), further testing is required for higher spins\n\n### Generating a waveform and its derivative\n\nGenerating a waveform is incredibly easy. Below is an example of calling the PhenomXAS waveform model\nto get the h_+ and h_x polarizations of the waveform model\n\nWe start with some basic imports:\n\n```python\nimport jax.numpy as jnp\n\nfrom ripple.waveforms import IMRPhenomXAS\nfrom ripple import ms_to_Mc_eta\n```\n\nAnd now we can just set the parameters and call the waveform!\n\n```python\n# Get a frequency domain waveform\n# source parameters\n\nm1_msun = 20.0 # In solar masses\nm2_msun = 19.0\nchi1 = 0.5 # Dimensionless spin\nchi2 = -0.5\ntc = 0.0 # Time of coalescence in seconds\nphic = 0.0 # Time of coalescence\ndist_mpc = 440 # Distance to source in Mpc\ninclination = 0.0 # Inclination Angle\n\n# The PhenomD waveform model is parameterized with the chirp mass and symmetric mass ratio\nMc, eta = ms_to_Mc_eta(jnp.array([m1_msun, m2_msun]))\n\n# These are the parametrs that go into the waveform generator\n# Note that JAX does not give index errors, so if you pass in the\n# the wrong array it will behave strangely\ntheta_ripple = jnp.array([Mc, eta, chi1, chi2, dist_mpc, tc, phic, inclination])\n\n# Now we need to generate the frequency grid\nf_l = 24\nf_u = 512\ndel_f = 0.01\nfs = jnp.arange(f_l, f_u, del_f)\nf_ref = f_l\n\n# And finally lets generate the waveform!\nhp_ripple, hc_ripple = IMRPhenomXAS.gen_IMRPhenomXAS_hphc(fs, theta_ripple, f_ref)\n\n# Note that we have not internally jitted the functions since this would\n# introduce an annoying overhead each time the user evaluated the function with a different length frequency array\n# We therefore recommend that the user jit the function themselves to accelerate evaluations. For example:\n\nimport jax\n\n@jax.jit\ndef waveform(theta):\n    return IMRPhenomXAS.gen_IMRPhenomXAS_hphc(fs, theta)\n```\n\n\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A small jax package for differentiable and fast gravitational wave data analysis.",
    "version": "0.0.9",
    "project_urls": {
        "Bug Tracker": "https://github.com/tedwards2412/ripple",
        "Homepage": "https://ripple.readthedocs.io/en/latest/"
    },
    "split_keywords": [
        "gravitational waves",
        " jax"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b91cbff356a2a6d8ce804d36778d35e8492e8309cd0f824b4f2669f408b16a3c",
                "md5": "f9807cb34db0a3d0832f530a18c4c023",
                "sha256": "cd87ff6b3adb8d0651fc2bbbf7b4a21abc2c5bdc0680c8ec9c7b63d6d744b01a"
            },
            "downloads": -1,
            "filename": "ripplegw-0.0.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f9807cb34db0a3d0832f530a18c4c023",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 906662,
            "upload_time": "2024-05-23T18:48:05",
            "upload_time_iso_8601": "2024-05-23T18:48:05.543928Z",
            "url": "https://files.pythonhosted.org/packages/b9/1c/bff356a2a6d8ce804d36778d35e8492e8309cd0f824b4f2669f408b16a3c/ripplegw-0.0.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "52680a8d7851a44c8ed6bcdd353337d2dc4e0a891e7cc2895f7fe9bbe17cbbd3",
                "md5": "575865cbf53f91a9d1ff3748ce29ae44",
                "sha256": "f0514364a1f5c530294f0c46e0efde01fecf05e8ee7bd04db256f44e0428de55"
            },
            "downloads": -1,
            "filename": "ripplegw-0.0.9.tar.gz",
            "has_sig": false,
            "md5_digest": "575865cbf53f91a9d1ff3748ce29ae44",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 452325,
            "upload_time": "2024-05-23T18:48:07",
            "upload_time_iso_8601": "2024-05-23T18:48:07.042118Z",
            "url": "https://files.pythonhosted.org/packages/52/68/0a8d7851a44c8ed6bcdd353337d2dc4e0a891e7cc2895f7fe9bbe17cbbd3/ripplegw-0.0.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-23 18:48:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tedwards2412",
    "github_project": "ripple",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "ripplegw"
}
        
Elapsed time: 0.69789s