Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ywx649999311/eztao
A Python Toolkit for AGN Time Series Analysis using CARMA models
https://github.com/ywx649999311/eztao
agn astronomy carma drw gaussian-processes time-series
Last synced: 6 days ago
JSON representation
A Python Toolkit for AGN Time Series Analysis using CARMA models
- Host: GitHub
- URL: https://github.com/ywx649999311/eztao
- Owner: ywx649999311
- License: mit
- Created: 2020-04-29T19:50:06.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-18T01:21:32.000Z (3 months ago)
- Last Synced: 2024-12-09T21:36:31.549Z (15 days ago)
- Topics: agn, astronomy, carma, drw, gaussian-processes, time-series
- Language: Python
- Homepage:
- Size: 11.6 MB
- Stars: 18
- Watchers: 4
- Forks: 9
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.rst
- License: LICENSE
Awesome Lists containing this project
README
![tests](https://github.com/ywx649999311/EzTao/workflows/tests/badge.svg)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ywx649999311/EzTao/v0.4.3?filepath=docs/notebooks)
[![Documentation Status](https://readthedocs.org/projects/eztao/badge/?version=latest)](https://eztao.readthedocs.io/en/latest/)
# EzTao (易道)
**EzTao** is a toolkit for conducting AGN time-series/variability analysis, mainly utilizing the continuous-time auto-regressive moving average model (CARMA)## Installation
```
pip install git+https://github.com/ywx649999311/EzTao.git
```
### Dependencies
>```
>python = ">=3.8,<3.12"
>celerite = ">= 0.3.0"
>scipy = "> 1.5.0"
>numba = ">= 0.57.0"
>matplotlib = ">=3.3.3"
>emcee = ">=0.3.0"
>```## Quick Examples
Let's first simulate a DRW/CARMA(1,0) process with a variance of 0.3^2 and a relaxation timescale of 100 days. This time series will have a total of 200 data points and span 10 years.
```python
import numpy as np
import matplotlib.pyplot as plt
from eztao.carma import DRW_term
from eztao.ts import gpSimRand# define a DRW kernel & and simulate a process
amp = 0.2
tau = 100
DRW_kernel = DRW_term(np.log(amp), np.log(tau))
t, y, yerr = gpSimRand(DRW_kernel, 10, 365*10, 200)# now, plot it
fig, ax = plt.subplots(1,1, dpi=150, figsize=(8,3))
ax.errorbar(t, y, yerr, fmt='.')
...
```
![drw_sim](include/drw_sim.png)We can fit the simulated time series to the DRW model and see how well we can recover the input parameters.
```python
from eztao.ts import drw_fitbest_fit = drw_fit(t, y, yerr)
print(f'Best-fit DRW parameters: {best_fit}')
```
```shell
Best-fit DRW parameters: [0.17356983 88.36262467]
```How does the power spectrum density (PSD) compare?
```python
from eztao.carma import gp_psd# get psd functions
true_psd = gp_psd(DRW_kernel)
best_psd = gp_psd(DRW_term(*np.log(best_fit)))# plot
fig, ax = plt.subplots(1,1, dpi=150, figsize=(6,3))
freq = np.logspace(-5, 2)
ax.plot(freq, true_psd(freq), label='Input PSD')
ax.plot(freq, best_psd(freq), label='Best-fit PSD')
...
```
![drw_psd](include/drw_psd.png)__Note:__ How well the input and best-fit PSD match is up to how good the best-fit parameters are, which is highly influenced by the quality of the input time series.
For more examples, please check out the [online documentation](https://eztao.readthedocs.io/en/latest/) or run the tutorial notebooks at ->
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ywx649999311/EzTao/v0.4.0?filepath=docs/notebooks).## Development
`poetry` is used to solve dependencies and to build/publish this package. Below shows how setup the environment for development (assuming you already have `poetry` installed on your machine). _**Warning:**_ `poetry` is having issue installing `llvmlite = 0.34.0` (used for `eztao = ^0.4.0`) under Python 3.9. The issue disappears for Python 3.8.1. Clone this repository, and enter the repository folder.
2. Create a python virtual environment and activate it (the virtual environment name must be '.venv').
```
python -m venv .venv
source .venv/bin/activate
```
3. Install dependencies and **EzTao** in editable mode.
```
poetry install
```Now you should be ready to start adding new features. Be sure to checkout the normal practice regarding how to use `poetry` on its website. When you are ready to push, also make sure the poetry.lock file is checked-in if any dependency has changed.
## Citation
We are working on a paper to describe the full implementation of **EzTao**. In the meantime, if you find **EzTao** useful for your research, please consider acknowledging **EzTao** using the following:```
@MISC{Yu2022,
author = {{Yu}, Weixiang and {Richards}, Gordon T.},
title = "{EzTao: Easier CARMA Modeling}",
keywords = {Software},
howpublished = {Astrophysics Source Code Library, record ascl:2201.001},
year = 2022,
month = jan,
eid = {ascl:2201.001},
pages = {ascl:2201.001},
archivePrefix = {ascl},
eprint = {2201.001},
adsurl = {https://ui.adsabs.harvard.edu/abs/2022ascl.soft01001Y},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
```