(Note for ITC16/18 users: the possibility of changing the holding potential during continuous acquisition has an unavoidable effect of small gaps at the moment of the VHold change. See A1. Limitation in gap-free recording with the ITC-16 and ITC-18 interface when the holding potential is changed during the acquisition.)
1. Scope of GePulse - Introduction
4.1 Data files, set-files, stimulation-sequence
files; Easy export of data into spreadsheet
5. The front panel windows and commands
6. How are parameters like gain or frequency read?
9. The Stimulation-Sequence Editor
10. Remote control through batch file and 'macros' and triggering of macros by digital input
11. How to control the Rs and Cm calculation
So far GePulse runs with the following
National
Instruments interfaces: PCI-6035E/PCI-6036E, PCI-6052, PCI-6221, and
PCI-6251. These require
the
Nidaq (or Nidaqmx) software (comes with the interface or can be
downloaded). In principle, with Nidaqmx, GePulse should run with almost
every National
Instruments acquisition interface. But not all have been tested.
CONNECT DIGITIAL I/O CHANNEL 0 WITH PFI0
for NI-interfaces!
This connection "triggers" the synchronous stimulation and
acquisition. Without this connection the program "hangs"
and the pulses will not start.
See here
how to make this connection on the BNC2090 connector block.
4.1 Data files, set-files, stimulation-sequence files
Acquired data are kept in memory only
if the Store-Button is active (i.e. red). Otherwise the data will
not
be
stored anywhere in memory but only displayed! A valid file-name has to
be chosen before the Store-Button can be activated. If you try to
activate
it without having specified a file-name before, you will be asked for a
file-name.
Even if the Store-Button is active, however, the data
is not immediately stored on the file but only in memory. Only
when
you select File->New or File->Open (Read only)
or File->Open
(modify) the data will be written on the file, the file will be
closed
and a new file opened. If you select File->Save (update
on disk)
the currently available data will be written to the file, but the file
will not be closed, and the memory will be not be emptied.
GePulse stores in the registry the directory name of the last used data file name and proposes it as the data directory when you restart GePulse next time.
GePulse also stores in the registry the name of the
last
used (i.e. stored or opened) settings-file and
Stimulation-Sequence-file
and reloads them automatically on restart (if the files are still
existent).
Data can be exported to spreadsheet programs in the
followong easy way: After acqusition, select View->Edit format of numbers to
show in redraw to define the format, then
View->On
redraw: show numbers, and then select the
item in the tree to export and press return.
The data are shown as a table from where they can be copied to the
clipboard by right clicking on the table (select all,
then copy). Now they can be pasted into SigmaPlot, for example.
For each recorded channel (max. 4 right now) it has
to be defined which ADC should be used for its acquisition. To do this,
and to define the gain settings for each channel, in the settings
dialog (F8) (in the "source and gain source" block), a row of
parameters is shown and editable for each channel. In the first column
the ADC for the channel has to be specified. In the second column the
units can be specified. Default is "A" for Ampere. The third column
("Gain ADC") is relevant only if the gain-setting of the amplifier (or
other device) is fed to GePulse telegraphically. In this case, the ADC
used for the gain-input is specified in this third column. However,
this is not the only possibility to determine the gain (see
below). How the gain is determined is described in the following
paragraph.
The gain-setting of each channel, the recording
bandwidth,
the temperature and two "user-defined" parameters can be
- fed to the
program
"telegraphically" with an ADC,
- or a default value can be assigned,
- or
it
can be made "editable" in the front panel.
The procedure for each of these parameters is as follows:
In the settings dialog you first define for a given
parameter
the mode of the determination of its value in the field with the
heading
"gain source" (for the gains of the channels) or "source" for the other
parameters. The possibilities are:
voltage1 value1
voltage2 value2
...
A typical table could be
7.5 19.5 5
7.5 1
8.5 2
The "Eqn."- option is useful if a
continuous
parameter like e.g. the temperature is read from a device like e.g. a
temperature
controller. Let's make an example. The temperature controller provides
a voltage-output that converts to a temperature (in degrees C) by a
complicated
function:
T = 0.01*x*x + 10*x + 20, where x is the
voltage-output
of the device. You connect the voltage-output to ADC-5 and assign 5 to
the ADC for the temperature, "Eqn." for the "source"
and the string (without quotes) "0.01*x*x + 10*x + 20"
in the "table-file
or equation"-field.
The following rules apply for the equation:
The independent variable can be written as "x", or as "v" or as "t".Comments can be added after the function definition after a '. Example:
0.01*x*x + 10*x + 20 ' calibration curve
of
temperature control
If you select the "Value" option, you
can
still read and use a table for selecting the various settings as
described
now for an example. Suppose your amplifier has 3 possible
gain-settings:
1 mV/pA, 5 mV/pA and 20 mV/pA (corresponding thus to the gain settings
1 GOhm, 5 GOhm, and 20 GOhm). Create a table as above with "fake"
voltages,
e.g.
1 1e9
2 5e9
3 20e9
name the file "Gain-Table.txt" (or any name you
prefer).
Go the the settings-dialog and select this table-file in the
corresponding
channel. Don't forget to save you settings-file such that next time
everything
goes automatically! Now in the front-panel, close to the
"Gain-text-field"
two small buttons (one "+" and one "-") appear that can be used to
select
the next or previous gain setting. The short-cuts "Ctrl+left arrow"
and "Ctrl+right arrow" do the same thing.
Note that in this case the table has to be
ordered
in the sense that smaller "fake-voltage" values have to correspond to
smaller
gain values.Otherwise it will not work properly. I.e. the table
3 1e9
2 2e9
1 3e9
will not be good.
N Toggle graphical online analysis on/off
F
Toggle "Play sound"
S
Store On/Off
“+”
Double Display gain (of the active channel)
“-”
Half Display gain (of the active channel)
F8
Setup
F9
Stimulation editor
Ctrl +
Backspace
Clear Screen
Ctrl + Page
Up/Down
Increase/Decrease display offset (of the active channel)
Ctrl + Arrow
Up
Increase Vhold by 10 mV
Ctrl + Arrow
Down
Decrease Vhold by 10 mV
Ctrl + Arrow
Left
Same as pushing the "plus gain button" (see here
for explanation)
Ctrl + Arrow
Right
Same as pushing the "minus gain button" (see here
for explanation)
Ctrl +
Space
Start/Stop Seal test
Ctrl +
0
Start Sequence 0
…
Ctrl +
9
Start Sequence 9
Ctrl +
B
Interrupt Stimulation (Break)
Ctrl +
M
Open file for modify
Ctrl +
N
New File (for write)
Ctrl +
O
Open file read only
Ctrl +
S
Stop Stimulation (i.e. finish this sweep, then stop)
Ctrl +
E
Export
Ctrl +
G
Start gap-free recording
Ctrl +
I
Show some info about the selected tree item
Ctrl +
F
Edit flags
Ctrl +
R
Reset scales
Ctrl +
W
Clear message window
C
Estimate Rs and Cm in the next seal-test pulse
The meaning of the various parameters in this dialog are:
For each of the possible 4 input channels the following parameters can be defined:
- ADC: the zero-based index of the ADC from which this channel shall be acquired
- Unit: a string of the unit, e.g. "V", "A" (to be entered without the " ")
- GainADC: if the amplification setting of the channel is "telegraphed" to the computer here the corresponding ADC is specified. Otherwise this field is without use. For example in general, the current signal will have a variable gain (in units V/A!) while often the voltage-channel has a fixed gain of e.g. 10 V/V.
- Gain Source: In this selection menu the way of how the gain shall be determined is defined. There are 4 possibilities as explained in 6. How are parameters like gain or frequency read? Note that the "equation" option is not available for the regularly sampled input channels, but only for the extra parameters, like e.g. temperature.The four additional parameters, bandwidth, temperature, user param1, user param2, are saved with each series. You define which ADC is to be used if they are fed telegraphically etc. just as for the gain settings of the acquired channels (see above).
The parameters of the Test-pulse group define the
properties
of the "seal-test pulse".
The parameter "Sample time (gap free)" defines the sample time for gap-free recordings. The parameter "time window (gap free)" defines the length of individual sweeps in gap-free recordings. These sweeps are an artificial subdivision of the truly gap-free recording.
Parameters of the "General" group:
- Number of channels: self-explanatory
- Stimulus Scale: defines the scale factor of the command voltage. It depends on the amplifier setting. If you have to apply 1 V at the command input BNC of the amplifier to actually clamp a cell at 100 mV the stimulus scale = 0.1.
- Stim Dac: the DAC channel of the interface used for command output
- Volt. Input Scale: If the amplifier provides an output of the potential with a gain of 10 V/V you have to insert Volt. Input Scale = 10.
- Voltage Inp. ADC: the ADC where the potential shall be read. This parameter is not really essential because the voltage is practically never used. It is only stored for each series and displayed on the screen.
- Voltage Range ADC (+/-) in Volt: for National
Instruments
interfaces this is generally 10 V, for the ITC16/18 this is 10.24 Volt.
This value cannot be edited - it is shown for information.
- Checkbox "Do write parameter values on file": if checked,
several parameters are written on an ASCII file during seal-test or
waiting.
These can be read by another program and used for various purposes.
Currently
the format of the string is (example):
"R 10295;I4412.84;H-0.100;V0.045;G1.00;Rs9.2;Cm13.4;f999.00;T10.0;U0.000;u0.000;S0;#"
Meaning:- The check-box dimmed overlay defines if the old traces are to be shown in gray (checked) or black (unchecked).
- Checkbox "Do NOT do online analysis": As a default some online analysis is performed on the "relevant" Y-Segment (see 9. The Stimulation-Sequence Editor ). This includes the mean value, the maximum value and the minimum value. These values are displayed in the "message-window". They are calculated between 10% and 90% of the length of the segment. For very fast stimulation or if you have overflow problems of the interface you turn off the online-analysis with this check-box.
- Checkbox "Do write parameter values on file": see above
- show noise box: if checked the rms-noise during the seal-test pulse is indicated in the front panel
- do check for clipping: this flag activates the clipping button and the check for clipping. E.g. for high speed pulsing this can be turned off.
- calc Cm and Rs continously: this flag determines if the Rm and Cs should be calculated with each seal-test pulse or only on demand (see 11. How to control the Rs and Cm calculation. Also the method of Rs and Cm calculation is explained there).
- Allow multiple instances of Gepulse to run (with
program
name
"Gepulse.exe"): this flag determines if more than one instance
of GePulse can be started. To avoid errors in the interface
comunication
it is generally advisable to forbid multiple instances. For
analysis-purposes,
instead, it might be more useful to allow multiple instances. Note that
this flag works only if the executable is not renamed, i.e. the "exe"
file
has the name "GePulse.exe".
- Show capacity subtract button: this flag
determines if the "capacity subtract" button should be visualized in
the front panel. Activation of this activates an automatic procedure to
subtract the capacity based on pulses to a voltage where no ionic
currents is expected to flow. For this, the last segment of the pulse
protocol is considered to be at such a voltage and the responses
to voltage steps during the other segements is corrected according to
the reponse to the last segment, assuming a linear (in voltage)
capacity.
- Keep in memory last unsaved series: if this flag is checked, and if the store button is not active (red), the last acquired series (pulsed or gapfree) is stored in an internal buffer and can be recovered using File->Recover last unsaved series.
- Update disk file after each series: if this
flag
is checked, and if the store button is active (red), all currently
acquired data (that is shown in the tree) is saved on the specified
disk-file, after completion of a series that is acquired with the store
button active. Normally, this should not be necessary, but if the
computer tends to crash, or if you have experienced data loss, you may
opt to check this flag.
9. Stimulation-Sequence Editor
Sorry, almost no help yet.
The upper bar of buttons and fields is used to select the squence to be edited.
An internal "buffer" keeping at most one stimulation sequence can be used to copy stimulation sequences from one pool (stored on a file) to another or from a data file to a pool. To this end the buttons "Copy in internal buffer" and "Paste from internal buffer" in this dialog, and the command "Edit->Copy pulse protocol" are used. The latter command copies the pulse protocol from the currently selected tree item (if this is an entry or a series) into the internal buffer.
The "Load" - button loads a pool of stimulation-sequences from a file.
The "Make train" button can be used to create a train like stimulation by copying the existing segments. There is no limitation in the number of segments such that e.g. trains with several thousand of segments can be created without problems (if the number is not excessively large such that memory problems might arise).
For each segment the class determines what voltages shall be
assigned
during the time of the segment.
constant means
that the voltage is constant and is calculated according to the values
assigned in the fields.
ramp
means that the voltage changes linear from the previous value to the
one
calculated according to the values assigned in the fields.
vhold
means that the voltage is kept fixed at the holding potential
as in the main control outside of this dialog
10. Remote control: reading a command batch file, 'macros', and triggering of macros by digital input
GePulse can be remotely controlled by an ASCII-text batch file
containing
one or more commands. The name of the batch-file is chosen in the
settings-dialog.
It will be stored in the settings-file along with the other settings if
the settings are saved on file.
Similarly, up to ten 'macro' strings
can be edited (Commands->EditCommands)
and the corresponding sequence of commands is executed by pressing
Ctrl+F1 ... Ctrl+F10. The
commands in these strings are treated
identical as the ones saved in the batch file (see below). The 10
command strings are contained in the general settings file that can be
loaded and saved through the Edit->Settings
(F8) menu command.
If you have a National Instruments interface and if you have selected "Monitor digital input" in the "Define interface" dialog you can also trigger one or more of these 10 command macros by changing the status of a digital input line. The behavior is controlled in the Commands->EditCommands dialog.
To invoke the reading of the batch file select "Commands->Read
Command
file" or hit Ctrl+K. This will open the batch-file, and
read
and execute the commands. Some error message are generated if for some
reason the command(s) could not be executed or if a syntax-error
occurred.
If a command cannot be read because of a syntax error (e.g. no space between "Vhold" and "-0.1" in the example below) processing of the batch file/command string is interrupted and no further commands will be read.
If more than 1 command is present, the commands have to be separated by a ";".
Example:
Vhold -0.1; STO 0
These commands set the holding potential to -100 mV and
switches off
the test/seal pulse - if it was on.
No distinction is made between upper and lower case, thus the above
line is equivalent to
vHOLD -0.1; stO 0
The space between the "Vhold" and the value "-0.1" is essential! Thus the command
Vhold-0.1
will have no effect and will stop further processing.
So far the following commands are implemented:
Vhold value - "value" is the voltage in Volts
Average value - put the average number to value
G0 value - put display gain
of
channel
0 to value
…
G3 value - put display gain of
channel
3 to value
GAIN0 value - put gain of
channel
0 to value. This works only if the gain is editable in the
front-panel.
See 6. How is the gain read.
…
GAIN3 value - put gain of
channel
3 to value. This works only if the gain is editable in
the
front-panel. See 6. How is the gain read.
Off0 value - put display offset
of
channel 0 to value
…
Off3 value - put display offset of
channel 3 to value
D0 value - put digital output
channel
0 to value (value = 0 or 1)
…
D9 value - put digital output channel
9 to value (value = 0 or 1)
DO value - put the digital
outputs
to "value" (the O is not a zero but an "oh").
examples: "DO 0101" – will put Dig-out channel
0 to 0
channel 1 to 1
channel 2 to 0 and
channel 3 to 1
"DO 11" – will put
Dig-out
channel 0 to 1 and
channel 1 to 1
"DO 101" – will
put
Dig-out
channel 0 to 1,
channel 1 to 0 and
channel 2 to 1
A0 value - put analog output
channel 0
to
value,
where value is in Volts (normally from -10 to 10 V)
…
A7 value - put analog
output
channel 7 to value
STO value - switch seal-test on / off if value is 1 / 0.
STO - without argument: same effect as clicking on the seal/test-pulse button i.e. toggles on and off
SW value - start sweep with
index
"value". To start gap-free use "SW -1" .
This has no effect if an acquisition is already ongoing. To start
another stimulation you have to use the wait command (see below).
BREAK - same effect as clicking on the "Break" button i.e. interrupt acquistion
STOP - same effect as clicking on the "Stop" button i.e .finish sweep, then stop acquistion (gap-free: stops immediately!)
CLEAR - same effect as clicking on the "Clear" button i.e .clear screen
RESETTIMER - same effect as clicking on the "Reset" button i.e .sets timer to 0
RESETSCALES - same effect as clicking on the "Re. Sc." button i.e .set scales to 1 and puts full time scale
FILTER value - "value" is the digital filter frequency in Hz
OVERLAY value - switch overlay of traces on / off if value is 1 / 0.
OVERLAY - without argument: same effect as clicking on the "Overlay" button i.e. toggles on and off
OVERLAYALL value - switch overlay all of traces on / off if value is 1 / 0.
OVERLAYALL - without argument: same effect as clicking on the "Overlay All" button i.e. toggles on and off
SUBTRACTLEAK value - switch "Subtract leak" on / off if value is 1 / 0.
SUBTRACTLEAK
- without argument: same effect as clicking on the "Leak sub." button
i.e.
toggles on and off
SUBTRACTBASELINE value - switch "Subtract baseline" on / off if value is 1 / 0.
SUBTRACTBASELINE - without argument: same effect as clicking on the "Sub baseline" button i.e. toggles on and off
SHOWLEAK value - switch "Show leak" on / off if value is 1 / 0.
SHOWLEAK - without argument: same effect as clicking on the "Show Pn." button i.e. toggles on and off
STORE value - switch "Store" on / off if value is 1 / 0.
STORE - without argument: same effect as clicking on the "STORE." button i.e. toggles on and off
RSCM
- same as selecting Commands->Calc Rs Cm (when seal test on)
(i.e
calculate Rs and Cm)
PLAYSOUND value - if value = 0 playsound is switched off, else it is switched on
ZAP - same as selecting Commands->Zap (i.e zap = apply a short pulse to go whole cell; the sample time used is the same as for the seal-test pulse)
ZAPDURATION value - set the duration of the zap-pulse to "value" (in seconds)
ZAPAMPLITUDE value - set the amplitude of the
zap-pulse
to "value" (in Volts)
SETMODE value - set the recording mode. Value can be
INOUT, ONCELL, OUTSIDEOUT, WHOLECELL, VOLTAGECLAMP
COMMENT string - this command is to insert
comments during a gap-free recording; a new sweep is started and gets
this comment as name. The event is also stored in the gap-free events
list.
wait poll_duration
- this command is essential if more
than one stimulation sequence shall be started, or if for example you
want to set a digital lineafter a simulation is finished or change the
holding potential after a stimulation sequence ... The meaning of the
WAIT command is as follows: the WAIT command halts the batch-processing
as long as a stimulation is going on. As soon as no stimulation is
active, batch pocessing resumes. The poll-duration parameter determines
the timer interval in milliseconds that is used to check if a
stimulation is going on. For example WAIT 20; will start a timer
that checks every 20 ms if a stimulation is on. The following sequence
of commands will set Vhold to 0, then start sequence 0, then set vhold
to -50 mV, then start sequence 1, then set vhold back to 0 mV:
ATTENTION:
The following command sequence will not work properly:
sto 1; some_commands; break;
wait; further_commands;
The sto 1 command will
start the seal-test pulse and the some_commands
will also be executed. However, the overhead to start the sealtest is
generally quite long such that when the break command is executed, the
sealtest is not yet started. Thus, the break command will actually
NOT interrupt the sealtest and the wait command will wait
forever, until the sealtest is interrupted manually.
WAIT
- without
specification of the poll-duration is equivalent to WAIT 50 (i.e. the
default poll-duration is 50 ms)
donothing time_in_millisecods - this command invokes a waiting cycle during which no other command is processed and the continuous pararameter measurements (current, voltage, gains, etc) is interrupted. For example A0 5.0; DONOTHING 1000;A0 -5; will put analog out to 5 volts; wait 1 second, put analog out 0 to - 5 Volts.
The following commands are applicable if a Pollux step motor is
connected to a serial port.
POLLUX_MOVE_REL
value -
move the Pollux controlled step motor by "value" microns, relative
11. How to control the Rs and Cm calculation
Using the current response recorded on channel 0 with the "seal-test" pulse it is possible to estimate the series resistance, Rs, and the membrane capacitance, Cm. In the flags dialog (Edit->Flags) it is determined if this calculation should be done with each seal-test pulse, or only on demand. The "on-demand" is activated either with Commands->Calc Rs Cm, or clicking on the corresponding button in the lower-left sub-window, or hitting "C" (The values of Rs and Cm are written on the parameters value file if the corresponding option of writing this file is activated).
How are Rs and Cm calculated? Cm is in either case calculated
by
integrating
the charge during the first half of the first step in the test-pulse
after
subtracting the resistive component. The resistive component is
estimated
by the mean of the current during the second half of the first
pulse
(assuming that this is steady state).
Thus Cm = [Integral over {(I-Iss)} ]/
DeltaV
(where Iss is the steady state current).
DeltaV is the voltage-step of the seal-test pulse.
Rs is calculated using the formula
Rs = DeltaV / I0
Here I0 is the estimated initial current minus the steady-state
current,
Iss (Iss is obtained as described above).
The calculation of I0 depends on the method chosen in the Edit->Flags
dialog. If "Calc with simple method (I0, Q)" is selected I0 is
taken as the maximum value of I-Iss during the first half of the step.
If "Extrapolate exponential to get I0" is selected,
a single exponential function is fitted and back-extrapolated using the
following conditions:
The fit begins after the delay calculated by "1/bandwidth" , where
the bandwidth is obtained from the parameters. However, the delay is
not
larger than 1/4 of the length of the segment of the first step in the
test-pulse.
The single-exponential is then back-extrapolated to 1/2 of the delay to
estimate I0. TRY IT OUT! It may not work for your conditions.
Suggestions
are always welcome!
This feature does not yet work properly. It is intended to produce a tone whose frequency depends either on the membrane potential, Vm (to give an aid for the penetration of oocytes with the potential electrode), or dependent on the resistance (to give an aid when touching the cell with the patch-pipette).
A1. Limitation in gap-free recording with the ITC-16/18 interface when the holding-potential is changed during the acquisition
Because of the special architecture of the ITC-16/18 interfaces the
output at a DAC can not be changed at an a priori undefined time-point
(i.e. at user's will) without briefly interrupting the ongoing
acquisition.
Thus, if during a "gap-free" continuous acquisition the holding
potential
is changed some data are lost. On one computer the gap amounted to 15
sample-points
but I have done no systematic analysis.
You can measure the gap e.g. by acquiring a sine wave and looking later
how much points are missing. If you never change the holding potential,
no gap will occur.
- When sampling more than 2 channels with the ITC16 interface there
is a problem with the channel assignment. Maybe someone can help me
here.
- The ITC18 is little tested so far.
- Some theoretically possible command sequences for batch processing
will not work properly. See here for an
example.
An up-to-date description of the file format (13/04/06) can be found in
this MS-Word file.
Chengyu Li, from the university of Berkley, has created a Matlab
program able to read current Gepulse data files. Download here (zipped).
The following code is old,
refering to Version 1
char[]
"GePulse"
7 bytes
int32
Version
4 bytes
int32
DataFormat
4 bytes //normally "0" indicating 2 bytes per point, right now.
int32 NumberOfSeries
4 bytes
Then come all series, one after the other
Then the general header continues:
SYSTEMTIME
time
18 bytes
int32
LengthLabel
4 bytes
char[]
Label
LengthLabel bytes
int32
LengthComment
4 bytes
char[]
Comment
LengthComment bytes
int32 ExperimentNumber
4 bytes
int32
unused[100]
400 bytes
END DATAFILE
int32
SweepType
4 bytes // 0 for Pulsed; 1 for GapFree
if SweepType==GapFree then
int32
LengthGapFreeParamList 4 bytes
for each entry of the list: GapFreeParam
end if
int32 NumberOfChannels 4
bytes
int32
NumberOfSweeps
4 bytes
Then come all sweeps, one after the other
Then the series continues:
BOOL StimPresent 4 bytes;
if (StimPresent)then
StimulationSequence
end if
SYSTEMTIME time 18 bytes
double
frequency
8 bytes
double
Potential
8 bytes
double
VHold
8 bytes
double
Resistance
8 bytes
int32
unused[4]
16 bytes
double
Temperature
8 bytes
int32
unused[2]
8 bytes
double
UserParam1
8 bytes
double
UserParam2
8 bytes
for(i=0; i<14; i++){
char
UserParam1Name[i]
1 byte
char
UserParam2Name[i]
1 byte // total of 28 for the names
}
for (i=0; i<2; i++){
char
UserParam1Unit[i]
1 byte
char
UserParam2Unit[i]
1 byte // total of 4 for the units
}
double
DataFactor[16]
128 bytes
int32 NumAveraged 4 bytes
int32
RecordingMode
4 bytes // inside out : 0; on-cell: 1; outside-out: 2;
whole-cell:
3; voltage-clamp: 4
int32
LengthComment
4 bytes
char[]
Comment
LengthComment bytes
int
unused[20]
80 bytes
END SERIES
GapFreeParam:
int32
index
4 bytes // the data index of the event
int32 GapFreeParamType 4 bytes //
0: changed vhold; 1: mark; 2: comment
double
VHold
8 bytes
int32 LengthComment 4
bytes
char[]
Comment
LengthComment bytes
double
DataFactor
8 bytes // unused right now
int32
Unused[100]
400 bytes
END GAPFREEPARAM
SYSTEMTIME time 18 bytes
int32
StimCount
4 bytes
int32
SweepCount
4 bytes
int32 AverageCount
4 bytes
BOOL
Leak
4 bytes
int32
LengthLabel
4 bytes
char[]
Label
LengthLabel bytes
int32 DataPoints 4 bytes
int32 DataSizeInBytes 4 bytes
double
Cm
8 bytes
double
Gs(=1/Rs)
8 bytes
double
Rs
8 bytes
int32 unused[30] 120 bytes
for (i=0; i<NChannels; i++){
byte[]
data
DataSizeInBytes*DataPoints bytes
if (Leak) then byte[]
leak
DataSizeInBytes*DataPoints bytes
}
END SINGLE SWEEP
int32 NumberOfSegments 4 bytes
Then come all segments, one after the other
int32 LengthEntryName 4 bytes
char[]
EntryName
LengthEntryName bytes
double
SampleTime
8 bytes
double
unused
8 bytes
double
SweepInterval
8 bytes
int32
NumberSweeps
4 bytes
int32
NumberRepeats
4 bytes
double
RepeatWait
8 bytes
int32 LengthLinkedSequence 4 bytes
char[]
LinkedSequence
LengthLinkedSequence bytes
double
LinkedWait
4 bytes
int32
LeakCount
4 bytes
double
LeakSize
8 bytes
double
LeakHolding
8 bytes
BOOL
LeakAlternate
4 bytes
BOOL
AltLeakAveraging
4 bytes
double
LeakDelay
4 bytes
in32
NumberOfTriggers
4 bytes // unused
int32
RelevantXSegment
4 bytes
int32
RelevantYSegment
4 bytes
BOOL
WriteEnabled
4 bytes
int32
unused[37]
148 bytes
BOOL
WaitBeforeFirst
4 bytes
END STIMULATION SEQUENCE
int32
SegmentClass
4 bytes
BOOL
IsHolding
4 bytes
double
Voltage
8 bytes
double
Duration
8 bytes
double
DeltaVFactor
8 bytes
double
DeltaVIncrement
8 bytes
double
DeltaTFactor
8 bytes
double
DeltaTIncrement
8 bytes
int32
unused[5]
20 bytes
END STIM SEGMENT
System time:
WORD
wDay
2 bytes
WORD
wDayOfWeek
2 bytes
WORD
wHour
2 bytes
WORD wMilliseconds
2 bytes
WORD
wMinute
2 bytes
WORD
wMinute
2 bytes // yes, twice. Bug kept for compatibility
WORD
wMonth
2 bytes
WORD
wSecond
2 bytes
WORD
wYear
2 bytes
END SYSTEMTIME