Eppi Tube Vortexing En Masse

We’ve recently started working with water-in-oil emulsions that let us grow our E. coli populations in millions of tiny isolated droplets of media (the video shows a confocal 3D projection of some droplets with GFP/RFP tagged cells). The method we’re using is based on Herwig Bachmann’s 2013 PNAS paper1; where, long story short, we need to vortex each of our replicate populations for one minute. It’s easy enough to vortex 2 or 3 Eppi tubes on a single mixer, but when you have 20+ populations, it starts becoming a bottleneck.

Spatial E. coli Emulsion GFP/RFP from Luis Zaman on Vimeo.

In the spirit of using whatever technology we can to make lab life easier, I decided to give a 3D printed solution a shot. The basic idea is stupidly simple, make something that holds lots of Eppi tubes securely that can be easily pushed onto a vortex mixer. The design I came up with is loosely based on what I found while googling Eppi vortexing, and consists primarily of these two parts.

Eppi Vortexer

The bottom right part (bottom plate) holds the tubes, and the top left part (cover) slides over top to hold the tubes down and act as a handle. An 8mm rod can be inserted into the bottom plate; I also printed a little nub that fits inside the vortex machine’s rubber cup. This is the first version I printed, and it worked amazingly well. I sanded out the holes a bit more so the tubes slide down further than they did in the picture, but the next version will have slightly larger holes.

Assembled Eppi Vortexer

Eppi Vortexing


You can download the model files from Thingiverse2 if you’d like to make your own! Hopefully someone else finds this thing useful!


  1. http://www.pnas.org/content/110/35/14302.short
  2. http://www.thingiverse.com/thing:951975

3D Printed Custom Fluorometer Adapters!

It has been a while since I’ve posted, but not because I haven’t been working on anything new. I recently defended, got married, and moved across the country to start a postdoc position at the University of Washington. My primary research will still be on bacteria-phage coevolution, but we were really lucky to get funding from the BEACON Center to setup a little fablab at UW. We have a few key pieces of equipment already including a small 3-axis CNC mill, soldering station and electronic “debugging” tools, and of course 3D printers.


Anyway, I wanted to post a little part that I made while still at MSU. I meant to do it ages ago, but better late than never I guess. Jeff Morris, who was studying algae evolution in the Lenski lab, had bought a Triology© fluorometer made by Turner Designs. These fluorometers are made to work with cuvettes and have adapters for 12mm round tubes. Jeff’s experiments were being done in larger tubes that had a pronounced flare at the bottom — they wouldn’t fit in the adapters. He had to resort to holding the tube in place, which is obviously not a great solution in terms of reliability and repeatability.


I took one of those adapters that didn’t work and measured it carefully with calipers since it basically squeezes into place inside the fluorometer. It was easy enough to make a block with the right dimensions to snap into place using OpenSCAD — a programatic 3D modeling language/tool. Using OpenSCAD, you basically make parts by adding and subtracting shapes. In case you haven’t used it, this is a great set of tutorials if you wanted to try it out.


The rest of the process is pretty straight forward. I measured the tubes Jeff was using for his experiment and created a shape that roughly matched its tapered dimensions and subtracted that shape from the cube I already had. I also had to add a few holes in the sides of the cube (also measured from the original adapter) to let the emission and excitation light to pass through the tube.


Here is the OpenSCAD code that I came up with. This isn’t beautiful, but the point was to be quick and dirty. I’m mostly including it in case other people have different vessels they want to make adapters for, and so that you see a bit of the OpenSCAD language in action.

 $fn = 100;
module enclosure() {
 difference () {
 cube([12.15, 12.15, 25], center=true);
 translate([0,0,1]) cylinder(25, 3.1, 7.55, center=true);
difference() {
 union() {
 scale([1,1,2.25]) rotate([0,90,0]) cylinder(15, 2.55, 2.55, center=true);
 scale([1,1,2.25]) rotate([90,0,0]) cylinder(15, 2.55, 2.55, center=true);

And this is a picture of the part loaded in Cura with transparency on to make it easy to see the internal structure:

Transparent View

At last, a DIY programable water bath

Unfortunately, I meant to post more updates about the development of this water bath, but instead I just kept working on it. The good news is that I think it’s pretty much done! At least, it’s done enough for me to start using it in the lab.


Overall, the setup is pretty simple. There is a bucket water heater, a small circulation pump, a digital temperature sensor, a coil of copper pipe for cooling that will eventually be submersed in ice, and an Arduino Micro controlling everything. To control the bucket water heater, I picked up a PowerSwitch Tail 2 to avoid dealing with 120v mains myself (I’m not actually an engineer…).

2013-12-01 15.15.032013-12-01 15.15.092013-12-01 15.14.55

The Adafruit DIY sous vide guide was an excellent starting point for this project. They give a great deal of information about several of the components I used, so I’ll mostly just refer people to their site. I did end up getting rid of the PID controller, it was more complicated than it needed to be especially with both heating and cooling (with very different properties). Another plus of building this water bath was that I had a sous vide along the way. I made a few steaks, and they were excellent!


I also picked up a little PVC outlet box from the local hardware store for about 20 cents to enclose the controller. I figured with water and electricity, a few preventative measures couldn’t hurt. I used molex plugs to attach all the components making everything easy to transport and swap out parts.


2013-12-01 01.04.222013-12-01 02.00.02


Cooling is an important component for me, as one of my phage induction steps requires reducing the temperature from 42C to 37C relatively quickly. I played around with using Peltier elements to cool the  water, but it would have required a large power supply (> 120 watts) and wasn’t much better than the coil alone. For smaller volumes, I’m sure the Peltier would be a great solution, but I have some other ideas for Peltiers in the future.


I’ve posted the code for the controller on GitHub. The values in the code are “tuned” empirically, and actually do matter quite a bit based on the volume of water you’re using. I’m hoping to add some interactive control to the water bath, along with a real-time visual interface. As soon as I figure out how to do it, I’ll upload the circuit diagrams. They are very simple, so I’m sure most of you could figure out how to put it together without a problem.


2013-12-01 16.25.49


I’m interested in hearing what other people would do with a programable water bath, especially if it involves microbial evolution experiments! I built this to save time for myself, but I imagine there are many experiments that are now feasible with a cheap programable water bath. I did a few sample runs and graphed the temperatures over time (in milliseconds). I’m very happy with the results.

quick_step_tempsLysis Temps


3D Printing For The Lab

I mentioned I was getting a 3D printer soon, but didn’t say much else about it. Well, I’m happy to announce that it arrived and I assembled it in a few work days. It is now churning out high-quality prints, mostly of upgrades for the printer itself. Check it out, here is a picture of the printer with an upgraded fan duct on the print head!

Ultimaker with upgraded fan duct installed.

I spent a lot of time printing things like this elephant. Just fun little tests of my ability to turn a digital file into a physical object, and a great gift. I knew before getting the printer that it wasn’t going to be a “plug and play” device, but I had no idea how much really goes into getting good prints! At this point, I am moderately confident in some of the nuances, but I don’t have a good enough intuition to be introspective about it. I’ll leave my lessons learned for a later post.

3D Printed Elephant


The reason I built this 3D printer in the first place was to enable lab experiments that would otherwise be too costly or too time consuming. I was heavily influenced by a few tweets/blog posts from Russell Neches. In particular, he posted a picture of what happened to a print after autoclaving. The ability to create custom made sterilizable tools in a microbiology lab for a few cents within hours is clearly going to change the way we do lab work. As a computer scientist in a wet lab, I figured I could use some of my interdisciplinary skills to help the community of makers/hackers/DIYers/whateverers advance how we actually do day-to-day science.


I’ve only had my printer up and running a few days, but I think I have a nice example of how they can enable better (at least cheaper) science in the wet lab. While I mentioned how amazing it is to print autoclavable parts, sometimes you just want to avoid letting your media or cultures touch anything contaminated at all. For example, if you wanted to move sterile media from a reservoir into a continuous culture of bacteria (e.g., a chemostat), you would not want to contaminate the media by allowing it to flow through some filthy pump. Instead, labs typically employ peristaltic pumps, which move liquid through sterile silicone tubing without ever touching the contents of the tube. Unfortunately, these pumps are usually very expensive, and the more accurate you want them to be, the more expensive they get.


So, how do we build a cheap and open-source peristaltic pump? Turns out, someone has already posted the 3D models needed to print a very nice pump. Another plus, these are relatively simple objects to print.

3D Printed parts for Peristaltic Pump

After just a bit of assembly, we have a working peristaltic mechanism.

Pump Rollers Assembled Peristaltic Pump

The next step is to figure out how to drive the pump. A geared motor would probably have enough torque, but wouldn’t have much accuracy. I happened to have this little stepper motor around. It isn’t that powerful, but I figured it was worth a shot. To attach the shaft of the pump (a M3 screw) to the stepper motor, I needed a coupler. Those aren’t too easy to find around here, especially in metric sizes. Fortunately, I could print one!

2013-11-09 16.50.03

With a pretty simple circuit based on an 8-channel NPN Darlington and an external 12v power supply, I could drive this stepper motor with any Arduino and 4 output pins. This tutorial from the Arduino website helped me get the circuit working, but make sure you check the datasheets for the Darlington and stepper you have — many have different pinouts than the pictured circuit.


With everything hooked up, turning on the Arduino yields a moving peristaltic pump!



I don’t have flexible tubing that fits this pump, so actually pumping water will have to wait. When I find some, I’ll post another video of it working.

I did almost nothing to get this working. I downloaded a few open-source models from thingiverse.com and a tutorial from arduino.cc and put it all together. The community of people putting this sort of data online is amazing, and I really believe it will revolutionize the way we all do science.

Why I’m building a programable water bath

I mentioned in my first post about a programable water bath I’m working on to help with my lab work. To understand why this will be so useful requires a tiny bit of background on one of my study systems, lysogenic lambda phage. Phage are viruses that infect bacteria, and the particular phage I work with has two different lifestyles within its E. coli host. It can infect the host and immediately start its lytic cycle, where it produces offspring that will quickly (typically within an hour) burst out of the cell and go on to infect additional bacteria. However, lambda can also enter a lysogenic state, where it integrates itself into the host chromosome and can remain dormant for long periods of time being replicated along with the rest of the host genome.


To isolate phage from a population of lysogens, we have to coax the phage out of their hosts. Our particular strain is temperature sensitive, so we can encourage lysogens (the dormant infected cells) to produce productive phage by growing them at a very particular sequence of temperatures. Typically, I move cultures between incubators and several water baths to achieve this. However, this whole process takes nearly 4 hours of lab work. It is nearly impossible these days to find a 4 hour block of time that isn’t interrupted by meetings, and that limits the number of experiments I can do.


Wouldn’t it be wonderful if I could stick the cultures in a single water bath and come back in 4 hours and have phage ready to go? The volume of experiments I could do would increase, and it would free up my schedule for other important work like writing my dissertation! Turns out these programable water baths exist, but I don’t even want to guess how much they would cost. How hard could it be to control the temperature of a tub of water? That was the naive question that solidified my path into open-source hardware for the lab. I’ve made some progress, but that’ll be for the next post!

Welcome to LabFab.cc

Hello there! My name is Luis Zaman, I’m a graduate student working with Charles Ofria and Richard Lenski. Both labs study experimental evolution but use very different tools. In the Ofria lab, we primarily study evolution in populations of self-replicating computer programs with Avida. In the Lenski lab, we use populations of microbes — typically E. coli. As you probably guessed, students tend to be computer scientists in the Ofria lab and ecologists or microbiologists in the Lenski lab. Being part of both labs has been an incredible experience. Perhaps the most important lesson I’ve learned is that disciplinary boundaries are essentially imaginary; if we can study evolution using the best systems and tools for the job, why shouldn’t we?


But, how does all this relate to Open-Source Hardware? It’s hard to be a computer scientist in a wet lab having to constantly fight the urge to develop the best damn automated colony scoring program, or rewrite all those pesky bioinformatics pipelines, or develop an iPhone app for microtiter plate randomization (now there’s an idea). Software, for me, is usually a matter of annoyance; making it better may speed up or automate some part of an experiment. On the other hand, a piece of lab equipment can be the difference between a feasible experiment and a perpetual future work bullet point. Open-source hardware has flourished into an active community, at least it seems that way from my bystander perspective. Combined with the availability of 3D printers and other inexpensive consumer fabrication technology, we now have the ability to create custom hardware or very cheap alternatives to commercial tools (i.e., OpenPCR).


I hope this website will contribute to the open-source hardware movement, and ultimately to people’s research. I started this blog because I recently began learning the basics of electronics and Arduino to build a water-bath with programable temperature curves — a piece of equipment I couldn’t get easily or cheaply. I want to share what I’ve learned, and how to make one yourself. I’ve also have an Ultimaker 3D printer on the way (!!) and will be using it to develop new tools for lab work that will hopefully make your life easier too. I hope this blog is more than just me blabbing about projects I’m working on. I’d love to see an active community of lab “makers” sharing their latest techniques or tools (cough cough @ryneches). I’m still developing these ideas and what the main page of this website will provide, but if you have ideas or want to contribute please let me know!