flaredetector: use correct peak index for checking if flare is valid
This commit is contained in:
@@ -16,19 +16,18 @@ def moveFluxForFit(curPeakIndex, flux):
|
||||
flarePoints = np.array(np.linspace(minInd, maxInd, num=maxInd-minInd+1), dtype=int)
|
||||
flareFitDataPoints = flarePoints - curPeakIndex
|
||||
Peak = flux[curPeakIndex] - 1
|
||||
return flarePoints, flareFitDataPoints, Peak
|
||||
return flarePoints, flareFitDataPoints, Peak, maxInd - curPeakIndex
|
||||
|
||||
def isValidFlarePoint(flareData):
|
||||
def isValidFlarePoint(flareData, newPeakIndex):
|
||||
threshold = 0.005
|
||||
peakIndex = np.argmax(flareData)
|
||||
if((flareData[peakIndex-1] > threshold and flareData[peakIndex+1] > threshold) or
|
||||
(flareData[peakIndex+1] > threshold and flareData[peakIndex+2] > threshold)):
|
||||
if((flareData[newPeakIndex-1] > threshold and flareData[newPeakIndex+1] > threshold) or
|
||||
(flareData[newPeakIndex+1] > threshold and flareData[newPeakIndex+2] > threshold)):
|
||||
return True
|
||||
return False
|
||||
|
||||
def calculateFitForFlare(lightcurve, peakIndex):
|
||||
flarePoints, flareFitDataPoints, Peak = moveFluxForFit(peakIndex, lightcurve.flux)
|
||||
if(not isValidFlarePoint(lightcurve.flux[flarePoints]-1)):
|
||||
flarePoints, flareFitDataPoints, Peak, newPeakIndex = moveFluxForFit(peakIndex, lightcurve.flux)
|
||||
if(not isValidFlarePoint(lightcurve.flux[flarePoints]-1, newPeakIndex)):
|
||||
raise Exception("Flare not valid: not enough datapoints above mean")
|
||||
popt, pcov = curve_fit(lambda x, l, w: GaussExpo(x, Peak, l, w), flareFitDataPoints, lightcurve.flux[flarePoints]-1)
|
||||
fit = GaussExpo(flareFitDataPoints, Peak, *popt)
|
||||
|
||||
Reference in New Issue
Block a user