This page will feature news and updates. In particular, any changes to the software will be described here. The most current version of the software will always be the one available on the Download page.

March 14, 2018

Finding electrode. Applied a number of improvements and bug fixes to the procedure for finding an electrode and directing it to a craniotomy.

September 18, 2017

Dynamic clamp. A paper describing the dynamic clamp system I mentioned in the August 30 update has been accepted by eNeuro. The accepted manuscript was just posted at the eNeuro site: http://www.eneuro.org/content/early/2017/09/18/ENEURO.0250-17.2017. The final, copy-edited version should appear within a few weeks.

The Extended Data mentioned in the manuscript can be found by following this link: https://utexas.box.com/s/3di1kflcwn8yzmq5s6ei41tb73ky7l0i.

We have also created a companion website to this one, dynamicclamp.com, which will contain any post-publication improvements to the hardware and/or software.

August 30, 2017

Dynamic clamp. Distinct from this project but related to it is another open-source project on which we have been working at UT-Austin: a fast, microcontroller-based dynamic clamp system. The maker movement has produced many good products that allow non-specialists and enthusiastic amateurs to learn about technology and build useful tools. One such product is the Teensy 3.6 microcontroller (pjrc.com). I have been playing with the Teensy 3.6 for several months, and I can say — without reservation — from my own experience that it is excellent: fast, lots of memory, a floating-point unit, good features, reliable. Paul Stoffregen, its maker, should be proud; he’s made a real contribution. The technical support available in the forums at pjrc.com is also very helpful.

We built a dynamic clamp system around the Teensy 3.6. The system is fast, inexpensive (<$100), and simple enough (to build and use) that it is accessible even to beginning neuroscience graduate students who have no prior experience with electronics or programming. We will be presenting a poster on this project at the Society for Neuroscience meeting in Washington in November (the abstract just appeared online), and will soon (hopefully, referees willing) have a publication on the system.

August 13, 2017

Multiclamp. On June 7, I noted that Molecular Devices had updated their Commander software for Multiclamp 700B (though not 700A) to include 64 bit support. The new software should now work with the software of this site. Let me know (by email or through this site) if you encounter any problems.

June 7, 2017

Directories. A few files (ni.m, createsavedirectory.m, and ap.m) use the Matlab function userpath to get the name of the main Matlab directory. Before Matlab 2017a, the name returned by userpath ended in a semi-colon — but now it does not. I modified the files to take care of both cases.

Multiclamp. Molecular Devices recently updated their Commander software for Multiclamp 700B (though not 700A). The new software is 64 bit and is explicitly supported for Windows 10. My preliminary tests (conducted today) suggest that the software I discussed in my May 26, 2016 update will work with the new Commander software with a couple of small modifications. However, I need to test this more and have not updated my software yet. Until I do, users should continue to use the 32-bit Commander software.

December 9, 2016

Data acquisition. Added the capability of using data saved in a MAT file or a text file (ASCII) as the output of the ni data acquisition program. See example 7 of the document Data_acquisition.pdf. The files that have been altered are createoutputs.m and readstimulusfromfile.m in the “outputs” subfolder of the “daq” folder.

July 1, 2016

Bug fixes. Fixed bugs in continuousdisplay.m (to make sure the output is zeroed when the oscilloscope turns off), MulticlampControl.sln (to make sure the value of pipette capacitance compensation remains within bounds), and getmulticlampinfo.m (so that the current clamp scaling is correct for both the Multiclamp 700A and the Multiclamp 700B).

May 26, 2016

Multiclamp 700A/700B. Although the system (meaning both the automated patch clamp system and the standalone data acquisition system) can work with a variety of patch clamp amplifiers, it was designed with Multiclamp amplifiers from Molecular Devices in mind. Until now, system control of Multiclamp amplifiers was limited to 32-bit Matlab and was further limited in the operations available, but with some new code introduced here the system now supports 64-bit Matlab and nearly every operation a user is likely to desire. The fix is not elegant, but it works. Briefly, I wrote a Visual Studio C++ project (MulticlampControl.sln)  to control the Multiclamp Commander using libraries (AxMultiClampMsg.h,  AxMultiClamp.lib, AxMulticlamp.dll) provided by Molecular Devices. The resulting executable can be called, with arguments describing what should happen, using a Matlab system command. Some users may find that they have to recompile the C++ code in order to get the system to recognize their Multiclamp amplifiers. Instructions for how to do so are given in Multiclamp.pdf in the documentation folder.

Users who downloaded code (daq) from this site in the past should replace it entirely with the code now present in the UT Box folder, in order to make sure they get everything and that there are no conflicts.

One caveat: The Molecular Devices libraries that allow for third party software to interface with the Multiclamp Commander were written in 2004, around the time Axon Instruments was acquired by Molecular Devices. As far as I can tell, Molecular Devices has done nothing in the interim to update or improve the libraries. I don’t know what plans Molecular Devices has for its cellular electrophysiology business or whether it even intends to stay in the business, but the tea leaves are not encouraging: Multiclamp Commander 700B software is presently only supported up to Window 7 — it works with Windows 8 and 10, but no official support is guaranteed; Multiclamp Commander 700A software is only supported up to Window XP, which was introduced in 2001 and which Microsoft itself no longer supports.  So it’s hard to say whether some change in Windows or Multiclamp will spoil things in the not-so-distant future. All I can say is that this works for now.

April 9, 2016

Press coverage. The automated patch clamp program was featured (well … mentioned) in a news article in the most recent issue of Nature. An online version, which is part of Nature‘s Toolbox section, may be found at this address:


Note that I wrote a comment at the end of the online story bringing up an issue — anesthetized animals versus awake animals — that the article did not mention, but that I think is important.

March 5, 2016

Bug fixes. A few bug fixes have been implemented. Nothing an ordinary user is likely to notice, but still good to do.

Pressure regulation.  I still haven’t added automatic PID parameter tuning, despite my best intentions at Halloween. But soon. Really soon. Sorry.

January 10, 2016

Pressure regulation. Improved the pressure regulation in two ways: (1) Added handshaking between Matlab and Arduino to check for successful communication between the two. (2) Altered how PID parameters are transmitted (two bytes rather than one) to increase precision. Still working on automatic PID tuning.

November 6, 2015

Data acquisition. A few small bug fixes to the data acquisition (DAQ) program. In particular, one can now use the principal DAQ program (ni) even when the automated patch program (ap) is open. Previously ap locked up the National Instruments board until it was closed; now ni can take over when ap is not actively acquiring data.

October 31, 2015

Pressure regulation. Well, Halloween has come and gone, and I haven’t added the four things I said I would in my October 9 post. The first (Zener diode for faster switching) was a bad idea; the solenoid valves would get too hot. The second is now part of the program, because of the switch from Arduino Due to Arduino Uno. The third and fourth are more difficult than I thought they would be — especially the third. I expect to add an automatic PID tubing routine to the program in the next week or two. Handshaking between Arduino and Matlab has (curiously) been a much harder nut to crack, even though it sounds like it should be completely straightforward. I might write a longer post on this shortly. But, in any case, let me offer a new deadline for the pressure regulation improvements: Thanksgiving 2015 (November 26). In that spirit:


October 26, 2015

Pressure regulation. Modified the pressure regulator so that it uses an Arduino Uno rather than an Arduino Due. This improves things in three ways: (1) The Uno is a little cheaper than the Due ($25 vs $50). (2) By using a MCP4725 digital-to-analog converter (DAC) rather than the Due’s builtin DAC outputs, we get much better dynamic range. The Due’s outputs are limited to the range 0.55 V to 2.75 V, whereas the Uno plus MCP4725 can go from 0 V to 5 V. (3) The Uno has 5 V digital inputs/outputs as opposed to the Due’s 3.3 V digital inputs/outputs. Although 3.3 V logic may be the wave of the future (because of lower power consumption), it’s not quite there yet. An Uno is a little easier to use with existing 5 V devices. The Due does have a faster processor than the Uno and more digital inputs/outputs, but for this application those things do not matter.

This update takes care of the second improvement I (NSD) mentioned in my 10/9/15 post. I’ve decided the first improvement (faster switching with a Zener diode) is a bad idea because the solenoid valves would get too hot and be quickly damaged. I’m still working on the last two.

October 9, 2015

Pressure regulation. (COMING SOON: Halloween 2015) The Arduino-based pressure regulator works well enough for its intended use, but there are multiple ways in which it could be improved. Mostly to motivate myself to follow through, here I (NSD) make note of four (new and improved!) features that I have been working on and pledge to add by Halloween of this year (Saturday, October 31, for the non-Americans): (1) a Zener diode circuit to increase the speed of solenoid valve switching; (2) a 3.3V-to-5V logic level shifter to make opening and closing of (5 V) MOSFETs by a (3.3V) Arduino Due less sensitive to noise; (3) a handshaking protocol for serial communication between Matlab and Arduino to make sure there are no misunderstandings; and (4) Arduino and/or Matlab/Simulink code for automatic PID parameter tuning. Happy Halloween and let’s all get ready to welcome the Great Pumpkin!


(Charles M. Schulz was a strange and interesting man. I’ve been reading the David Michaelis biography — highly recommended.)

July 23, 2015

Oscilloscope. Added an oscilloscope feature to the data acquisition program. This will allow users who don’t have a physical oscilloscope to use the program to observe signals in real time. The feature’s use is described on the last pages of the document Data_acquisition.pdf.

Pressure regulation. Modified the M-file adjustpid so that the pressure display will be updated continuously rather than just every few seconds.

Pressure regulation. Modified the Arduino program for pressure regulation, as well as the accompanying documentation, so that 10 kOhm and 20 kOhm resistors are used in the voltage divider connected to the Honeywell sensor rather than 1 kOhm resistors. This change will allow us to utilize the Arduino Due analog input’s full precision when measuring pressure.