Skip to content

Commit 08deb18

Browse files
committed
WIP: Use different method for calculating start position for accepted average fit
1 parent 7f33e9d commit 08deb18

File tree

1 file changed

+35
-13
lines changed

1 file changed

+35
-13
lines changed

Packages/MIES/MIES_SweepFormula_PSX.ipf

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2255,14 +2255,14 @@ static Function PSX_UpdateAverageTraces(string win, WAVE/T eventIndexFromTraces,
22552255

22562256
variable i, idx, numEvents, eventState, start, stop
22572257
variable acceptIndex, rejectIndex, undetIndex, extractStartAbs, extractStopAbs, fitStartAbs
2258-
string extAllGraph, name
2258+
string extAllGraph, name, path
22592259

22602260
extAllGraph = PSX_GetAllEventGraph(win)
22612261

22622262
numEvents = DimSize(eventIndexFromTraces, ROWS)
22632263

22642264
Make/WAVE/FREE/N=(numEvents) contAverageAll, contAverageAccept, contAverageReject, contAverageUndet
2265-
Make/FREE/D/N=(numEvents) eventStopTime, eventPeakTime
2265+
Make/FREE/D/N=(numEvents) eventOnsetTime, eventPeakTime, eventStopTime, eventKernelAmp
22662266

22672267
for(i = 0; i < numEvents; i += 1)
22682268
idx = str2num(eventIndexFromTraces[i])
@@ -2285,8 +2285,12 @@ static Function PSX_UpdateAverageTraces(string win, WAVE/T eventIndexFromTraces,
22852285
// single event waves are zeroed in x-direction to extractStartAbs
22862286
[extractStartAbs, extractStopAbs] = PSX_GetSingleEventRange(psxEvent, sweepDataOffFilt, idx)
22872287
eventStopTime[acceptIndex] = extractStopAbs - extractStartAbs
2288+
eventOnsetTime[acceptIndex] = psxEvent[idx][%$"Onset Time"] - extractStartAbs
22882289
eventPeakTime[acceptIndex] = psxEvent[idx][%peak_t] - extractStartAbs
22892290

2291+
path = SF_META_USER_GROUP + PSX_JWN_PARAMETERS + "/" + SF_OP_PSX_KERNEL
2292+
eventKernelAmp[acceptIndex] = JWN_GetNumberFromWaveNote(psxEvent, path + "/amp")
2293+
22902294
acceptIndex += 1
22912295
break
22922296
case PSX_REJECT:
@@ -2311,8 +2315,8 @@ static Function PSX_UpdateAverageTraces(string win, WAVE/T eventIndexFromTraces,
23112315
PSX_UpdateAverageWave(contAverageUndet, undetIndex, averageDFR, PSX_UNDET)
23122316
PSX_UpdateAverageWave(contAverageAll, numEvents, averageDFR, PSX_ALL)
23132317

2314-
Redimension/N=(acceptIndex) eventStopTime
2315-
PSX_FitAcceptAverage(win, averageDFR, eventPeakTime, eventStopTime)
2318+
Redimension/N=(acceptIndex) eventOnsetTime, eventPeakTime, eventStopTime, eventKernelAmp
2319+
PSX_FitAcceptAverage(win, averageDFR, eventOnsetTime, eventPeakTime, eventStopTime, eventKernelAmp)
23162320
End
23172321

23182322
/// @brief Helper function to update the average waves for the all event graph
@@ -2336,10 +2340,11 @@ static Function/DF PSX_GetAverageFolder(string win)
23362340
endif
23372341
End
23382342

2339-
static Function PSX_FitAcceptAverage(string win, DFREF averageDFR, WAVE eventPeakTime, WAVE eventStopTime)
2343+
static Function PSX_FitAcceptAverage(string win, DFREF averageDFR, WAVE eventOnsetTime, WAVE eventPeakTime, WAVE eventStopTime, WAVE eventKernelAmp)
23402344

23412345
string specialEventPanel, str, htmlStr, rawCode, browser, msg, fitFunc
2342-
variable err, numAveragePoints, start, stop, meanStopTime, meanPeakTime
2346+
variable err, numAveragePoints, start, stop, meanStopTime, meanOnsetTime, meanPeakTime, meanKernelAmp
2347+
variable xStart, xEnd, yStart, yEnd, lowerThreshold, upperThreshold
23432348

23442349
WAVE acceptedAverageFit = GetPSXAcceptedAverageFitWaveFromDFR(averageDFR)
23452350

@@ -2364,22 +2369,39 @@ static Function PSX_FitAcceptAverage(string win, DFREF averageDFR, WAVE eventPea
23642369
FastOp acceptedAverageFit = (NaN)
23652370
CopyScales average, acceptedAverageFit
23662371

2372+
WAVE/Z eventOnsetTimeClean = ZapNaNs(eventOnsetTime)
2373+
if(WaveExists(eventOnsetTimeClean))
2374+
meanOnsetTime = mean(eventOnsetTimeClean)
2375+
else
2376+
meanOnsetTime = Inf
2377+
endif
2378+
23672379
WAVE/Z eventStopTimeClean = ZapNaNs(eventStopTime)
23682380
if(WaveExists(eventStopTimeClean))
23692381
meanStopTime = mean(eventStopTimeClean)
23702382
else
23712383
meanStopTime = Inf
23722384
endif
23732385

2386+
WAVE/Z eventKernelAmpClean = ZapNaNs(eventKernelAmp)
2387+
ASSERT(WaveExists(eventKernelAmpClean), "Could not find any events with finite kernelAmp")
2388+
meanKernelAmp = mean(eventKernelAmpClean)
2389+
23742390
WAVE/Z eventPeakTimeClean = ZapNaNs(eventPeakTime)
2375-
if(WaveExists(eventPeakTimeClean))
2376-
meanPeakTime = mean(eventPeakTime)
2377-
else
2378-
ASSERT(0, "Could not find any events with finite peak_t")
2379-
endif
2391+
ASSERT(WaveExists(eventPeakTimeClean), "Could not find any events with finite peak_t")
2392+
meanPeakTime = mean(eventPeakTime)
2393+
2394+
xStart = max(IndexToScale(average, 0, ROWS), meanOnsetTime)
2395+
xEnd = min(IndexToScale(average, DimSize(average, ROWS) - 1, ROWS), meanPeakTime)
2396+
ASSERT(xStart < xEnd, "xStart must be smaller than xEnd")
2397+
yStart = average(xStart)
2398+
yEnd = average(xEnd)
2399+
2400+
lowerThreshold = GetSetVariable(specialEventPanel, "setvar_fit_start_amplitude") * PERCENT_TO_ONE
2401+
upperThreshold = 0.80
23802402

2381-
start = 0.1 * meanPeakTime
2382-
stop = min(IndexToScale(average, DimSize(average, ROWS) - 1, ROWS), meanStopTime)
2403+
[start, err] = PSX_CalculateRiseTime(average, xStart, xEnd, yStart, yEnd, lowerThreshold, upperThreshold, meanKernelAmp)
2404+
stop = min(IndexToScale(average, DimSize(average, ROWS) - 1, ROWS), meanStopTime)
23832405

23842406
AssertOnAndClearRTError()
23852407
fitFunc = GetPopupMenuString(specialEventPanel, "popupmenu_accept_fit_function")

0 commit comments

Comments
 (0)