import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.style.use(['seaborn-v0_8-darkgrid', 'seaborn-v0_8-poster'])

ts = np.linspace(0, 100, 10000)

sig = 1 + (0.0001 * ts) + 0.001 * np.sin(2 * np.pi * ts / 20 + np.pi/2)
sig += np.random.normal(0, 0.0015, len(sig))

plt.plot(ts, sig, '.')
plt.show()

df = pd.DataFrame({'time': ts, 'brightness': sig})
df.to_csv('flattening.csv', index=False)

df['flat'] = df.brightness - df.brightness.rolling(50).median()
df['zero'] = df.flat - df.flat.median()

plt.figure(figsize=(12,5))
plt.subplot(121)
plt.plot(ts, sig, '.', alpha=0.5)
plt.xlabel('Time')
plt.ylabel('Brightness')
plt.subplot(122)
plt.plot(ts, df.zero, '.', color='C1', alpha=0.5)
plt.xlabel('Time')
plt.ylabel('Flattened Brightness')
plt.tight_layout()
plt.savefig('Flattened_Example.png', facecolor='#FFFFFF00')
plt.show()
