Skip to content

Commit f82f072

Browse files
committed
Add PeakToPeak method for HS64 devices
1 parent 74a0adb commit f82f072

File tree

4 files changed

+27
-18
lines changed

4 files changed

+27
-18
lines changed

OpenEphys.Onix1.Design/GenericStimulusSequenceDialog.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ public partial class GenericStimulusSequenceDialog : Form
1717
readonly bool UseTable;
1818

1919
internal const double ZeroPeakToPeak = 1e-12;
20-
internal double PeakToPeak = 1;
2120
internal readonly double ChannelScale = 1.1;
2221

2322
[Obsolete("Designer only", true)]
@@ -186,8 +185,6 @@ internal void DrawStimulusWaveform(bool setZoomState = true)
186185
return Math.Abs(val).ToString("0");
187186
};
188187

189-
DrawScale();
190-
191188
dataGridViewStimulusTable.Refresh();
192189

193190
if (setZoomState && XMin != 0 && XMax != 0)
@@ -198,6 +195,8 @@ internal void DrawStimulusWaveform(bool setZoomState = true)
198195
zedGraphWaveform.GraphPane.YAxis.Scale.Max = YMax;
199196
}
200197

198+
DrawScale();
199+
201200
zedGraphWaveform.AxisChange();
202201
zedGraphWaveform.Refresh();
203202
}

OpenEphys.Onix1.Design/Headstage64ElectricalStimulatorSequenceDialog.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -287,14 +287,19 @@ internal override bool CanCloseForm(out DialogResult result)
287287
}
288288
}
289289

290+
internal override double GetPeakToPeakAmplitudeInMicroAmps()
291+
{
292+
var peakToPeak = (Math.Max(Math.Max(ElectricalStimulator.PhaseOneCurrent, ElectricalStimulator.PhaseTwoCurrent), ElectricalStimulator.InterPhaseCurrent)
293+
+ Math.Abs(Math.Min(Math.Min(ElectricalStimulator.PhaseOneCurrent, ElectricalStimulator.PhaseTwoCurrent), ElectricalStimulator.InterPhaseCurrent))) * ChannelScale;
294+
295+
return peakToPeak == 0 ? ZeroPeakToPeak : peakToPeak;
296+
}
297+
290298
internal override PointPairList[] CreateStimulusWaveforms()
291299
{
292300
PointPairList[] waveforms = new PointPairList[NumberOfChannels];
293301

294-
PeakToPeak = (Math.Max(Math.Max(ElectricalStimulator.PhaseOneCurrent, ElectricalStimulator.PhaseTwoCurrent), ElectricalStimulator.InterPhaseCurrent)
295-
+ Math.Abs(Math.Min(Math.Min(ElectricalStimulator.PhaseOneCurrent, ElectricalStimulator.PhaseTwoCurrent), ElectricalStimulator.InterPhaseCurrent))) * ChannelScale;
296-
297-
PeakToPeak = PeakToPeak == 0 ? ZeroPeakToPeak : PeakToPeak;
302+
var peakToPeak = GetPeakToPeakAmplitudeInMicroAmps();
298303

299304
if (ElectricalStimulator != null)
300305
{
@@ -306,12 +311,12 @@ internal override PointPairList[] CreateStimulusWaveforms()
306311
{
307312
for (int j = 0; j < ElectricalStimulator.BurstPulseCount; j++)
308313
{
309-
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X, ElectricalStimulator.PhaseOneCurrent / PeakToPeak));
310-
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X + ElectricalStimulator.PhaseOneDuration, ElectricalStimulator.PhaseOneCurrent / PeakToPeak));
311-
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X, ElectricalStimulator.InterPhaseCurrent / PeakToPeak));
312-
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X + ElectricalStimulator.InterPhaseInterval, ElectricalStimulator.InterPhaseCurrent / PeakToPeak));
313-
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X, ElectricalStimulator.PhaseTwoCurrent / PeakToPeak));
314-
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X + ElectricalStimulator.PhaseTwoDuration, ElectricalStimulator.PhaseTwoCurrent / PeakToPeak));
314+
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X, ElectricalStimulator.PhaseOneCurrent / peakToPeak));
315+
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X + ElectricalStimulator.PhaseOneDuration, ElectricalStimulator.PhaseOneCurrent / peakToPeak));
316+
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X, ElectricalStimulator.InterPhaseCurrent / peakToPeak));
317+
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X + ElectricalStimulator.InterPhaseInterval, ElectricalStimulator.InterPhaseCurrent / peakToPeak));
318+
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X, ElectricalStimulator.PhaseTwoCurrent / peakToPeak));
319+
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X + ElectricalStimulator.PhaseTwoDuration, ElectricalStimulator.PhaseTwoCurrent / peakToPeak));
315320
waveforms[channel].Add(new PointPair(waveforms[channel].Last().X, 0));
316321

317322
if (j != ElectricalStimulator.BurstPulseCount - 1)

OpenEphys.Onix1.Design/Headstage64OpticalStimulatorSequenceDialog.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,16 @@ double GetChannelCurrentScaled(double maxCurrent, double channelPercent, double
210210
return (GetChannelCurrent(maxCurrent, channelPercent) / 100.0) / scale;
211211
}
212212

213+
internal override double GetPeakToPeakAmplitudeInMicroAmps()
214+
{
215+
return OpticalStimulator.MaxCurrent == 0 ? ZeroPeakToPeak : OpticalStimulator.MaxCurrent * ChannelScale;
216+
}
217+
213218
internal override PointPairList[] CreateStimulusWaveforms()
214219
{
215220
PointPairList[] waveforms = new PointPairList[NumberOfChannels];
216221

217-
PeakToPeak = OpticalStimulator.MaxCurrent == 0 ? ZeroPeakToPeak : OpticalStimulator.MaxCurrent * ChannelScale;
222+
var peakToPeak = GetPeakToPeakAmplitudeInMicroAmps();
218223

219224
for (int channel = 0; channel < NumberOfChannels; channel++)
220225
{
@@ -227,7 +232,7 @@ internal override PointPairList[] CreateStimulusWaveforms()
227232

228233
var stimulusCurrent = offset + GetChannelCurrentScaled(OpticalStimulator.MaxCurrent,
229234
channel == 0 ? OpticalStimulator.ChannelOneCurrent : OpticalStimulator.ChannelTwoCurrent,
230-
PeakToPeak);
235+
peakToPeak);
231236

232237
for (int i = 0; i < OpticalStimulator.BurstsPerTrain; i++)
233238
{

OpenEphys.Onix1.Design/Rhs2116StimulusSequenceDialog.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,15 +257,15 @@ internal override PointPairList[] CreateStimulusWaveforms()
257257

258258
bool plotAllContacts = ChannelDialog.SelectedContacts.All(x => x == false);
259259

260-
PeakToPeak = GetPeakToPeakAmplitudeInMicroAmps() * ChannelScale;
260+
var peakToPeak = GetPeakToPeakAmplitudeInMicroAmps() * ChannelScale;
261261

262262
for (int i = 0; i < Sequence.Stimuli.Length; i++)
263263
{
264-
var channelOffset = -PeakToPeak * i;
264+
var channelOffset = -peakToPeak * i;
265265

266266
if (ChannelDialog.SelectedContacts[i] || plotAllContacts)
267267
{
268-
waveforms[i] = CreateStimulusWaveform(Sequence.Stimuli[i], channelOffset, PeakToPeak);
268+
waveforms[i] = CreateStimulusWaveform(Sequence.Stimuli[i], channelOffset, peakToPeak);
269269
}
270270
else
271271
{

0 commit comments

Comments
 (0)