flaredetector: util: optimize: improve minima detection

This commit is contained in:
2025-04-27 20:29:46 +02:00
parent d930d7896b
commit 4ad7974bb1
+18 -2
View File
@@ -429,7 +429,9 @@ def getOptimizedFold(normalizedLC, preferedFoldedFitType):
spotModulationBefore = spotModulation spotModulationBefore = spotModulation
if(len(fitMaximaArgs) > 1): if(len(fitMaximaArgs) > 1):
print("fitMaximaArgs > 1: ", fitMaximaArgs) print("fitMaximaArgs > 1: ", fitMaximaArgs)
if(len(fitMaximaArgs) == 2 and fitMaximaArgs[0] > len(phase)*0.1 and fitMaximaArgs[1] < len(phase)*0.1): print(fitMaximaArgs[0], len(phase)*0.1, fitMaximaArgs[1], len(phase)*0.9)
print(fitMaximaArgs[0] > len(phase)*0.1, fitMaximaArgs[1] < len(phase)*0.9)
if(len(fitMaximaArgs) == 2 and fitMaximaArgs[0] > len(phase)*0.1 and fitMaximaArgs[1] < len(phase)*0.9):
halfPeriod = period/2 halfPeriod = period/2
for lsP, blsP in zip(lsPeriods, blsPeriods): for lsP, blsP in zip(lsPeriods, blsPeriods):
if(abs(lsP.value - halfPeriod) < period*0.05): if(abs(lsP.value - halfPeriod) < period*0.05):
@@ -454,9 +456,23 @@ def getOptimizedFold(normalizedLC, preferedFoldedFitType):
fitMinimaArgs = argrelextrema(np.asarray(fit), np.less)[0] fitMinimaArgs = argrelextrema(np.asarray(fit), np.less)[0]
fitMinima = phase[0] fitMinima = phase[0]
fitMinimaArg = 0
newFitMinimaArgs = []
for args in fitMinimaArgs: for args in fitMinimaArgs:
if(abs(phase[args]) < abs(fitMinima)): print("Phases: ", fit[0], fit[len(phase)-1], fit[args])
if(fit[0] < fit[args] and fit[len(fit)-1] < fit[args]):
print("Found new minima")
newFitMinimaArgs.append(0)
newFitMinimaArgs.append(args)
newFitMinimaArgs = set(newFitMinimaArgs)
print(newFitMinimaArgs)
for args in newFitMinimaArgs:
if(abs(phase[args]) < abs(fitMinima) and fit[args] < fit[fitMinimaArg]):
fitMinima = phase[args] fitMinima = phase[args]
fitMinimaArg = args
if(abs(fitMinima) < phaseLength*0.01): if(abs(fitMinima) < phaseLength*0.01):
isValid = True isValid = True