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()
../_images/recipes_Flare_analysis_5_0.png

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()
../_images/recipes_Flare_analysis_7_0.png
[ ]: