Skip to content

Commit bc32099

Browse files
committed
SF: use avg bins mode in ivscc_apfrequency
1 parent 7dfe0bc commit bc32099

File tree

1 file changed

+29
-17
lines changed

1 file changed

+29
-17
lines changed

Packages/MIES/MIES_SweepFormula_Operations.ipf

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2613,8 +2613,8 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26132613
variable i, numArgs, col, size, numExp
26142614
variable xAxisPercentage, yAxisPercentage
26152615
string xaxisOffset, yaxisOffset
2616-
variable method, level
2617-
string timeFreq, normalize, xAxisType
2616+
variable method, level, binWidth, numBins
2617+
string timeFreq, normalize, xAxisType, freqList, currentList, expList, binList
26182618
STRUCT RGBColor s
26192619

26202620
SFH_ASSERT(BSP_IsSweepBrowser(exd.graph), "ivscc_apfrequency only works with sweepbrowser")
@@ -2623,11 +2623,14 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26232623
SFH_ASSERT(numArgs <= numArgsMax, "ivscc_apfrequency has " + num2istr(numArgsMax) + " arguments at most.")
26242624
SFH_ASSERT(numArgs >= numArgsMin, "ivscc_apfrequency needs at least " + num2istr(numArgsMin) + " argument(s).")
26252625

2626-
xaxisOffset = SFH_GetArgumentAsText(exd, opShort, 0, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = {SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2627-
yaxisOffset = SFH_GetArgumentAsText(exd, opShort, 1, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = {SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2628-
xAxisPercentage = SFH_GetArgumentAsNumeric(exd, opShort, 2, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2629-
yAxisPercentage = SFH_GetArgumentAsNumeric(exd, opShort, 3, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2630-
[method, level, timeFreq, normalize, xAxisType] = SFO_GetApFrequencyArguments(exd, opShort, 4)
2626+
xaxisOffset = SFH_GetArgumentAsText(exd, opShort, 0, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = {SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2627+
yaxisOffset = SFH_GetArgumentAsText(exd, opShort, 1, defValue = SF_OP_IVSCCAPFREQUENCY_MIN, allowedValues = {SF_OP_IVSCCAPFREQUENCY_FIRST, SF_OP_IVSCCAPFREQUENCY_MIN, SF_OP_IVSCCAPFREQUENCY_MAX, SF_OP_IVSCCAPFREQUENCY_NONE})
2628+
xAxisPercentage = SFH_GetArgumentAsNumeric(exd, opShort, 2, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2629+
yAxisPercentage = SFH_GetArgumentAsNumeric(exd, opShort, 3, defValue = 100, checkFunc = BetweenZeroAndOneHoundred)
2630+
WAVE/WAVE wTmp = SFH_GetArgumentAsWave(exd, opShort, 4)
2631+
WAVE binRange = wTmp[0]
2632+
binWidth = SFH_GetArgumentAsNumeric(exd, opShort, 5, checkFunc = IsStrictlyPositiveAndFinite)
2633+
[method, level, timeFreq, normalize, xAxisType] = SFO_GetApFrequencyArguments(exd, opShort, 6)
26312634

26322635
WAVE/T sweepMap = SB_GetSweepMap(exd.graph)
26332636
col = FindDimlabel(sweepMap, COLS, "FileName")
@@ -2638,8 +2641,6 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26382641
numExp = DimSize(uniqueFiles, ROWS)
26392642
SFH_ASSERT(numExp > 0, "ivscc_apfrequency: data from at least one experiment has to be loaded")
26402643

2641-
Make/FREE/T/N=(numExp) elems
2642-
26432644
formula = "sel = select(selsweeps(), selstimset(\"*rheo*\", \"*supra*\"), selvis(all), selivsccsweepqc(passed))\r"
26442645
for(i = 0; i < numExp; i += 1)
26452646
sprintf expr, "selexpAD%d = select(selexp(\"%s\"), $sel, selchannels(AD0), selrange(E1))", i, uniqueFiles[i]
@@ -2662,16 +2663,21 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
26622663
formula = SF_AddExpressionToFormula(formula, expr)
26632664
endfor
26642665

2665-
elems[] = "$freq" + num2istr(p)
2666-
expr = "ivsccavg = avg([" + TextWaveToList(elems, ",", trailSep = 0) + "], group)"
2666+
Make/FREE/T/N=(numExp) freqs, currents, exps
2667+
freqs[] = "$freq" + num2istr(p)
2668+
freqList = TextWaveToList(freqs, ",", trailSep = 0)
2669+
currents[] = "$currentNorm" + num2istr(p)
2670+
currentList = TextWaveToList(currents, ",", trailSep = 0)
2671+
exps[] = "\"" + uniqueFiles[p] + "\""
2672+
expList = TextWaveToList(exps, ",", trailSep = 0)
2673+
2674+
sprintf expr, "ivsccavg = avg([%s], bins, [%f,%f],%f,[%s])", freqList, binRange[0], binRange[1], binWidth, currentList
26672675
formula = SF_AddExpressionToFormula(formula, expr)
26682676

2669-
elems[] = "$currentNorm" + num2istr(p)
2670-
expr = "ivscccurrentavg = avg([" + TextWaveToList(elems, ",", trailSep = 0) + "], group)"
2677+
sprintf expr, "ivscccurrentavg = avg([%s], bins, [%f,%f],%f,[%s])", currentList, binRange[0], binRange[1], binWidth, currentList
26712678
formula = SF_AddExpressionToFormula(formula, expr)
26722679

2673-
elems[] = "\"" + uniqueFiles[p] + "\""
2674-
expr = "ivscc_apfrequency_explist = [" + TextWaveToList(elems, ",", trailSep = 0) + "]"
2680+
sprintf expr, "ivscc_apfrequency_explist = [%s]", expList
26752681
formula = SF_AddExpressionToFormula(formula, expr)
26762682

26772683
WAVE/WAVE varStorage = GetSFVarStorage(exd.graph)
@@ -2720,7 +2726,7 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
27202726
endif
27212727
WAVE/WAVE wvY = SFH_ExecuteFormulaInternal(exd.graph, formula)
27222728
JWN_SetStringInWaveNote(wvY[0], SF_META_LEGEND_LINE_PREFIX, "ivscc_apfrequency average")
2723-
plotWITH[i][%FORMULAY] = wvY
2729+
plotWITH[numExp][%FORMULAY] = wvY
27242730
SFO_OperationIVSCCApFrequencySetPlotProperties(plotWITH[i][%FORMULAY], xAxisPercentage, yAxisPercentage)
27252731

27262732
if(!CmpStr(xaxisOffset, SF_OP_IVSCCAPFREQUENCY_FIRST))
@@ -2732,7 +2738,13 @@ Function/WAVE SFO_OperationIVSCCApFrequency(STRUCT SF_ExecutionData &exd)
27322738
else // SF_OP_IVSCCAPFREQUENCY_NONE
27332739
formula = "merge($ivscccurrentavg)"
27342740
endif
2735-
plotWITH[i][%FORMULAX] = SFH_ExecuteFormulaInternal(exd.graph, formula)
2741+
2742+
numBins = ceil((binRange[1] - binRange[0]) / binWidth)
2743+
Make/FREE/D/N=(numBins) binValues
2744+
binValues[] = binRange[0] + p * binWidth + binWidth / 2
2745+
binList = NumericWaveToList(binValues, ",", format = "%f", trailSep = 0)
2746+
sprintf formula, "[%s]", binList
2747+
plotWITH[numExp][%FORMULAX] = SFH_ExecuteFormulaInternal(exd.graph, formula)
27362748

27372749
Duplicate/O varBackup, varStorage
27382750
SFH_AddVariableToStorage(exd.graph, "ivscc_apfrequency_explist", wvResult)

0 commit comments

Comments
 (0)