Molecular Neuroscience and Biophysics (Andrew Plested)


Over the course of years of research, it has become convenient to write scripts to perform calculations that are not available in commercial programs. Scripts are generally written in Python, making use of the extensive C-libraries for number-crunching, or gluing together functions in external software. Python is a high-level, non-compiled language that is easy to read and has many neat features. The scripts are written to run under Mac OSX, from the command line, but can also be adapted to Windows without much bother. 

A good example is the non-stationary analysis of variance that was used for studies of kainate receptor open probability (Plested and Mayer, 2007; Plested et al., 2008). This suite of scripts ("Verify") checks the noise in each record for anomalous features and automatically rejects bad records (according to Heinemann and Conti, 1992). I am not aware of any commercial software that does this simple but essential check. Recently, we produced a GUI-controlled version, now uploaded to Github. 

We also have some minor involvement in the porting of the DCProgs suite of single ion channel analysis programs from Fortran to Python. This project, which is now available at GitHub, is almost entirely the work of Remis Lape (UCL, London).  We have contributed our code for making realistic concentration jumps (RCJ; Lape et al, 2012, Yu et al. 2018). According to the calculations of Sachs, the diffusion between two parallel flowing solutions produces a concentration profile like the error function (erf). We have implemented Python routines to construct realistic concentration profiles and calculate the occupancy of receptor mechanisms during the jump. This script enables us to produce concentration jumps in the computer that closely resemble the concentration jumps we make in the lab.

Other routines for calculating peak open probability-concentration relations, recovery from desensitization and other responses to ligands ("Aligator"-Analyis of LIgand GAting, Trains and Other Relaxations) have been used to test mechanistic ideas about glutamate receptor gating and the effects of mutations (Carbone and Plested, 2012, Carbone and Plested, 2016, Riva et al. 2017, Yu et al. 2018, Poulsen et al., 2018). A basic form of the Aligator suite is available at Github

Another collaboration with Remis Lape that you can get from Github is the port of the DC-Statistics routines to Python. Null Hypothesis Significance Testing by Randomization, Fieller's test and Effect size calculator are all included, based on David Colquhoun's stats tools. There is a Qt5-based GUI, which should work on Windows, Mac and Linux. 

We recently wrote a script to exploit functions in CCP4 ( and Pymol ( to generate models of glutamate receptor binding domains that satisfy particular crosslinking constraints ("Cystance"). This script was used in our ERC-funded project "GluActive" and published in Baranovic and Plested (2018). 

We developed a Python script to have computer control of an Olympus IX-81 automated microscope. The principal advantage over other methods (e.g. proprietary software or Micro Manager) is flexibility - the control software can accept trigger inputs and analog voltage input - via an Arduino micro controller. 

Current efforts focus on single channel analysis, using both Python and Swift, which offers incredible graphics and performance via intuitive interfaces on cheap hardware (iPads). Follow along at the AGPlested Github page.

If you are interested in using any of the scripts that are not already freely available, please email Andrew at:

plested [at]



Baranovic and Plested (2018) eLife

Carbone and Plested (2012) Neuron

Heinemann and Conti (1992) Methods in Enzymology

Lape et al (2012) Journal of Neuroscience

Plested and Mayer (2007) Neuron

Plested et al (2008) Neuron

Sachs (1999)  Biophys J.

Yu et al (2018) Neuron


Leibniz-Forschungsinstitut für Molekulare Pharmakologie im Forschungsverbund Berlin e.V. (FMP)
Campus Berlin-Buch
Robert-Roessle-Str. 10
13125 Berlin, Germany
+4930 94793 - 100 
+4930 94793 - 109 (Fax)

Like many sites, we use cookies to optimize the user's browsing experience. Data Protection OK