flaredetector: util: add funnction to calculate bets fit for a folded lc

This commit is contained in:
2024-06-19 10:55:41 +02:00
parent c5c2ac23f0
commit 99b05aa76e
+15
View File
@@ -1,5 +1,6 @@
import numpy as np
from scipy.signal import find_peaks
from scipy.optimize import curve_fit
def findMaxIndices(lc, num=3, distance=100, height=(None, None), sortByHighest=False,
minimalLC=False):
@@ -80,3 +81,17 @@ def convertStarndardIndexToFoldedIndex(foldedLc, standardIndex):
break
return cycle, foldedIndex
def getFoldedBestFit(foldedLc):
def sine(t, A, w, p, c): return A * np.sin(w*t + p) + c
flux = foldedLc.flux
filt = ~np.isnan(flux)
multi = 1
if(np.mean(flux).value > 10):
multi = float(np.mean(flux).value)
flux = foldedLc.normalize().flux
phase = foldedLc.phase[filt].value
popt, pcov = curve_fit(sine, phase, flux[filt])
sineFit = sine(foldedLc.phase[filt].value, *popt)
sineFit *= multi
return phase, sineFit