Metadata-Version: 2.1
Name: read-rapidpe
Version: 0.3.2
Summary: Read and analyse results generated by rapidpe-rift-pipe
Home-page: https://github.com/c0rychu/read-rapidpe
Author: Cory Chu
Author-email: cory@gwlab.page
Requires-Python: >=3.8,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: h5py (>=3.8.0,<4.0.0)
Requires-Dist: joblib (>=1.2.0,<2.0.0)
Requires-Dist: lalsuite (>=7.11,<8.0)
Requires-Dist: matplotlib (>=3.5.3,<4.0.0)
Requires-Dist: numpy (>=1.23.4,<2.0.0)
Requires-Dist: pandas (>=2.0.1,<3.0.0)
Requires-Dist: python-ligo-lw (>=1.8.3,<2.0.0)
Requires-Dist: scipy (>=1.8.1,<2.0.0)
Project-URL: Repository, https://git.ligo.org/yu-kuang.chu/read-rapidpe
Description-Content-Type: text/markdown

Read Rapid-PE
===

This is a package to read Rapid-PE outputs.

# Install
## Install from PyPI
This `read-rapidpe` package is available on PyPI: https://pypi.org/project/read-rapidpe/
```
pip install read-rapidpe
```

## Install in dev mode
```
git clone git@git.ligo.org:yu-kuang.chu/read-rapidpe.git
cd read-rapidpe
pip install -e . 
```

# Example Usage
## Reading files
```python
from read_rapidpe import RapidPE_result

run_dir = "path/to/run_dir"
result = RapidPE_result.from_run_dir(run_dir)
```
There are three optional arguments:
- `use_ligolw` ( default = `True` ) : whether to use `ligo.lw` to read XML files.
- `extrinsic_table` ( default = `True` ) : whether to load extrinsic parameter as well.
- `parallel_n` ( default = `1` ) : number of parallel jobs when reading XML files.

For example, one can do the following to speed up the reading process:
```python
result = RapidPE_result.from_run_dir(run_dir, use_ligolw=False, extrinsic_table=False, parallel_n=4)
```

## Plot marginalized log-likelihood on m1-m2 grid points
```python
import matplotlib.pyplot as plt

# Plot marginalized-log-likelihood over intrinsic parameter (mass_1/mass_2) grid points
plt.scatter(result.mass_1, result.mass_2, c=result.marg_log_likelihood )
plt.xlabel("$m_1$")
plt.ylabel("$m_2$")
plt.colorbar(label="$\ln(L_{marg})$")
```

## Plot interpolated likelihood
```python
import matplotlib.pyplot as plt
import numpy as np


# Create Random m1, m2 samples
m1 = np.random.random(10000)*5
m2 = np.random.random(10000)*5


# After calling result.do_interpolate_marg_log_likelihood_m1m2(), 
# the method result.log_likelihood(m1, m2) will be avalible.
result.do_interpolate_marg_log_likelihood_m1m2()

# Calculate interpolated log_likelihood
log_likelihood = result.log_likelihood(m1, m2)


# =============== Plotting ===============
# Plot interpolated likelihood 
plt.scatter(m1, m2, c=np.exp(log_likelihood), marker=".", s=3, alpha=0.1)

# Plot marginalized likelihood on grid points
plt.scatter(result.mass_1, result.mass_2, c=np.exp(result.marg_log_likelihood), marker="+", vmin=0)

plt.xlabel("$m_1$")
plt.ylabel("$m_2$")
plt.colorbar(label=r"$\mathcal{L}$")
```


## Convert to Pandas DataFrame

```python
import pandas as pd
from read_rapidpe import RapidPE_grid_point


grid_point = RapidPE_grid_point.from_xml("ILE_iteration_xxxxxxxxxx.samples.xml.gz")
pd.DataFrame(grid_point.extrinsic_table)
```


