dyClamp (host) controllerA live graphical user interface (client) for the real-time
pyClamp is a feature-complete graphical user interface written in Python to demonstrate the flexibility of the novel dynamic clamp implementation: The current user interface focuses on data consistency (between the interface and the dynamic clamp system) and data transparency (with the option of monitoring any values live). Furthermore, a lab journal will keep track of new experiments and record all relevant settings with corresponding timestamps.
When uploading conductance values or calibration parameters to the Teensy, the user interface checks the status of the transmissions with the Teensy's command echos. If a transmission failure is detected, an error message will be displayed in the status field and the current values will be downloaded from the Teensy. A green background indicator then highlights all up-to-date values. In addition, all values that have exclusively been changed in the user interface - but have not yet been uploaded - are indicated by a white background. Furthermore, incorrect entries (with letters or invalid characters) are highlighted in red, while all transmission buttons are temporarily disabled.
The live reports feature allows users to monitor any values on the Teensy live. To demonstrate this feature, the latest values of the membrane potential, the injected current, and the cycle time are visualized every 20 ms. When implementing new current models or defining new trigger events, the live reports will help with debugging and understanding the dynamic clamp setup.
Every time an experiment is started or modified (Start button), a new lab journal entry is created. The new entry contains the start time, the present conductance values, and the calibration parameters. Once the experiment is stopped (Stop button), the entry is finalized with a corresponding timestamp.
Experiment started: Sat May 29 11:49:26 2021 G_Shunt [nS] 0.00 G_H [nS] 0.00 G_Na [nS] 0.00 OU1_m [nS] 0.00 OU1_D [nS^2/ms] 0.00 OU2_m [nS] 0.00 OU2_D [nS^2/ms] 0.00 G_EPSC [nS] 0.00 AMP_i [mV/mV] 50.00 AMP_o [pA/V] 400.00 ADC_m [mV/1] 5.50 ADC_n [mV] -11500.00 DAC_m [1/pA] 750.00 DAC_n [0-4095] 2000.00 VLT_d [mV] 0.00 Experiment started: Sat May 29 12:00:54 2021 G_Shunt [nS] 2.00 G_H [nS] 0.00 G_Na [nS] 0.00 OU1_m [nS] 0.00 OU1_D [nS^2/ms] 0.00 OU2_m [nS] 0.00 OU2_D [nS^2/ms] 0.00 G_EPSC [nS] 0.00 AMP_i [mV/mV] 50.00 AMP_o [pA/V] 400.00 ADC_m [mV/1] 5.50 ADC_n [mV] -11500.00 DAC_m [1/pA] 750.00 DAC_n [0-4095] 2000.00 VLT_d [mV] 0.00 Experiment stopped: Sat May 29 12:04:29 2021
If you want to use pyClamp in your dynamic clamp setup, you can either download the bundled versions for Windows from the releases page or run it directly from the source script. In the latter case, you'll need recent versions of Python, NumPy, Matplotlib, and PySerial. However, the latest Windows versions of all of these extension packages can be downloaded from Christoph Gohlke's repository. These are my version recommendations:
- Python (>= 3.7.3)
- NumPy (>= 1.16.2)
- Matplotlib (>= 3.0.3)
- PySerial (>= 3.4.0)