64 lines
1.5 KiB
Python
64 lines
1.5 KiB
Python
import numpy as np
|
|
|
|
def GaussExpo(x, Peak, l, w):
|
|
sigma = 1/w
|
|
res1 = Peak * np.exp(-(x**2)/(2 * sigma**2))
|
|
peakX = np.argmax(res1)
|
|
res1 = res1[:peakX]
|
|
res2 = Peak * np.exp(-l * x[peakX:])
|
|
return np.append(res1, res2)
|
|
|
|
|
|
def getFlareRange(flux, peakIndex):
|
|
minInd = -np.inf
|
|
maxInd = np.inf
|
|
|
|
maxDelta = 0.005
|
|
meanVal = 1
|
|
maxBacklog = 20
|
|
maxForwardlog = 100
|
|
|
|
deltaCount = 0
|
|
delta = 100
|
|
prevFlux = flux[peakIndex]
|
|
for i in range(peakIndex-1, peakIndex - maxBacklog, -1):
|
|
delta = prevFlux - flux[i]
|
|
if(delta < maxDelta and abs(flux[i] - meanVal) < maxDelta):
|
|
deltaCount += 1
|
|
if(deltaCount > 3):
|
|
minInd = i
|
|
break
|
|
prevFlux = flux[i]
|
|
|
|
if(minInd == -np.inf):
|
|
minInd = peakIndex - maxBacklog
|
|
|
|
if(minInd < 0):
|
|
minInd = 0
|
|
|
|
while(np.isnan(flux[minInd].unmasked)):
|
|
minInd += 1
|
|
|
|
deltaCount = 0
|
|
delta = 100
|
|
prevFlux = flux[peakIndex]
|
|
for i in range(peakIndex+1, peakIndex + maxForwardlog, 1):
|
|
delta = prevFlux - flux[i]
|
|
if(delta < maxDelta and abs(flux[i] - meanVal) < maxDelta):
|
|
deltaCount += 1
|
|
if(deltaCount > 3):
|
|
maxInd = i
|
|
break
|
|
prevFlux = flux[i]
|
|
|
|
if(maxInd == np.inf):
|
|
maxInd = peakIndex + maxForwardlog
|
|
|
|
if(maxInd > len(flux)-1):
|
|
maxInd = len(flux)-1
|
|
|
|
while(np.isnan(flux[maxInd].unmasked)):
|
|
maxInd -= 1
|
|
|
|
return minInd, maxInd
|