Skip to content

Commit

Permalink
Merge pull request #1316 from AllenInstitute/bugfix/1316-wrong-conver…
Browse files Browse the repository at this point in the history
…sion-pipette-resistance

Bugfix/1316 wrong conversion pipette resistance
  • Loading branch information
t-b authored Apr 14, 2022
2 parents d791016 + f33460a commit 2688690
Show file tree
Hide file tree
Showing 48 changed files with 863 additions and 331 deletions.
51 changes: 26 additions & 25 deletions Packages/MIES/MIES_AmplifierInteraction.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -132,50 +132,50 @@ Function AI_GetMCCScale(clampMode, func)
if(clampMode == V_CLAMP_MODE)
switch(func)
case MCC_SETHOLDING_FUNC:
return 1e-3
return MILLI_TO_ONE
case MCC_GETHOLDING_FUNC:
return 1e+3
return ONE_TO_MILLI
case MCC_SETPIPETTEOFFSET_FUNC:
return 1e-3
return MILLI_TO_ONE
case MCC_GETPIPETTEOFFSET_FUNC:
case MCC_AUTOPIPETTEOFFSET_FUNC:
return 1e+3
return ONE_TO_MILLI
case MCC_SETRSCOMPBANDWIDTH_FUNC:
return 1e+3
return ONE_TO_MILLI
case MCC_GETRSCOMPBANDWIDTH_FUNC:
return 1e-3
return MILLI_TO_ONE
case MCC_SETWHOLECELLCOMPRESIST_FUNC:
return 1e+6
return ONE_TO_MICRO
case MCC_GETWHOLECELLCOMPRESIST_FUNC:
return 1e-6
return MICRO_TO_ONE
case MCC_SETWHOLECELLCOMPCAP_FUNC:
return 1e-12
return PICO_TO_ONE
case MCC_GETWHOLECELLCOMPCAP_FUNC:
return 1e+12
return ONE_TO_PICO
default:
return 1
break
endswitch
else // IC and I=0
switch(func)
case MCC_SETBRIDGEBALRESIST_FUNC:
return 1e+6
return ONE_TO_MICRO
case MCC_GETBRIDGEBALRESIST_FUNC:
case MCC_AUTOBRIDGEBALANCE_FUNC:
return 1e-6
return MICRO_TO_ONE
case MCC_SETHOLDING_FUNC:
return 1e-12
return PICO_TO_ONE
case MCC_GETHOLDING_FUNC:
return 1e+12
return ONE_TO_PICO
case MCC_SETPIPETTEOFFSET_FUNC:
return 1e-3
return MILLI_TO_ONE
case MCC_GETPIPETTEOFFSET_FUNC:
case MCC_AUTOPIPETTEOFFSET_FUNC:
return 1e+3
return ONE_TO_MILLI
case MCC_SETNEUTRALIZATIONCAP_FUNC:
return 1e-12
return PICO_TO_ONE
case MCC_GETNEUTRALIZATIONCAP_FUNC:
return 1e+12
return ONE_TO_PICO
default:
return 1
break
Expand Down Expand Up @@ -718,8 +718,9 @@ static Function AI_MIESAutoPipetteOffset(device, headStage)
clampMode = DAG_GetHeadstageMode(device, headStage)

ASSERT(clampMode == V_CLAMP_MODE || clampMode == I_CLAMP_MODE, "Headstage must be in VC/IC mode to use this function")
//calculate delta current to reach zero
vdelta = (TPResults[%BaselineSteadyState][headstage] * TPResults[%ResistanceSteadyState][headstage]) / 1000 // set to mV
// calculate delta current to reach zero
// @todo check for IC
vdelta = ((TPResults[%BaselineSteadyState][headstage] * PICO_TO_ONE) * (TPResults[%ResistanceSteadyState][headstage] * MEGA_TO_ONE)) * ONE_TO_MILLI
// get current DC V offset
offset = AI_SendToAmp(device, headStage, clampMode, MCC_GETPIPETTEOFFSET_FUNC, nan)
// add delta to current DC V offset
Expand Down Expand Up @@ -972,13 +973,13 @@ static Function AI_RetrieveGains(device, headstage, clampMode, ADGain, DAGain)

ASSERT(clampMode == tds.OperatingMode, "Non matching clamp mode from MCC application")

ADGain = tds.ScaleFactor * tds.Alpha / 1000
ADGain = tds.ScaleFactor * tds.Alpha / ONE_TO_MILLI
clampMode = tds.OperatingMode

if(tds.OperatingMode == V_CLAMP_MODE)
DAGain = tds.ExtCmdSens * 1000
DAGain = tds.ExtCmdSens * ONE_TO_MILLI
elseif(tds.OperatingMode == I_CLAMP_MODE || tds.OperatingMode == I_EQUAL_ZERO_MODE)
DAGain =tds.ExtCmdSens * 1e12
DAGain = tds.ExtCmdSens * ONE_TO_PICO
endif
End

Expand Down Expand Up @@ -1570,15 +1571,15 @@ Function AI_FillAndSendAmpliferSettings(device, sweepNo)
ampSettingsWave[0][23][i] = tds.ScaleFactor
ampSettingsWave[0][24][i] = tds.ScaleFactorUnits
ampSettingsWave[0][25][i] = tds.LPFCutoff
ampSettingsWave[0][26][i] = tds.MembraneCap * 1e+12 // converts F to pF
ampSettingsWave[0][26][i] = tds.MembraneCap * ONE_TO_PICO // converts F to pF
ampSettingsWave[0][27][i] = tds.ExtCmdSens
ampSettingsWave[0][28][i] = tds.RawOutSignal
ampSettingsWave[0][29][i] = tds.RawScaleFactor
ampSettingsWave[0][30][i] = tds.RawScaleFactorUnits
ampSettingsWave[0][31][i] = tds.HardwareType
ampSettingsWave[0][32][i] = tds.SecondaryAlpha
ampSettingsWave[0][33][i] = tds.SecondaryLPFCutoff
ampSettingsWave[0][34][i] = tds.SeriesResistance * 1e-6 // converts Ω to MΩ
ampSettingsWave[0][34][i] = tds.SeriesResistance * ONE_TO_MEGA // converts Ω to MΩ

ampSettingsTextWave[0][0][i] = tds.OperatingModeString
ampSettingsTextWave[0][1][i] = tds.ScaledOutSignalString
Expand Down
2 changes: 1 addition & 1 deletion Packages/MIES/MIES_AnalysisBrowser.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -1852,7 +1852,7 @@ static Function AB_LoadSweepFromNWBgeneric(h5_groupID, nwbVersion, channelList,

configSweep[numEntries][%type] = p.channelType
configSweep[numEntries][%number] = p.channelNumber
configSweep[numEntries][%timeMS] = trunc(DimDelta(loaded, ROWS) * 1000)
configSweep[numEntries][%timeMS] = trunc(DimDelta(loaded, ROWS) * ONE_TO_MILLI)
configSweep[numEntries][3] = -1 // -1 for faked Config_Sweeps Waves

// set unit in config_wave from WaveNote of loaded dataset
Expand Down
2 changes: 1 addition & 1 deletion Packages/MIES/MIES_AnalysisFunctions.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -959,7 +959,7 @@ Function SetDAScale(device, headstage, [absolute, relative, offset, roundTopA])
ctrl = GetPanelControl(DAC, CHANNEL_TYPE_DAC, CHANNEL_CONTROL_SCALE)

if(!ParamIsDefault(absolute))
amps = absolute / 1e-12
amps = absolute * ONE_TO_PICO
elseif(!ParamIsDefault(relative))
lbl = GetSpecialControlLabel(CHANNEL_TYPE_DAC, CHANNEL_CONTROL_SCALE)
amps = DAG_GetNumericalValue(device, lbl, index = DAC) * relative
Expand Down
8 changes: 4 additions & 4 deletions Packages/MIES/MIES_AnalysisFunctions_Dashboard.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -1000,10 +1000,10 @@ Function AD_PlotBounds(string browser, variable sweepNo)
Make/O/N=2 dfr:chirpBoundLowerMin/WAVE=lowerMin

// V -> mV
upperMax[] = baselineVoltage * 1e3 + outerRelativeBound
upperMin[] = baselineVoltage * 1e3 + innerRelativeBound
lowerMax[] = baselineVoltage * 1e3 - innerRelativeBound
lowerMin[] = baselineVoltage * 1e3 - outerRelativeBound
upperMax[] = baselineVoltage * ONE_TO_MILLI + outerRelativeBound
upperMin[] = baselineVoltage * ONE_TO_MILLI + innerRelativeBound
lowerMax[] = baselineVoltage * ONE_TO_MILLI - innerRelativeBound
lowerMin[] = baselineVoltage * ONE_TO_MILLI - outerRelativeBound

GetAxis/W=$graph/Q bottom
lastX = V_max
Expand Down
12 changes: 6 additions & 6 deletions Packages/MIES/MIES_AnalysisFunctions_MultiPatchSeq.ipf
Original file line number Diff line number Diff line change
Expand Up @@ -766,7 +766,7 @@ Function MSQ_FastRheoEst(device, s)
key = CreateAnaFuncLBNKey(MSQ_FAST_RHEO_EST, MSQ_FMT_LBN_STEPSIZE, query = 1)
WAVE stepSize = GetLastSettingSCI(numericalValues, s.sweepNo, key, s.headstage, UNKNOWN_MODE)
WAVE DAScale = GetLastSetting(numericalValues, s.sweepNo, STIMSET_SCALE_FACTOR_KEY, DATA_ACQUISITION_MODE)
DAScale[] *= 1e-12
DAScale[] *= PICO_TO_ONE

totalOnsetDelay = GetTotalOnsetDelay(numericalValues, s.sweepNo)
WAVE statusHSIC = DAG_GetActiveHeadstages(device, I_CLAMP_MODE)
Expand Down Expand Up @@ -827,7 +827,7 @@ Function MSQ_FastRheoEst(device, s)

ASSERT(IsFinite(newDAScaleValue), "Unexpected newDAScaleValue")

maxDAScale = AFH_GetAnalysisParamNumerical("MaximumDAScale", s.params) * 1e-12
maxDAScale = AFH_GetAnalysisParamNumerical("MaximumDAScale", s.params) * PICO_TO_ONE

if(IsFinite(maxDAScale) && newDAScaleValue > maxDAScale)
rangeExceededNew[i] = 1
Expand Down Expand Up @@ -931,9 +931,9 @@ Function MSQ_FastRheoEst(device, s)
if(WaveExists(finalDAScaleAll))
WAVE finalDAScale = ZapNaNs(finalDAScaleAll)
ASSERT(DimSize(finalDAScale, ROWS) == 1, "Unexpected finalDAScale")
val = max(postDAQDAScaleFactor * finalDAScale[0], minRheoOffset * 1e-12 + finalDAScale[0])
val = max(postDAQDAScaleFactor * finalDAScale[0], minRheoOffset * PICO_TO_ONE + finalDAScale[0])
else
val = AFH_GetAnalysisParamNumerical("PostDAQDAScaleForFailedHS", s.params) * 1e-12
val = AFH_GetAnalysisParamNumerical("PostDAQDAScaleForFailedHS", s.params) * PICO_TO_ONE
endif

SetDAScale(device, i, absolute=val)
Expand Down Expand Up @@ -999,7 +999,7 @@ static Function/WAVE MSQ_DS_GetDAScaleOffset(device, headstage)

WAVE numericalValues = GetLBNumericalValues(device)

values[0, NUM_HEADSTAGES - 1] = MSQ_GetLBNEntryForHeadstageSCI(numericalValues, sweepNo, MSQ_FAST_RHEO_EST, MSQ_FMT_LBN_FINAL_SCALE, p) * 1e12
values[0, NUM_HEADSTAGES - 1] = MSQ_GetLBNEntryForHeadstageSCI(numericalValues, sweepNo, MSQ_FAST_RHEO_EST, MSQ_FMT_LBN_FINAL_SCALE, p) * ONE_TO_PICO

return values
End
Expand Down Expand Up @@ -1299,7 +1299,7 @@ Function MSQ_DAScale(device, s)
index = mod(DAScalesIndex[i], DimSize(DAScales, ROWS))

ASSERT(isFinite(daScaleOffset[i]), "DAScale offset is non-finite")
SetDAScale(device, i, absolute=(DAScales[index] + daScaleOffset[i]) * 1e-12)
SetDAScale(device, i, absolute=(DAScales[index] + daScaleOffset[i]) * PICO_TO_ONE)
DAScalesIndex[i] += 1
endfor
endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,9 @@ static Function [WAVE/T spikeNumbersLBN, WAVE/T spikePositionsLBN] SC_GetSpikeNu

if(numSpikes > 0)
// convert spike positions to 0-100 coordinates (aka pulse active coordinate system)
Make/FREE/D/N=(numSpikes) spikePositionsPUCrd = (spikePositions[p] - pulseStart) / (pulseEnd - pulseStart) * 100
Make/FREE/D/N=(numSpikes) spikePositionsPUCrd = (spikePositions[p] - pulseStart) / (pulseEnd - pulseStart) * ONE_TO_PERCENT
// round to one decimal digit
spikePositionsPUCrd[] = round(spikePositionsPUCrd[p] * 10) / 10
spikePositionsPUCrd[] = round(spikePositionsPUCrd[p] * 10) / 10 // NOLINT

SC_AddPulseRegionLBNEntries(spikePositionsLBN, pulseIndex, region, headstageProp, data = spikePositionsPUCrd)
endif
Expand Down
Loading

0 comments on commit 2688690

Please sign in to comment.