Skip to content
A live graphical user interface for the dyClamp sketch
Branch: master
Clone or download
Latest commit 55cd6f5 May 22, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
media Add files via upload Apr 1, 2019
LICENSE Initial commit Mar 23, 2019
README.md Update README.md May 22, 2019
pyClamp.pyw Add files via upload May 14, 2019

README.md

pyClamp

A live graphical user interface for the dyClamp sketch

DOI

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.

Video demonstration 🎥 (6.5 MiB, H.264/MPEG-4 AVC) of dyClamp and pyClamp producing and monitoring a current command for the Axopatch 200B amplifier.

Cross-reference: dyClamp is a further development of the dynamic_clamp sketch with a focus on a robust serial communication between the Teensy and its controlling host computer.

Screenshot

Data consistency

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.

Data transparency

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.

Lab journal

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.

Example:

Experiment started:	Mon Apr  1 15:34:50 2019
G_Shunt	[nS]    	     0.00
G_H 	[nS]       	    20.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]   	   100.00
AMP_o	[pA/V]    	  2000.00
ADC_m	[mV/1]    	     5.61
ADC_n	[mV]      	-12096.07
DAC_m	[1/pA]    	 33064.41
DAC_n	[0-4095]  	  1854.43
VLT_d	[mV]      	     0.00
Experiment started:	Mon Apr  1 15:35:05 2019
G_Shunt	[nS]    	     0.00
G_H 	[nS]       	    10.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]   	   100.00
AMP_o	[pA/V]    	  2000.00
ADC_m	[mV/1]    	     5.61
ADC_n	[mV]      	-12096.07
DAC_m	[1/pA]    	 33064.41
DAC_n	[0-4095]  	  1854.43
VLT_d	[mV]      	     0.00
Experiment stopped:	Mon Apr  1 15:35:11 2019

Software requirements

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)

Acknowledgements

I would like to thank Cathy Proenza, Alexander Polster, and Andrew Scallon for providing ressources and valuable feedback during the development process.

Development & Bug reports

If you would like to participate in the development, please fork this repository to your GitHub account. In order to report a problem, please create a new issue in this repository.

Your feedback is welcome! Please contact me at GitHub or via e-mail.

You can’t perform that action at this time.