Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to read the epoch that a user list is applied to? #136

Open
cudmore opened this issue Jan 23, 2024 · 0 comments
Open

How to read the epoch that a user list is applied to? #136

cudmore opened this issue Jan 23, 2024 · 0 comments

Comments

@cudmore
Copy link

cudmore commented Jan 23, 2024

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 the userList, 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 the userList. Yet, they are not reflected in sweepD (top plot).

image

System

  • macOS Ventura 13.3.1 (a)
  • Python: 3.11.5
  • pyabf: 2.3.8

Thanks again for pyAbf, I am a huge fan.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant