pyABF
pyABF copied to clipboard
How to read the epoch that a user list is applied to?
Hi All (and Scott!)!
First off, thanks so much for developing pyabf, it is incredibly useful, well written, and well documented. It has become instrumental in the development of our SanPy software for whole-call current-clamp analysis...
Issue
I have a users abf file where they specify a userList
to specify the delay to the onset of a digital pulse. I can find the pyabf userList
easy enough, great!
What I can't find is the epoch to associate the user list with? Looking at screenshots of the pClamp configuration, it appears they have specified the user list as follows:
Parameter To Change: Epoch E Duration (ms) userList = [150.0, 300.0, 600.0, 1500.0, 3000.0, 6000.0, 150.0, 300.0, 600.0, 1500.0, 3000.0, 6000.0, 150.0, 300.0, 600.0, 1500.0, 3000.0, 6000.0]
Here is a print of the pyabf EpochTable from the file
EPOCH A B C D E F
Type Step Step Step Step Step Step
First Level 0.00 -10.00 0.00 0.00 0.00 0.00
Delta Level 0.00 0.00 0.00 0.00 0.00 0.00
First Duration (points) 10000 5000 20000 1 150 10
Delta Duration (points) 0 0 0 0 0 0
Digital Pattern #3-0 0000 0000 0000 0100 0000 0100
Digital Pattern #7-4 0000 0000 0000 0000 0000 0000
Train Period (points) 0 0 0 0 0 0
Pulse Width (points) 0 0 0 0 0 0
And here is some pyabf info I can pull out about the user list
userList: [150.0, 300.0, 600.0, 1500.0, 3000.0, 6000.0, 150.0, 300.0, 600.0, 1500.0, 3000.0, 6000.0, 150.0, 300.0, 600.0, 1500.0, 3000.0, 6000.0]
userListEnable: [1]
userListParamToVary: [115]
userListParamToVaryName: ['EPOCHTRAINPERIOD']
userListRepeat: [0]
Question 1
The abf.sweepD(digitalChannel)
is not showing/reflecting the changes (from sweep to sweep) as expected. I would expect plotting sweepD(digitalChannel) would show the changes in the timing of the pulse that increases from sweep to sweep using the userList
values but it does not.
Question 2
I have the userList
and can hard code offsets from the time of epoch E. Is there a way I can read the epoch that is being modified by a userList
?
Plots
-
Top:
sweepD
across all sweeps and all digital channel (0..7). This is where I expect to find the increasing delays following theuserList
, but do not :( -
Middle:
sweepC
plot, none expected, good! -
Bottom: Plot of recording with
sweepY
, you can see the extracellular stimulations that was actually delivered at different delays according to theuserList
. Yet, they are not reflected insweepD
(top plot).
System
- macOS Ventura 13.3.1 (a)
- Python: 3.11.5
- pyabf: 2.3.8
Thanks again for pyAbf, I am a huge fan.