diff --git a/Packages/MIES/MIES_SweepFormula_PSX.ipf b/Packages/MIES/MIES_SweepFormula_PSX.ipf index 943afcbb92..bcd49b0281 100644 --- a/Packages/MIES/MIES_SweepFormula_PSX.ipf +++ b/Packages/MIES/MIES_SweepFormula_PSX.ipf @@ -591,7 +591,7 @@ static Function [variable baseline_t, variable baseline] PSX_CalculateEventBasel variable range - WaveStats/M=1/Q/R=(peak_t - 4 * kernelRiseTau, peak_t) sweepDataOffFilt + WaveStats/M=1/Q/R=(peak_t - 10 * kernelRiseTau, peak_t) sweepDataOffFilt if(kernelAmp > 0) baseline_t = V_minloc @@ -692,12 +692,12 @@ static Function [WAVE/D peakX, WAVE/D peakY] PSX_AnalyzePeaks(WAVE sweepDataOffF return [peakX, peakY] End - -static Function PSX_GetGoodTauFallback(WAVE tau) - - WaveStats/Q tau - return V_avg + 2 * V_sdev -End +// +//static Function PSX_GetGoodTauFallback(WAVE tau) +// +// WaveStats/Q tau +// return V_avg + 2 * V_sdev +//End static Function PSX_GetGoodTau(WAVE psxEvent) @@ -728,43 +728,47 @@ static Function PSX_GetGoodTauImpl(WAVE psxEvent) if(!WaveExists(tau)) return NaN endif + + WaveStats/Q tau + + return V_avg + 2.5 * V_sdev - numEvents = DimSize(tau, ROWS) - - if(numEvents <= 10) - return PSX_GetGoodTauFallback(tau) - endif - - Make/FREE/D/N=0 hist - Histogram/B=5/DP/DEST=hist tau; err = GetRTError(1) - - if(err) - return PSX_GetGoodTauFallback(tau) - endif - - // Gaussian peak: y = K0+K1*exp(-((x-K2)/K3)^2) - // with: - // K0 = y0 - // K1 = A - // K2 = x0 - // K3 = \sqrt{2} * sigma - [WAVE coefWave, WAVE fitWave] = PSX_FitHistogram(hist) - - // Duplicate/O fitWave, root:fitwave - - if(!WaveExists(coefWave)) - return PSX_GetGoodTauFallback(tau) - endif - - // XXXX sigma away from the center - xVal = coefWave[2] + 2.5 * (coefWave[3] / sqrt(2)) - return xval // Gauss1D(coefWave, xVal) +// numEvents = DimSize(tau, ROWS) +// +// if(numEvents <= 10) +// return PSX_GetGoodTauFallback(tau) +// endif +// +// Make/FREE/D/N=0 hist +// Histogram/B=5/DP/DEST=hist tau; err = GetRTError(1) +// +// if(err) +// return PSX_GetGoodTauFallback(tau) +// endif +// +// // Gaussian peak: y = K0+K1*exp(-((x-K2)/K3)^2) +// // with: +// // K0 = y0 +// // K1 = A +// // K2 = x0 +// // K3 = \sqrt{2} * sigma +// [WAVE coefWave, WAVE fitWave] = PSX_FitHistogram(hist) +// +// // Duplicate/O fitWave, root:fitwave +// +// if(!WaveExists(coefWave)) +// return PSX_GetGoodTauFallback(tau) +// endif +// +// // XXXX sigma away from the center +// xVal = coefWave[2] + 2.5 * (coefWave[3] / sqrt(2)) +// return xval // Gauss1D(coefWave, xVal) End /// @brief Return the x-axis range useful for displaying and extracting a single event static Function [variable first, variable last] PSX_GetSingleEventRange(WAVE psxEvent, WAVE sweepDataOffFilt, variable index) - variable numEvents, offset + variable numEvents, offset, onset, baseline numEvents = DimSize(psxEvent, ROWS) @@ -776,7 +780,14 @@ static Function [variable first, variable last] PSX_GetSingleEventRange(WAVE psx offset = PSX_DEFAULT_X_START_OFFSET endif - first = psxEvent[index][%baseline_t] // - 0.5 + onset = psxEvent[index][%$"Onset Time"] + baseline = psxEvent[index][%baseline_t] + + if(!IsNaN(onset)) + first = min(onset, baseline) + else + first = baseline + endif if(index == numEvents - 1) last = min(first + offset, IndexToScale(sweepDataOffFilt, DimSize(sweepDataOffFilt, ROWS) - 1, ROWS)) @@ -2255,7 +2266,7 @@ static Function PSX_UpdateAverageTraces(string win, WAVE/T eventIndexFromTraces, fitStartAbs = psxEvent[idx][%$"Onset Time"] if(IsFinite(fitStartAbs)) - ASSERT(fitStartAbs > extractStartAbs, "Unexpected fit/extraction start positions") + ASSERT(fitStartAbs >= extractStartAbs, "Unexpected fit/extraction start positions") eventStartTime[acceptIndex] = fitStartAbs - extractStartAbs eventStopTime[acceptIndex] = extractStopAbs - extractStartAbs diff --git a/Packages/MIES/MIES_WaveDataFolderGetters.ipf b/Packages/MIES/MIES_WaveDataFolderGetters.ipf index c1c182c427..24aa398c09 100644 --- a/Packages/MIES/MIES_WaveDataFolderGetters.ipf +++ b/Packages/MIES/MIES_WaveDataFolderGetters.ipf @@ -8232,7 +8232,7 @@ End /// in the filtered sweep wave /// - 4/peak_t: peak time /// - 5/baseline: Maximum (negative kernel amp sign) or minimum (positive kernel amp sign) in the range of -/// [peak_t – 4 * kernelRiseTau, peak_t], averaged over +/- 5 points, in the filtered sweep wave +/// [peak_t – 10 * kernelRiseTau, peak_t], averaged over +/- 5 points, in the filtered sweep wave /// - 6/baseline_t: baseline time /// - 7/amplitude: Relative amplitude: [3] - [5] /// - 8/iei: Time difference to previous event (inter event interval) [ms]