Flare analysis
[1]:
%load_ext autoreload
%autoreload 2
import numpy as np
import scipy as sp
import pandas as pd
import matplotlib as mplt
import matplotlib.pyplot as plt
import astropy
import astropy.units as u
import mutis
from mutis.flares import BayesianBlocks
Load data
[2]:
data = pd.read_csv('data/gamma-I.dat', comment='!')
data
[2]:
| jyear | CFlux | CFluxErr | |
|---|---|---|---|
| 0 | 2008.605065 | 1.894027e-07 | 3.326300e-08 |
| 1 | 2008.624230 | 5.572932e-07 | 4.754800e-08 |
| 2 | 2008.643395 | 5.439230e-07 | 5.684800e-08 |
| 3 | 2008.662560 | 6.763391e-07 | 6.980500e-08 |
| 4 | 2008.681725 | 9.020173e-07 | 7.435100e-08 |
| ... | ... | ... | ... |
| 631 | 2020.763861 | 1.119233e-07 | 5.747500e-08 |
| 632 | 2020.783026 | 9.138770e-08 | 3.188800e-08 |
| 633 | 2020.802191 | 6.064478e-08 | 1.657600e-08 |
| 634 | 2020.821356 | 4.770228e-08 | 2.429000e-08 |
| 635 | 2020.840520 | 1.733534e-07 | 3.886500e-08 |
636 rows × 3 columns
Build signal and plot its Bayesian Block representation
[3]:
sig = mutis.Signal(data['jyear'], 1e6*data['CFlux'], 1e6*data['CFluxErr'])
fig, ax = plt.subplots(figsize=(10,6))
bayblocks = BayesianBlocks(sig, p=1e-8)
bayblocks.get_flares()
bayblocks.signal.plot()
bayblocks.plot()
Get flares from BayesianBlocks, and plot them
[4]:
fig, ax = plt.subplots(figsize=(10,6))
bayblocks.signal.plot()
bayblocks.get_flares()
bayblocks.plot('color.strict')
plt.axhline(y=np.median(sig.values), color='r', linestyle='--', alpha=1, label='1 MAD')
plt.axhline(y=np.median(sig.values)+np.sqrt(np.median((sig.values-np.median(sig.values))**2)), color='m', linestyle='--', alpha=1, label='Mad')
for flare in bayblocks.get_flare_list():
flare.plot()
plt.legend()
plt.show()
[ ]: