Microfluidic Automation

Domains from molecular systems (like DNA storage!) to medical diagnostics rely on microfluidic devices for automation. This doesn’t just make things faster; it’s essential to minimizing human error and enabling new, more complex applications. The PurpleDrop hardware and Puddle software aim to make microfluidic automation cheaper, more reliable, and easier to use.

The code is open source and developed on GitHub.


PurpleDrop chip with droplet tracking for error detection.

PurpleDrop is a droplet based microfluidic device (DMF) for lab automation. DMFs use electricity to move tiny droplets of water—or any aqueous solution—on a grid of electrodes. You can move droplets around, mix them up, and split them apart. Combine that with heaters, sensors, or anything else that you can put on the chip, and you’ve got a general purpose lab-on-a-chip!

PurpleDrop is based on the OpenDrop design, and we’re tailoring to our needs at MISL. For example, we’re working on a computer vision system that detects when things go wrong, allowing the control system to correct it.

We want to develop a DMF device that’s cheap, reliable, and capable enough be the foundation of computer systems with molecular components. The Puddle software stack complements the PurpleDrop hardware, making it easy to automate complex protocols in synthetic biology or any other domain.


Puddle is an open source operating system for microfluidics. Just like Linux gives you read and write system calls to work with files, Puddle provides primitives like mix and split that work on fluids.

a = input(substance_A)
b = input(substance_B)
ab = mix(a, b)

while get_pH(ab) > 7:
Sample program in Python using Puddle.

Just like file descriptors in regular operating system, fluids in Puddle are abstractions! Under the hood, Linux is really dealing with blocks and sectors on disk that require a lot of bookkeeping. When you say write, Linux might instead wait to batch writes for better performance. Puddle does the same for microfluidic programming: abstractions reduce complexity for the user and let the system transparently perform optimizations and error correction.

Puddle lets users write protocols without worrying about hardware details or failures. Because the nitpicky details are abstracted away, protocols stop looking like a sequence of low-level instructions and instead look like high-level programs! When you add Puddle’s primitives to a general purpose programming language, you can combine computation and fluidic manipulation for even more flexibility.

The code snippet shows a simple protocol written in Python. The calls to input, mix, and heat are primitives, but the get_pH and acidify procedures could be written by the user. You can write code like this today with Puddle and execute it in a simulator or on the PurpleDrop chip. Going forward, we are looking to use techniques from programming languages research to make writing fluidic programs safer and even easier.



Sarang Joshi S
Sarang Joshi
Michal Piszczek
Michal Piszczek
Pranav Vaid P
Pranav Vaid
Sharon Newman S
Sharon Newman
Chris Takahashi
Chris Takahashi
Ashley Stephenson A
Ashley Stephenson
Bichlien Nguyen
Bichlien Nguyen
Karin Strauss
Researcher, MSR
Affiliate Professor
Luis Ceze