Most of my current coding work has been done in the form of Matlab scripts, FIJI/ImageJ macro scripts, and some Python. Here, I’ll lay out some of my code and contributions for personal use. Feel free to check my Github profile, where I host chunks of my code when packaged appropriately.

I am still transitioning from Matlab to Python at the moment for the sake of open-source, I figured it would be at least worthwhile to share some useful code that I have compiled. Please bare with me as i figure things out.


I have pulled together s GUI in FIJI to make some of my most frequently image processing tools more easily accessible. This was born out of a personal need in helping people perform simple image analysis tasks around the lab. Rather than have them dig through 4 or 5 submenus to find a process they need, I made it into a bunch of front panel buttons.

Vanderbilt Biophotonics Center FIJI GUI


This is packaged into FIJI via an update site listed under the ‘Vanderbilt Biophotonics Center’. To install: Open FIJI –> Help –> Update –> Manage Update Sites –> Check off ‘Vanderbilt Biophotonics Center’–> close update sites window –> apply changes and wait for install to finish–> restart FIJI and you should be good to go. Consider adding ‘BioFormats‘, ‘CLIJ“, ‘NeuroCyto LUTs’ and ‘SCF-MPI-CBG’ for some useful additional functionality in FIJI.

Alternatively, I have posted my FIJI startup macros on Github, which you are welcome to download and try out. Just replace your FIJI/ImageJ ‘StartupMacros.fiji.ijm’ file with the one from Github and you should be good to go.

I have a series of extra menus for image processing projects that I have worked on and attempted to streamline for some of our user systems. Those are accessible through the ‘>>’ menu list. These will grow and update with time, as I work on more projects. All code is available to modify to your heart’s desire in your local FIJI install folders.

NeuroCyto LUTs

Most of my own custom lookup table (LUTs, false color maps, etc.) collections are available through my update site/ But luckily for us, Dr. Christophe Leterrier (Twitter, Lab Site), designated international LUTs sorcerer, has pooled together a repository of LUTs from across the web that is growing extensively. If you would like more LUTs than you know what to do with (including all of mine), subscribe to the ‘NeuroCyto LUTs’ update site in FIJI.

FIJI Update Sites & Plugins

For general image processing, here’s some of my favorite update sites and descriptions:
1) Bioformats – Lets you read proprietary image files from commercial image acquisition software from Nikon, Olympus, Zeiss, Leica, microManager, ThorImageLS, MetaMorph, MetaFluor, etc. Imports metadata along with images!!!!
2) BigStitcher – For stitching together large FOV’s and multi-volume data sets. Great for light-sheet and confocal fluorescence image data.
3) 3D ImageJ Suite – Bunch of useful 3D image processing tools.
4) CLIJ – GPU-accelerated FIJI is finally here! A bridge between openCL and java, CLIJ lets you take advantage of GPU processing speeds in a simple GUI or macro based interface.
5) IJPB-plugins – MorphLibJ is an awesome set of filters and segmentation tools i find myself using constantly for preprocessing and analysis pipelines.
6) ClearVolume – 3D Data Viewing software. RAM intensive, but helps make pretty images.
7) SCF-MPI-CBG – This update site has a really nice interactive watershed segmentation tool that I swear by. Works great.
8) 3Dscript – the best 3D visualization and animation rendering software I have used. It’s amazing that it’s free. Great for making pretty animations of 3D imaging data sets.
9) Biomedgroup – Useful interactive filtering tools
10) NeuroCyto LUTs – more color maps than you will know what to do with.
11) CSBDeep – Deep learning based fluorescence image enhancement. Content-aware image restoration.

Post-Hoc Flatfield correction / Background Subtraction

You can find this code at this Github repository. I made this to homogenize inconsistent fluorescence background across my images that were not easily addressable with a normal rolling ball filter. Additionally, it adds back the baseline gray scale value of your images, so you can normalize your data with respect to your detected background more effectively (something that many background subtraction methods don’t let you do). It’s been helpful for my calcium imaging experiments, where my background fluorescence kills me. See an example below.

Raw image on the left | Corrected data on the right.

Try it out for yourself and let me know how you like it.

Time-Series Stack Self Normalization

Example normalized stack of astrocyte calcium activity in vitro

This is a FIJI/ImageJ script used to normalize a timeseries image stack (for visualization purposes) to the stack average between a designated range of frames. Divergent LUTs are recommended for visualization (ICA, ICA2, ICA3, OrangeLowCyanHigh, PurpleLowGreenHigh, etc) You can download this macro on Github.

Matlab Packages

There’s a ton of great Matlab packages out there. Here’s some that I find particularly useful:

MonteCarlo eXtreme – GPU-accelerated Monte-Carlo based photon transport simulation package. Supports extensive geometries and finite element meshes. Consistently outperforms our CPU-based simulations by several orders of magnitude.

Superbar – Bar plotting in Matlab is close to the most hellish task I’ve needed to attempt. It’s a literal nightmare – mostly because Matlab is bad with tabular (tidy) data. Luckily, Superbar makes that task drastically less crappy. It handles data, bar groupings, error bars, statistical significance testing, and much more. It’s not perfect, but far far better than the native Matlab bar plotting functionality. Additionally, I have written a code that will automatically run two-sided t-test comparisons of your data given an input sample size. Use and modify to your hearts content.

FIJI-to-MATLAB Colormap (LUT) Converter

Coming Soon

Matlab Rainbow plot

Coming Soon