flaredetector: util: add function to mark peak/valley borders in folded lcs
This commit is contained in:
@@ -95,3 +95,47 @@ def getFoldedBestFit(foldedLc):
|
|||||||
sineFit = sine(foldedLc.phase[filt].value, *popt)
|
sineFit = sine(foldedLc.phase[filt].value, *popt)
|
||||||
sineFit *= multi
|
sineFit *= multi
|
||||||
return phase, sineFit
|
return phase, sineFit
|
||||||
|
|
||||||
|
def getFoldedFitPeakValley(sineFit):
|
||||||
|
return np.argmin(sineFit), np.argmax(sineFit)
|
||||||
|
|
||||||
|
def findNearestIndexOfValue(array, value):
|
||||||
|
array = np.asarray(array)
|
||||||
|
idx = (np.abs(array - value)).argmin()
|
||||||
|
return idx
|
||||||
|
|
||||||
|
def getPhaseRangesNearPeak(maxArgs, phase):
|
||||||
|
minPhase = phase[maxArgs[0]]
|
||||||
|
maxPhase = phase[maxArgs[1]]
|
||||||
|
totalPhase = abs(phase[0]) + abs(phase[-1])
|
||||||
|
|
||||||
|
phasePart = totalPhase * 0.3 / 2
|
||||||
|
minPhaseBounds = []
|
||||||
|
if(minPhase - phasePart < phase[0]):
|
||||||
|
minPhaseBounds.append((phase[0], minPhase + phasePart))
|
||||||
|
minPhaseBounds.append((phase[-1] + (minPhase - phasePart + phase[0]), phase[-1]))
|
||||||
|
elif(minPhase + phasePart > phase[-1]):
|
||||||
|
minPhaseBounds.append((minPhase - phasePart, phase[-1]))
|
||||||
|
minPhaseBounds.append((phase[0], phase[0] + (minPhase + phasePart - phase[-1])))
|
||||||
|
else:
|
||||||
|
minPhaseBounds.append((minPhase - phasePart, minPhase + phasePart))
|
||||||
|
|
||||||
|
maxPhaseBounds = []
|
||||||
|
if(maxPhase - phasePart < phase[0]):
|
||||||
|
maxPhaseBounds.append((phase[0], maxPhase + phasePart))
|
||||||
|
maxPhaseBounds.append((phase[-1] + (maxPhase - phasePart + phase[0]), phase[-1]))
|
||||||
|
elif(maxPhase + phasePart > phase[-1]):
|
||||||
|
maxPhaseBounds.append((maxPhase - phasePart, phase[-1]))
|
||||||
|
maxPhaseBounds.append((phase[0], phase[0] + (maxPhase + phasePart - phase[-1])))
|
||||||
|
else:
|
||||||
|
maxPhaseBounds.append((maxPhase - phasePart, maxPhase + phasePart))
|
||||||
|
|
||||||
|
minPhaseBoundsIndices = []
|
||||||
|
for l in minPhaseBounds:
|
||||||
|
minPhaseBoundsIndices.append([findNearestIndexOfValue(phase, lv) for lv in l])
|
||||||
|
|
||||||
|
maxPhaseBoundsIndices = []
|
||||||
|
for l in maxPhaseBounds:
|
||||||
|
maxPhaseBoundsIndices.append([findNearestIndexOfValue(phase, lv) for lv in l])
|
||||||
|
|
||||||
|
return minPhaseBoundsIndices, maxPhaseBoundsIndices
|
||||||
|
|||||||
Reference in New Issue
Block a user