From 65a1b3372dde8e464d1c2ad962232ea09b013349 Mon Sep 17 00:00:00 2001 From: Michael Clerx Date: Thu, 19 Mar 2026 16:16:42 +0000 Subject: [PATCH 1/2] Cosmetic fix to level 0 schematic --- tutorial/img/vc-level-0.png | Bin 22325 -> 22679 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tutorial/img/vc-level-0.png b/tutorial/img/vc-level-0.png index b16aec722ba21c7bad1001a2c6b213bc640e799e..39904ef657329487a838855ecf8b287ef053a950 100644 GIT binary patch literal 22679 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 literal 22325 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 Date: Thu, 19 Mar 2026 16:33:37 +0000 Subject: [PATCH 2/2] Finished model tour. Closes #3. Closes #4. Closes 16. --- README.md | 13 ++--- tutorial/README.md | 8 +-- tutorial/tour.ipynb | 122 +++++++++++++++++++------------------------- 3 files changed, 64 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 85762ae..f85ed1f 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,11 @@ This repository contains up-to-date reference versions of the voltage clamp model developed in Lei et al. 2020 and 2025. These models can be used to simulate manual or planar patch-clamp experiments in voltage-clamp mode. -_Note: This URL originally hosted the data for the 2020 Lei et al. publication. This is now found at https://github.com/CardiacModelling/VoltageClampModel2020_ +_Note: This URL originally hosted data and code for the 2020 Lei et al. publication. This is now found at https://github.com/CardiacModelling/VoltageClampModel2020_ ## The latest models -We recently updated the voltage clamp model with improved filtering of input (stimulus filter) and output (Bessel filters), and an improved time-delay in the series resistance compensation pathway. +We recently updated the voltage clamp model with improved filtering of input (stimulus filter) and output, and an improved time-delay in the series resistance compensation pathway. In addition to this full-featured model, we provide a set of increasingly simplified models: @@ -26,14 +26,15 @@ All models are provided in Myokit ([models-mmt](./models-mmt)) and CellML ([mode In brief: - Levels 0, 1, and 2 can recreate the _fast_ artefacts seen in patch clamp experiments, and are very useful _to understand the patch clamp process_. -- _To fit experimental data_, these fast artefacts are less important, and so level 3 is good to match data from the fastest currents. For slower currents, levels 4 or 5 can be used. +- _To fit experimental data_, these fast artefacts are less important, and so level 3 is good to match data from the fastest currents. +For slower currents, levels 4 or 5 can be used. ## Tutorials -We provide four [Tutorial Notebooks](./tutorial/README.md) to understand these notebooks, and how they were derived. +We provide four [Tutorial Notebooks](./tutorial/README.md) to understand these models, and how they were derived. The first notebook establishes a basic model of a patch clamp amplifier, and the second adds compensation and filtering, leading to the "Level 0" model. -In the third notebook, this model is used to simulate the early stages of a (manual) patch-clamp experiment. +In the third notebook, this model is used to simulate a manual patch-clamp experiment. The final notebook derives the Level 1 to 5 simplifications, and shows how they relate to our previous work (Lei et al., 2020 and 2025). @@ -91,5 +92,5 @@ Code: https://github.com/CardiacModelling/VoltageClampModel2020 ## Acknowledging this work -If you publish any work based on the contents of this repository please cite the papers listed above. +If you use the contents of this repository in your work, please cite the papers listed above. diff --git a/tutorial/README.md b/tutorial/README.md index 4d73918..1f360c6 100644 --- a/tutorial/README.md +++ b/tutorial/README.md @@ -1,9 +1,9 @@ # Voltage clamp model tutorials -In these notebooks we retrace the steps taken in the supplement to [Lei et al., 2020](https://doi.org/10.1098/rsta.2019.0348) and [2025](https://doi.org/10.1002/advs.202500691), and construct (1) a model of a patch-clamp experiment with various experimental artefacts, and (2) a model of the corrections applied by patch-clamp amplifiers to mitigate these effects. +In these notebooks we construct (1) a model of a patch-clamp experiment with various experimental artefacts, and (2) a model of the corrections applied by patch-clamp amplifiers to mitigate these effects. The initial exposition draws on a book chapter by [Sigworth (1995a)](https://doi.org/10.1007/978-1-4419-1229-9_4), but replaces Laplace-domain analysis with an ODE formulation. -To view the notebooks, use the GitHub or nbviewer links below, or clone the repository and run jupyter notebook locally. +To view the notebooks, use the GitHub or nbviewer links below, or clone the repository and run Jupyter notebook locally. Running locally will require the dependencies from `requirements.txt`. A list of references and further reading is provided [here](./references.ipynb). @@ -30,8 +30,8 @@ The model is updated to include the compensation circuitry commonly used in patc We walk through and simulate the early steps of a manual patch-clamp experiment. ## Simplified models -[![github](./img/github.svg)](./4-simplified.ipynb) -[![nbviewer](./img/nbviewer.svg)](https://nbviewer.jupyter.org/github/CardiacModelling/VoltageClampModel-new/tree/main/tutorial/4-simplified.ipynb) +[![github](./img/github.svg)](./4-simplifications.ipynb) +[![nbviewer](./img/nbviewer.svg)](https://nbviewer.jupyter.org/github/CardiacModelling/VoltageClampModel-new/tree/main/tutorial/4-simplifications.ipynb) In the final notebook, we derive simplified models and compare with previous work. diff --git a/tutorial/tour.ipynb b/tutorial/tour.ipynb index 6192c3e..ef4bc03 100644 --- a/tutorial/tour.ipynb +++ b/tutorial/tour.ipynb @@ -7,10 +7,10 @@ "source": [ "# A quick tour of voltage-clamp models\n", "\n", - "The voltage-clamp models are available in different levels of detail, ranging from the \"full\" model (level 0) to a greatly simplified one (level 5).\n", + "The model is available in different levels of detail, ranging from the \"full\" model (level 0) to a greatly simplified one (level 5).\n", "Here, we provide a quick tour of the most important models, and provide guidance for setting parameter values.\n", "\n", - "_This notebook presents, but does not derive or explain the models. For that, please see the tutorial notebooks_." + "_This notebook presents, but does not derive or explain the models. For that, please see the Tutorial Notebooks_." ] }, { @@ -26,7 +26,7 @@ "\n", "It includes:\n", "\n", - "- A voltage offset $E^\\dagger_\\text{off}$, representing the remaining voltage error after zeroing\n", + "- A voltage offset $E^\\dagger_\\text{off}$ representing the remaining voltage error after zeroing\n", "- A leak current $I_\\text{leak}$\n", "- The effect of series resistance $R_s$ on the membrane potential\n", "- Series resistance compensation, $\\alpha$, and prediction, $\\beta$, both specified as fractions between 0 and 1." @@ -53,26 +53,26 @@ "id": "6d59f32b-7b30-4c3e-b4a2-0484d787cf74", "metadata": {}, "source": [ - "| Variable | Units | Meaning |\n", - "|-----------------|-------|-----------------------------------------------------------|\n", - "| $V_m$ | mV | Membrane potential |\n", - "| $V_c$ | mV | The command potential, set by the voltage clamp protocol |\n", - "| $I$ | pA | The ionic current |\n", - "| $I_\\text{obs}$ | pA | The observed (measured/output) current |\n", - "| $I_\\text{leak}$ | pA | A leak current, e.g. $g_\\text{leak}(V_m - I_\\text{leak})$ |\n", + "| Variable | Units | Meaning |\n", + "|-----------------|-------|---------------------------------------------------------|\n", + "| $V_m$ | mV | Membrane potential |\n", + "| $V_c$ | mV | Command potential, set by the voltage clamp protocol |\n", + "| $I$ | pA | Ionic current |\n", + "| $I_\\text{obs}$ | pA | Observed (measured/output) current |\n", + "| $I_\\text{leak}$ | pA | Leak current, e.g. $g_\\text{leak}(V_m - I_\\text{leak})$ |\n", "\n", - "The variables $I$ and $I_\\text{leak}$ should be supplied by an ionic current model and leak model, respectively.\n", + "The variables $I$ and $I_\\text{leak}$ should be supplied by an ionic current model and a leak model, respectively.\n", "\n", "| Parameter | Units | Meaning | Typical value |\n", "|-----------|-----------|-----------------------------------------------------|-----------------|\n", - "| $C_m$ | pF | The cell capacitance, from the amplifier estimate | 25 pF |\n", - "| $R_s$ | G$\\Omega$ | The series resistance, from the amplifier estimate | 0.005 G$\\Omega$ |\n", + "| $C_m$ | pF | Cell capacitance, from the amplifier estimate | 25 pF |\n", + "| $R_s$ | G$\\Omega$ | Series resistance, from the amplifier estimate | 0.005 G$\\Omega$ |\n", "| $\\alpha$ | - | Fraction of $R_s$ compensation, read from amplifier | 0.7 |\n", - "| $\\beta$ | - | Fraction of $R_s$ compensation, read from amplifier | 0.7 |\n", + "| $\\beta$ | - | Fraction of $R_s$ prediction, read from amplifier | 0.7 |\n", "| $E^\\dagger_\\text{off}$ | mV | Remaining voltage offset after zeroing | 0 mV |\n", "\n", "In a simple simulation $E^\\dagger_\\text{off}$ is chosen by the user.\n", - "In inference settings, $E^\\dagger_\\text{off}$ may be a parameter inferred from the data." + "In inference settings it may be a parameter inferred from the data." ] }, { @@ -93,7 +93,7 @@ "This level adds\n", "\n", "- A distinction between estimated and true membrane capacitance and series resistance\n", - "- A state-estimator used to approximate $V_e$ in the \"prediction\" pathway" + "- A state-estimator used to approximate $V_m$ in the prediction pathway" ] }, { @@ -121,20 +121,20 @@ "source": [ "New or changed variables and parameters are\n", "\n", - "| Variable | Units | Meaning |\n", - "|----------|-------|-------------------------------------------------------|\n", - "| $V_e$ | mV | An estimate of $V_m$ used in the \"prediction\" pathway |\n", + "| Variable | Units | Meaning |\n", + "|----------|-------|--------------------------------------------------|\n", + "| $V_e$ | mV | Estimate of $V_m$ used in the prediction pathway |\n", "\n", "And\n", "\n", - "| Parameter | Units | Meaning | Typical value |\n", - "|-----------|-----------|---------------------------------------------------------|-----------------|\n", - "| $C_m$ | pF | The true cell capacitance, unknown in real experiments | 25 pF |\n", - "| $C^*_m$ | pF | The estimated cell capacitance, read from amplifier | 25 pF |\n", - "| $R_s$ | G$\\Omega$ | The true series resistance, unknown in real experiments | 0.005 G$\\Omega$ |\n", - "| $R^*_s$ | G$\\Omega$ | The series resistance, read from amplifier | 0.005 G$\\Omega$ |\n", + "| Parameter | Units | Meaning | Typical value |\n", + "|-----------|-----------|--------------------------------------------------|-----------------|\n", + "| $C_m$ | pF | True cell capacitance, unknown | 25 pF |\n", + "| $C^*_m$ | pF | Estimated cell capacitance, read from amplifier | 25 pF |\n", + "| $R_s$ | G$\\Omega$ | True series resistance, unknown | 0.005 G$\\Omega$ |\n", + "| $R^*_s$ | G$\\Omega$ | Estimated series resistance, read from amplifier | 0.005 G$\\Omega$ |\n", "\n", - "For a straightforward simulation, $C_m$ and $R_s$ can be chosen by the user.\n", + "For a straightforward simulation, $C_m$ and $R_s$ are chosen by the user.\n", "In an inference setting, $C_m$ and $R_s$ may be inferred from the data long with $E^\\dagger_\\text{off}$." ] }, @@ -197,22 +197,21 @@ "source": [ "New variables and parameters are\n", "\n", - "| Variable | Units | Meaning |\n", - "|----------|-------|-------------------------------------------------------------|\n", - "| $V_r$ | mV | The voltage on one side of the measurement electrode |\n", - "| $V_s$ | mV | The filtered command potential |\n", - "| $V_rc$ | mV | The filtered voltage used in series resistance compensation |\n", - "| $V_s$ | mV | The voltage on one side of the measurement electrode |\n", - "| $I_1$ | pA | The output current before filtering |\n", + "| Variable | Units | Meaning |\n", + "|---------------|-------|---------------------------------------------|\n", + "| $V_r$ | mV | Reference voltage set by the voltage clamp |\n", + "| $V_s$ | mV | Filtered command potential |\n", + "| $V_\\text{rc}$ | mV | Filtered voltage used in $R_s$ compensation |\n", + "| $I_1$ | pA | Unfiltered output current |\n", "\n", "And\n", "\n", - "| Parameter | Unit | Meaning | Typical value |\n", - "|------------------|-----------|------------------------------------------------------------|---------------|\n", - "| $\\tau_\\text{RC}$ | ms | Time constant of filter in series resistance compenstation, read from amplifier|0.01 ms|\n", - "| $\\tau_s$ | ms | Time constant of stimlus filter, estimated from fits | 0.025 ms |\n", - "| $\\tau_o$ | ms | Time constant of 1st order approximation of output filter | 0.01 ms |\n", - "| $R_f$ | G$\\Omega$ | The measurement resistor, found in headstage documentation | 0.5 G$\\Omega$ |\n", + "| Parameter | Units | Meaning | Typical value |\n", + "|------------------|-----------|----------------------------------------------------|---------------|\n", + "| $\\tau_\\text{RC}$ | ms | Time constant of filter in $R_s$ compenstation, read from amplifier|0.01 ms|\n", + "| $\\tau_s$ | ms | Time constant of stimulus filter, unknown | 0.025 ms |\n", + "| $\\tau_o$ | ms | Time constant of output filter, see below | 0.01 ms |\n", + "| $R_f$ | G$\\Omega$ | Measurement resistor, from headstage documentation | 0.5 G$\\Omega$ |\n", "\n", "To estimate $\\tau_s$ in a real amplifier, you can record the filtered output voltage and fit to it.\n", "The value above corresponds to the \"slow\" (default) setting on a HEKA EPC-10.\n", @@ -235,7 +234,7 @@ "\n", "This level adds\n", "\n", - "- A pipette (conventional patch clamp) or parasitic (planar patch clamp) capacitance $C_p$, and its amplifier estimate $C^*p$\n", + "- A pipette (conventional patch clamp) or parasitic (planar patch clamp) capacitance $C_p$, and its amplifier estimate $C^*_p$\n", "- A stray capacitance on the measurement resistor $\\tilde{C}_f$, and a finite op-amp speed with time constant $\\tau_a$\n", "- A two-part output filter, where \"Filter 1\" affects series resistance compensation, while \"Filter 2\" does not.\n", "- Arbitrary equations for the output filters and the stimulus filter (allowing e.g. Bessel formulations)" @@ -293,42 +292,27 @@ "id": "7cc410ae-a332-4fdd-9f04-459790d43ef2", "metadata": {}, "source": [ - "# TODO\n", - "\n", "New variables and parameters are\n", "\n", - "| Variable | Units | Meaning |\n", - "|----------|-------|-------------------------------------------------------------|\n", - "| $V_r$ | mV | The voltage on one side of the measurement electrode |\n", - "| $V_s$ | mV | The filtered command potential |\n", - "| $V_rc$ | mV | The filtered voltage used in series resistance compensation |\n", - "| $V_s$ | mV | The voltage on one side of the measurement electrode |\n", - "| $I_1$ | pA | The output current before filtering |\n", + "| Variable | Units | Meaning |\n", + "|----------|-------|------------------------|\n", + "| $V_o$ | mV | Op-amp output voltage |\n", + "| $V_p$ | mV | Pipette potential |\n", + "| $V_1$ | mV | Voltage after filter 1 |\n", + "| $V_2$ | mV | Voltage after filter 2 |\n", "\n", - "And\n", "\n", - "| Parameter | Unit | Meaning | Typical value |\n", - "|------------------|-----------|------------------------------------------------------------|---------------|\n", - "| $\\tau_\\text{RC}$ | ms | Time constant of filter in series resistance compenstation, read from amplifier|0.01 ms|\n", - "| $\\tau_s$ | ms | Time constant of stimlus filter, estimated from fits | 0.025 ms |\n", - "| $\\tau_o$ | ms | Time constant of 1st order approximation of output filter | 0.01 ms |\n", - "| $R_f$ | G$\\Omega$ | The measurement resistor, found in headstage documentation | 0.5 G$\\Omega$ |\n", + "And\n", "\n", - "To estimate $\\tau_s$ in a real amplifier, you can record the filtered output voltage and fit to it.\n", - "The value above corresponds to the \"slow\" (default) setting on a HEKA EPC-10.\n", + "| Parameter | Units | Meaning | Typical value |\n", + "|---------------|-------|----------------------------------------------------|---------------|\n", + "| $C_p$ | pF | True pipette capacitance, unknown | 5 pF |\n", + "| $C^*_p$ | pF | Estimated pipette capacitance, read from amplifier | 5 pF |\n", + "| $\\tilde{C}_f$ | pF | Compensated stray capacitance on measuring resistor, unknown | 5e-3 pF |\n", + "| $\\tau_a$ | ms | Time constant of measurement op-amp, unknown | 13e-6 ms |\n", "\n", - "To estimate $\\tau_o$, you can use $\\tau_o \\approx \\frac{1}{2 \\pi f}$, where $f$ is the filter's cut-off frequency in kHz.\n", - "\n", - "Note that exact values of $\\tau_s$ and $\\tau_o$ are seldom crucial." + "The given values of $\\tilde{C}_f$ and $\\tau_a$ were estimated by fitting to model cell experiments with a Heka EPC-10." ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2332084c-5e5d-4dc1-aed9-fdc3019ffe8b", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": {