Open source software

Electronic Lab Notebook

NotedELN is an Electronic Lab Notebook for scientists of all stripes. NotedELN is great for:

  • Recording your thought processes, since it will never get in the way of your typing with arbitrary constraints on input formatting.
  • Taking notes during experiments since it automatically saves your input every 10 seconds so that your notes will never be lost;
  • Keeping track of data analysis results since screenshots and other graphics can be added to a notebook page by drag-and-drop or copy-and-paste;
  • Recording your lit searches, since it will automatically download papers from PubMed and archive them with your notebook;

Binaries are available for Windows, Mac OS, and Linux. Users of Debian and Ubuntu Linux may obtain NotedELN with a simple “apt install notedeln”.

Electronic circuit layout

CSchem is a program for designing electronic circuits. Unlike other programs of this type, CSchem focuses on creating elegant circuit drawings that can be used directly in publication. CSchem is particularly intended for users who, like its author, may not be full-time electrical engineers, but who occasionally design electronics in the course of their work/study/hobbies.

CPCB is an accompanying PCB layout program. It can export to standard Gerber files so you can have your boards manufactured anywhere.

Binaries are available for Ubuntu Linux and Windows.

More elegant plotting from Python and Matlab

QPlot is an alternative 2D plotting library for Python, Matlab, and Octave that facilitates beautiful typography and precise axis scaling.

Binaries are available for Ubuntu Linux and for Windows. (On Windows, only Python is currently supported.) Compiling from source on other Linux versions or on Mac OS should be straightforward.

Software oscilloscope and pulse generator for electrophysiology

EScope is a digital storage oscilloscope written in Python for use with National Instruments data acquisition boards. Primarily intended for electrophysiology in a classroom or lab context, EScope can handle up to 8 channels simultaneously and allows y-axis labeling with real units if you tell it the scale factors of your amplifier. Sweeps can be saved to disk as they are acquired, allowing for post-hoc analysis.

Accompanying EScope, is ESpark, a stimulus generator that can drive up to 4 analog or digital channels simultaneously. ESpark is easier to use than most hardware solutions, as it visualizes your pulses and pulse trains on screen.

An installation package is available for Windows. Running on other operating systems is restricted by the availability of the NI DAQmx library and its support for your data acquisition system.

Plugins and analysis tools for OpenEphys

When combining extracellular electrical stimulation and recording in the same experiment, it is common to observe large stimulation artifacts in the recorded traces. These often overwhelm the headstage amplifier briefly and comprise a longer lasting decay phase. Two decades ago, we published the SALPA algorithm for dealing with this situation. Now, this algorithm is available as a plugin for OpenEphys and also as a standalone version with a python frontend.

EPhysIO is a Python package that makes loading OpenEphys data much easier. It also contains the vizio module for rapid visualization of raw voltage data.

General Python library code

A collection of Python modules that have found use in multiple Lab projects. At present, documentation is limited to docstrings in the individual modules. Perhaps the most useful function is fitx.physfit, which does a really nice job of function fitting for many cases commonly encountered in physics and other sciences. Unlike most function fitters, it allows explicit specification of measurement uncertainties for both x and y variables. The various findx.findfirst functions are also useful as is peakx.schmitt. ppersist is a module for conveniently storing and reloading multiple variables in a single file, much like Matlab’s save/load. Although it uses the pickle module as a backend, it is intended to be secure and has so far resisted (white-hat) attempts at breaking it. Many more useful functions are hidden throughout, and more accessible documentation is in the works.

PhysFit was inspired by a program that was used in Caltech’s freshman physics lab in the early 2000s. Unfortunately, I have since lost that program. If you know the author, please get in touch so I can give proper credit.

Photo collection management

Not actually a Lab project, but rather a weekend effort, Photohoard is a program to manage your collection of photographs. Photohoard is also a nondestructive editor with tools for cropping and for adjusting lighting, color, and sharpness. Adjustments can be made to an entire photo or selectively to specific areas of the image.