Metadata-Version: 2.4
Name: distmarg
Version: 0.1.0
Summary: Distance-marginalized gravitational-wave likelihood in the (rho_mf, v*) basis, array-API compatible
License-Expression: MIT
Project-URL: Repository, https://github.com/ColmTalbot/distance_marginalization
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Astronomy
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.24
Requires-Dist: scipy>=1.15
Requires-Dist: array-api-compat>=1.4
Provides-Extra: rust
Requires-Dist: distmarg-rs==0.1.0; extra == "rust"
Provides-Extra: jax
Requires-Dist: jax>=0.4; extra == "jax"
Provides-Extra: bilby
Requires-Dist: bilby; extra == "bilby"
Requires-Dist: astropy; extra == "bilby"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: scipy; extra == "test"
Requires-Dist: mpmath; extra == "test"

# distmarg

Distance-marginalized gravitational-wave likelihood, `ln(L_D / Z_N)`, in the
`(rho_mf, v*)` basis. It is accurate to about 1e-4 in `ln L` over the whole
parameter space, needs no lookup table, and evaluates in the namespace of its
inputs: numpy, JAX (with `jit`, `vmap` and `grad`), torch or CuPy.

```bash
pip install distmarg            # pure Python
pip install "distmarg[rust]"    # plus the compiled backend for numpy inputs
```

```python
import numpy as np
from distmarg import DistanceMarginalization

d = np.geomspace(100, 5000, 4096)
dm = DistanceMarginalization(d, 2 * np.log(d), phase_marginalization=True)
# or DistanceMarginalization.from_bilby_prior(bilby_prior, phase_marginalization=True)
dm.ln_likelihood_ratio(rho_mf=12.0, rho_opt=10.0, d_ref=1000.0)
```

For JAX, torch or CuPy inputs, set `SCIPY_ARRAY_API=1` before SciPy is first
imported. With JAX, also enable `jax_enable_x64`.

The method, accuracy and benchmarks are documented in the
[repository](https://github.com/ColmTalbot/distance_marginalization).
