REVOLVER: A low-cost automated protein purifier based on parallel preparative gravity column workflows

Graphical abstract

. Typical protein purification protocol. We focus on protein purification from Escherichia coli modified to express large quantities of a recombinant target protein, highlighted in magenta.
Step 1) an overnight culture of the E. coli strain is inoculated into a large volume of nutrient media and allowed to grow to medium density (O.D. 0.6-1.0).
Step 2) an inducer chemical is added that triggers protein expression.
Step 3) continue protein expression by allowing the cell to grow in the presence of the inducer, then harvest the cells by centrifugation.
Step 4) use any combination of methods to physically/ chemically lyse the cells to release the target protein.
Step 5) remove cellular debris by centrifugation, then apply the supernatant (i.e., lysate) to either 5a) a gravity column containing the appropriate affinity resin, or 5b) an FPLC system. In (5a), application of the lysate to the resin is followed by a wash to remove bound non-target proteins, then an elution step where changes in some solution condition (e.g., pH, salt, imidazole) leads to the target protein eluting from the column where it may be collected for further work. The FPLC automatically performs these steps with real-time monitoring of the solution condition and protein detection. (For interpretation of the references to color in this figure legend, the reader is referred to the web version of this article.) 6818060). Similar technologies include Profinia from Bio-Rad, which is a discontinued product; and the Fluent automated workstation by Tecan, which is extremely expensive. While both gravity columns and FPLC are used to this day, to our knowledge there does not exist an inexpensive open-source solution that achieves automatic and parallel protein purification. Therefore, we sought to design, build, and test a scalable system that can perform the basic functions of a paralleled FPLC system (i.e., the Protein Maker). Specifically, we want to process cell lysates by applying them to an affinity resin, washing the resin, and eluting the protein from the resin (Figs. 1-5a). We call our inventions the REVOLVER and the MULTI-VOLVER.

Hardware description
In this section we first describe the design of REVOLVER, which is comprised of several components that can be independently 3D-printed and fitted with the firmware to form one functional device (Fig. 2, Section 2.1). Several REVOLVERs can be  connected with additional components and firmware for automated parallel protein purification. We call this combination the MULTI-VOLVER, which we discuss in a subsequent section (Fig. 3, Section 2.3). Our printed circuit board (PCB) design is discussed in Section 2.3; the communication protocol between the Arduino Nano microcontrollers and their interaction with the user is discussed in Section 2.4. While we do our best to explain various concepts underlying these two inventions herein, we strongly suggest the reader first consider watching Supp.Video 1 -4 to see the systems in action.

REVOLVER: single sample fraction collector
The objective of the REVOLVER (Fig. 2a) is to take the user's cell lysate as input and produce small aliquots of purified protein in microfuge tubes as outputs with no human intervention. To do this, the REVOLVER must move various solutions through the resin packed into the gravity-column (herein termed 'column' for brevity). Specifically, after manual application of the protein sample to the resin (viz., users must first pour the cell lysate into the gravity-column), REVOLVER must detect when the cell lysate has finished flowing out of the column, then automatically wash the protein-bound resin and elute the target protein into a set of microfuge tubes for downstream processing. REVOLVER's current hardware is designed specifically for these core steps using the following features: 1) flushed joints requiring minimal screws for simple assembly, 2) closed-loop functionality for automatic handling of solutions, and 3) flow reduction to limit disturbances in the packing of the resin.

Simplified assembly
First, REVOLVER's bodies (Fig. 2b) are designed to fit into each other using joints (e.g., tongue-and-groove, double-lap butt). The waste collector fitted with the servo that holds the tube sensor is first combined with the motor tower, which is together inserted into the slits available on the top of the electronics box. If desired, hot glue is sufficient to lock these bodies together (e.g., the motor tower and electronics box). Screws are only needed to attach the motors to the bodies since these electronics make precise movements for which REVOLVER's functionality depends on. An optional Hall sensor can be incorporated into the waste collector to auto-home (i.e., centre) the rotator plate. The plate is inserted onto the motor tower's stepper. While not shown in Fig. 2, the gravity column can be held using a single-device column gripper that we have designed if the user does not have a metal rod-plate apparatus. These design features were intentional for the purpose of minimizing the number of parts and assembly actions. Detailed assembly instructions can be found in Section 5.0 (Figs. 7-14, Supp. Figs. 1-4). Closed-loop functionality Second, REVOLVER boasts closed-loop features to address several inconveniences that come with manual protein purification using gravity columns. Extensively used columns can have slower flow rates than others due to poor column filter cleaning, or the presence of solid precipitates inside of the filter that block the passage of the solution. Even clean columns can have minor variations in flow rates based on how well the resin is packed and how much liquid is in the column (i.e., hydrostatic pressure). This means that the time spent in each operation is not always known beforehand. Consequently, the user must be vigilant in watching the column to ensure the resin does not dry during the wash steps, or that each fraction of many has finished eluting without overflowing and spilling precious sample. This can be an inefficient use of time and limits the number of samples to be processed at once depending on the skill and focus of the operator.
One alternative to address this issue was to have a peristaltic pump system to ensure a constant flow rate through the resin like in FPLC systems, which would allow for open-loop operation of the system since the time required for each operation can be predetermined. However, this would complicate the design and require expensive equipment. Another alternative was to attach a flow rate sensor to the exit hole of the column to calculate the amount of solution that had passed through the resin, yet these sensors are not cheap (>$50 CAD), inaccessible for low flow rates (<1 mL/min), and require custom fittings to adapt to columns. Rather than attempting to measure low flow rates, we designed a simple sensor to determine whether a conductive solution was flowing through the system. Specifically, we used a pair of pins that were physically close to one another ($1-2 mm) but not touching, one connected to ground and the other to a digital input pin in the Ardu- Step-by-step guide to assemble the waste collector. ino. The pair of pins act as a digital-like switch when there is liquid present between them to carry the current across, which is detectable by the firmware. Two pairs of these liquid-detecting pins exist in REVOLVER: one pair inside the waste collector to monitor solution (i.e., cell lysate flow-through and wash) that would pass through the resin into waste, and the second mounted onto the servo motor to detect when each of the microfuge tubes were filled during the final elution step. The servo lifts the pins out of the microfuge tube to allow the plate to rotate and position the subsequent tube, and then lowers the pins to monitor the level of liquid again. Because all solutions regularly handled during protein purification were readily conductive (300 -600 mM NaCl), our liquid sensors (the pair of pins) were effective at detecting the movement of solutions across the resin. Sensor testing is detailed in Section 7.1 and 7.2 (Figs. 15-17).

Flow reduction to minimize resin bed disturbance
Third, REVOLVER includes a hardware feature to reduce the flow of solutions into the column. High flow rates (>0.5 L/min) directly entering the column as a single stream can lift the packed resin from the base and expose the column's filter. This results in the solution following the path of least resistance and avoiding paths through the resin; thus reducing protein binding, wash stringency, and target protein yields. We avoid high flow rates by first supplying the DC motor pumps with the minimum voltage required (6 V, a setting on the power source). We then use a 3D-printed adaptor we designed for the column's entrance hole that dissipates the force of the solution entering the column and evenly distributes it onto the interior column wall to gently fill the column. This piece is called the flow diffuser (Fig. 2c). Step-by-step guide to assemble the tube sensor.  Step-by-step guide to assemble the motor tower. Fig. 9.
Step-by-step guide to assemble the major components of the REVOLVER. The objective of the MULTI-VOLVER (Fig. 3a) is to take multiple cell lysates as inputs, and return multiple sets of purified proteins in microfuge tubes as outputs with no human intervention. One could manufacture multiple REVOLVERs each with their own pumps and power supplies for automated parallel protein purification. These components represent the largest fraction of the cost of REVOLVER, yet the pumps remain idle during most of the protein purification and the capacity of the power supply is underutilized. The MULTI-VOLVER is a cheaper solution that we devised to economize the use of a single Step-by-step guide to combine the hardware with the firmware.  Step-by-step guide to wire the hardware with the firmware.   set of pumps and one power socket instead. To be exact, six REVOLVERs with their own pumps and power supplies would cost $990 CAD. The MULTI-VOLVER brings this price down to $310 CAD -a 60% reduction for the same throughput. This is accomplished through an additional central distributor device controlled by an Arduino that can service the ''needs" of up to six REVOLVERs (i.e. the Workers) ( Fig. 3b and 3c). ''needs" here referring to completing a wash step and being ready for another round of wash to be pumped into the column, or for the elution of the protein to begin. The Distributor services the Workers through two additional functionalities: 1) an (optional) auto-homing mechanism that allows a distribution arm to find the location of the gravity columns, and 2) a distribution arm that rotates in circular fashion to guide the ends of the pumps towards the gravity column that is ready for the next solution to be pumped inside. Moreover, the Distributor coordinates the individual REVOLVERs and passes the instructions for executing the purification protocol; this communication protocol is detailed in Section 2.4. Since the MULTI-VOLVER is designed to have up to six REVOLVERs working together, arranged symmetrically (Fig. 3b), it benefits from the three design features previously described (Section 2.1.1. to 2.1.3.). Assembly details are described in Section 5.0.

Auto-homing to locate gravity columns
Unlike the REVOLVER (Fig. 2a), the lip of the gravity columns in the MULTI-VOLVER can be fitted with a special ring holding a Hall sensor that can be attached with hot glue. This allows the MULTI-VOLVER to automatically detect the position of the Workers' columns (Fig. 3a). This ring can then be slid up and down such that it is beneath the distribution arm's magnet when the distribution arm is rotated. When the position of the magnet is aligned directly on top of the Hall sensor during the auto-homing routine, the Distributor and Worker specific for that Hall sensor communicate to record the angular position of the distribution arm. This essentially provides the Distributor with the angular ''address" for that Worker so in the future when solution is ready to be pumped into that Worker's column, the Distributor knows which address to move the distributor arm to. It is also possible to manually rotate the distributor arm to store the address for each Worker. Details for automatic and manual homing of the distributor arm is further described in Section 6.1.

Distribution arm to dispense solutions
Since there is only one set of pumps, which includes one for the wash solution and the other for the elution solution, the Distributor has to move the distributor arm to the Workers' addresses for the pumps to deliver the wash/elution solution to the right column. The distributor arm is controlled by a stepper motor, which is controlled by the Arduino that is housed inside the electronics box of the Distributor (Fig. 3c). To prevent tangling of the tubes for the pumps, the firmware restricts the distributor arm from making a full 360°rotation. More specifically, the firmware determines a set point where the distributor arm cannot cross (e.g., if the distributor arm is at Worker 1, and the Distributor needs to pump solution into leftadjacent Worker 6, and the set point is between Worker 1 and 6, it will rotate counter-clockwise $300°rather than clockwise 60°). The set point is automatically determined based on the distributor arm's position when the MULTI-VOLVER is turned on.
Simplified wiring -PCB design REVOLVER uses an Arduino Nano as a microcontroller but there are no off-the-shelf expansion boards to connect it to the components in our system. We therefore designed a custom printed circuit board (PCB) that would fit in the electronic boxes of REVOLVER. We ordered the PCB through JLCPB, although any other PCB manufacturer should be able to produce it.
The headers, sockets, and other electrical components (e.g., resistors, capacitors, diodes, transistors, screw block) were soldered on according to the system configuration ( Fig. 6, Supp. Fig. 3). When completed, the PCB allows the user to simply plug the different components (e.g., motors and sensors) into the PCB for easy assembly of the hardware and electronics. The PCB includes extra headers for a 5 V line that can be controlled by the remaining analog and digital pins we did not use. Another line set to be the same voltage delivered by the power supply is set to is also provided (e.g., 1 -20 V using our power supply). These were included in case the user wishes to modify the systems and power other useful features. While the PCB is a convenient feature of our design, it is not fully required and complete wiring diagrams can be found in Supp. Fig. 4.

Firmware and communication protocols
A requirement of our system was that it should be flexible enough to handle different purification protocols without having to update the firmware in each microcontroller. To achieve this, we made REVOLVER programmable by designing firmware that can take instructions and parameters from the user, and then execute them based on a predefined set of operations (e.g., wash, fill tubes).
The user interface with the REVOLVER is via serial USB connection with the user's personal computer, specifically through the Arduino IDE software (Fig. 4a). Similarly, the user interface with the MULTI-VOLVER is via serial USB connection with the Arduino IDE on PC, except the connection exists with only the Distributor, not the Workers. The Workers are connected to the Distributor via an inter-integrated circuit (I2C) bus instead (Fig. 4b). In all cases each Arduino Nano microcontroller has to be uploaded (flashed) with the corresponding program for the REVOLVER and the MULTI-VOLVER's Distributor and Workers before this serial USB/ serial USB + I2C bus user interface can be used, respectively.
For the Arduino Nano microcontroller configured for an independent REVOLVER, Fig. 4c depicts the main algorithm that takes inputs from the user through the Arduino IDE's serial monitor. User commands take the form of ''<?>" where the ''<" and ''>" tell the program that a command is being made, and the ''?" between the < > symbols represents a capitalized letter corresponding to a specific command the user wishes to run, plus the required arguments for that command. The firmware then executes the instruction based on a preset list of operations. A sequence of commands can be made using the notation in sequential form <H><P><C>, for example. Table 1 contains a list of commands that can be currently interpreted and executed by the hardware.
Building on this algorithm in Fig. 4d, the Arduino Nano microcontroller configured for the MULTI-VOLVER's, the Distributor device also reads and parses instructions sent via USB. To run a full protocol, the Distributor first identifies the locations of the Workers (cf. Section 2.2.1.). The user then inputs a command sequence through serial monitor to the Distributor, which is then sent from the Distributor to the Workers one command in the sequence at a time via the I2C bus. To do so, the user must first enclose the desired commands between <X> commands; this notifies the Distributor to store the instructions. The Distributor continuously checks for whether a Worker has completed its singular command, which if True (i.e., completed), the next command in the sequence is sent until there are no more commands for the Worker. For the Arduino Nano microcontrollers configured as Workers, they sit idle until commands are sent to them from the Distributor. However, they idle for a very short period of time because the Distributor is continuously checking for whether a Worker's task is done. Once all Workers finish all tasks stored by the Distributor, the whole system stands idle and can accept a new set of instructions without being reset. Different command sequences given to different workers for the MULTI-VOLVER described in this paper is currently not supported. To summarize by analogy, the Distributor has the plan and knows when to tell the Workers to perform their next step until they are done. The Workers simply wait to be told what to do after completing a command.
While we designed the MULTI-VOLVER to have up to six REVOLVERs networked together, I2C bus with Arduino Nano microcontrollers can theoretically allow a modified MULTI-VOLVER to control 127 Workers, which is five-times more than The Protein Maker [10]. Note, however, that building such a large MULTI-VOLVER with the current configuration of a central distributor would not be practical. However, the design can be adapted by incorporating a decentralized distributor that can be used to scale up to use the control capacity of the Arduino microcontrollers.

Fraction collector comparison
While other open-source fraction collectors have been published, such as the colosseum [12], our design goes beyond fraction collection and provides a complete platform for automatic protein purification from start to end. Our design differs from the colosseum in two ways. First, we prioritized shorter print times and less material usage. The colosseum device requires over 500 g of filament, with a total print time of >50 hrs. Our REVOLVER requires less than 150 g of filament with a total print time of less than 8 h with the recommended settings. The MULTI-VOLVER requires roughly the same amount of filament and print time as the colosseum, yet it separately collects fractions for up to six different protein samples.
Second, the colosseum is an open-loop system that requires precise calibration of the pumps and flow rates to know how much liquid to dispense in each fraction. Our systems are closed-loop and are thus amenable to non-pressurized gravity column-based workflows, which simplifies the work the user needs to do. Nonetheless, our devices are limited in how many fractions they can collect (12 fraction/REVOLVER). They also require custom PCBs rather than commercial CNC shields like in Table 1 List of commands for the REVOLVER and MULTI-VOLVER system. the colosseum, meaning that the user does need to order PCBs, and then solder the required components onto it. Nonetheless, the systems we present here are more than just fraction collectors. To summarize our device: We designed a low-cost and scalable system for automatic parallel protein purification through gravity column-based workflows.
The REVOLVER and MULTI-VOLVER are closed-loop systems that allow the user to load a cell lysate, leave the system unattended, and return to purified proteins in small fraction for SDS-PAGE analysis. We provide all files necessary for modifying everything about these devices to meet the users' needs. This includes the hardware and firmware that is modular and customizable.
Our systems have a small form factor the allow them to be stored in cold rooms and refrigerators for proteins requiring colder handling protocols.

Bill of materials
A complete Bill of Materials can be found in Supp. Table 1.
Design files REVOLVER a1, a2, a3 are combined into the upper-half of the REVOLVER (a2 is attached to the stepper that is attached to a1) a4 can replace a3 if the user wishes to use the siphon model of the waste collector (See Section 7.1. for details) a5 is attached to the servo that is attached to a3 (or a4) a6 and a7 are combined to form the electronics box, which is the lower-half of the REVOLVER that can be combined with the upper-half (a1, a2, a3) a8 is placed into the gravity column a9 (optional) is attached to the latches of a7 to create a gripper for the gravity column MULTI-VOLVER b1, b2, and b3 are attached to the top and bottom of the PVC pipe (b3 and b11 should be slid onto the pipe before attaching b1 or b2) b4 and b5 are mounted onto the pipe using b3 b6 is attached to the stepper that is attached to b2 b7 is fitted onto the outer end of b6 b8 is used to attach the REVOLVER's latches (a7) to the latches on b1 b9 is used to attach the REVOLVER's latches (a7) to each others' latches (a7) b10 is clipped onto the gravity column b11 is slid onto the PVC (see above for b1, b2, and b3) to replace a9 b12 can be used to clips two b11 0 s together ELECTRONICS c1 is used to connect all electronics components to the Arduino Nano microcontroller

Build instructions
This set of build instructions is divided into the REVOLVER system (Section 5.1), and the MULTI-VOLVER system (Section 5.2). Unique parts are shown in Fig. 5a. Three composite parts are described in Supp. Figs. 1-3: the DC pump with tube adaptors, the Hall effect sensor board, and the soldered PCB. In particular, Supp.F ig. 3 details how the headers, sockets, and electrical components should be arranged. In these instructions, we refer to the parts according to their numbering in Fig. 5 and their designators as described in the Bill of Materials (Supp. Table 1). For the 3D-printed MULTI-VOLVER parts, their names according to Table 2 are used.
Suggested 3D-printing orientations, as well as filament weight and time estimates for the prints, are summarized in Supp. Fig. 6 for the REVOLVER and Supp. Fig. 7 for the MULTI-VOLVER.

REVOLVER assembly
Waste collector assembly (refer to Fig. 6) remove any filament stringing inside the waste collector (Part 29) cut 8 cm of hookup wire (Part 15), strip 1.5 mm and 8 mm of the insulation on opposite ends, then insert the 1.5 mm stripped end into the holes on the side of the waste collector push the wire in until roughly 1 mm of the insulation is inside. The exposed wire should not be touching the wall of the waste collector.
apply hot-glue to create a seal between the hook-up wire and the waste collector repeat steps (b) and (c) for the other hole check to make sure that both 1.5 mm stripped ends inserted into the waste collector do not touch each other or the walls, and that they both have roughly 1 mm of insulation inside. This ensures that the waste sensor is triggered only when the column is actively dripping solution into the waste collector repeat step (d) to create a seal for the other hole apply hot-glue to the short slot for the Hall sensor insert the Hall sensor (Part 25) into the short slot. Take note of which side you put face down as this becomes relevant in Section 5.1.4. Steps (d) and (e) apply hot-glue on top of the Hall sensor use the tip of the hot-glue gun to create a seal around the Hall sensor and its metal pins. This ensures liquid does not interfere with the Hall sensor's function.
insert the servo into the long slot such that the motor axle is on the top, then screw it in place using Part 6.
Tube sensor assembly (refer to Fig. 7) cut two 8-10 cm of hookup wire, strip 8 mm of the insulation on both ends for both pieces align the horn (Part 7) with the servo arm (Part 27). Draw a line to indicate where to make a cut to be able to press the horn into the servo arm's slot cut the horn apply hot-glue in the servo arm's slot insert the cut horn in the servo arm's slot this step is optional, but depending on the user's 3D-printer, the holes in the servo arm may print too small as it did for ours. We recommend using a 21G conventional syringe needles (e.g., BD ID: 305165) to carefully press through the original holes to widen them insert one 8 mm stripped end (from Step (a)) into the hole closest to the servo arm's slot. Apply hot-glue and pressure the wire down along the curvature of the servo arm insert the other 8 mm stripped end of the other wire (from Step (a)) into the distal hole. Apply hot-glue and press the wire down along the curvature of the servo arm. The two wires should be running along the curvature in a parallel fashion. use hot-glue to secure them in place apply additional hot-glue where the wires enter the holes of the servo arm to create a seal that prevents liquids from electrically connecting the two pins press the pins together, leaving a 2-3 mm gap at their ends attach the completed tube sensor to the servo from Section 5.1.1 Step (l) such that the wires point inwardly into the waste collector Motor tower assembly (refer to Fig. 8) remove any stringing inside the tower (Part 28) place stepper (Part 19) into the slot on the top of the tower and align the holes of the stepper with the holes in the tower place an M3 nut (Part 5) on top of the stepper hole in alignment with the tower's holes using long tweezers, hold the M3 nut in place with one hand, maintaining the alignment with the stepper and tower holes. We recommend using tape (or hot-glue) to help hold the stepper in place temporarily screw in the 12 mm M3 screw (Part 3) by hand enough so that it grips the M3 nut use the tweezers again to hold the nut in position use a screwdriver to tight the screw and the nut to lock the stepper in place with the tower repeat steps (c-g) for the other hole place the assembled waste collector fitted with the tube sensor aside with the motor tower connect the jumper (FF) wires from step (f) to the tube sensor's exposed 8 mm stripped ends from Section 5.1.2. step (l). The polarity here will not affect the function connect the jumper (FF) wires from step (g) to the waste sensor's exposed 8 mm stripped ends from Section 5.1.1. step (g). The polarity here will not affect the function place the plate (Part 31) onto the servo (Part 19) of the motor tower. Ensure that a magnet (Part 24) has been placed into its slot in the plate.
Connecting pump to solutions (refer to Fig. 11) In this section, each pump is dedicated to transferring solutions from one container to the column. Two pumps exist since the protein purification protocol requires a wash and elution solution.
connect the 1-way valve (Part 11) with the valve adaptor (Part 12) insert the valve adaptor from the previous step into a small tubing piece (Part 9) cut to the user's desired length (recommended 45-60 cm) insert the tube connector of the pump (Part 8) where fluids are pushed out (positive pressure end) to the end of the tubing piece from the previous step cut another tubing piece from Part 9 to a desired length (recommended 45-60 cm) and insert the negative pressure end of the pump to it. The end of this tubing piece is placed into the wash solution. Repeat steps (a-d) for the other pump to be used for the elution solution cut 10 cm of the large tubing (Part 10), and connect one end to the bottom of the waste collector attach a tube connector to the other end of the large tubing piece from the previous step. An additional small tubing piece (cut to approximately 45-60 cm) can be attached to the other end of the tube connector, which can be drained into a waste receptacle Vacuum-drained waste collector (recommended, but optional) We have found that the waste collector more reliably drains fluid when a third pump is constantly drawing solution out of it. A future iteration of our designs can modify the PCB to accommodate the control of a third a pump for this purpose.
connect the negative pressure end of the pump (Part 8) to the small tubing piece from Section 5.1.6. step (f) connect the positive pressure end of the pump to another small tubing piece cut to the user's desired length (recommended 45-60 cm) and place the other end of this tubing piece into a waste receptacle connect the pump to another power supply (Part 21) using a pair of alligators (Part 14)

MULTI-VOLVER assembly
Hardware assembly The following steps assume the user has already created the number of individual REVOLVERs they wish to use with the MULTI-VOLVER. Refer to Section 5.1 for REVOLVER assembly, and Supp. Fig. 3 for the correct PCB configurations for the Distributor and Worker. slide two column grippers (b11) onto the 30 cm long PVC pipe, then slide the box mount (b3) below the column grippers. Attach the electronics box bottom (b4) to the box mount using 6 mm M3 screws (Part 4) align the column grippers such that the two slots for the small tubing pieces are directly on top of one another, then connect the column grippers together using six gripper posts (b12) attach the base (b1) below the box mount onto the end of the PVC pipe. Holes are provided if the user wishes to screw the components together, or hot-glue could be used instead use two 12 mm M3 screws (Part 3) and two M3 nuts (Part 5) to attach a stepper (Part 19) to the top (b2), similar to Section 5.1.3.
attach the above component onto the other end of the PVC pipe, above the column grippers apply a small amount of hot-glue to the stepper's axle, and connect the distributor arm (b6) insert a magnet (Part 24) into the hole of the distributor arm gravity columns can then be clipped in place using the column grippers similar to Section 5.1.1. steps (h-k), attach a Hall sensor (Part 25) to the slot in the Hall ring (b10) clip the Hall ring with the Hall sensor approximately 1 cm below the lip of the gravity column using short linkers (b8), connect the desired number of REVOLVERs (with their Arduino Nano microcontrollers configured as Workers) to the base (b1) as shown in Fig. 2. Workers that directly adjacent to each other can be connected using long linkers (b9) rotate the columns (Part 1) and the column gripper Wiring hardware with firmware attach the soldered PCB to the electronics box (b4) using 6 mm M3 screws (Part 4), then connect an Arduino Nano microcontroller to the soldered PCB for the Distributor configuration connect each column's Hall sensor from Section 5.2.1. step (j) to jumper (FF) wires connect these jumper (FF) wires from the previous step to the H2 pins of the corresponding Worker's PCB. Jumper (MM) wires may need to be used to cover the distance between the Hall sensor and the PCB link each Worker to the Distributor by connecting one SDA pin, one SCL pin, one ''12 V" pin and one GND pin of the Worker to the same set of pins on the Distributor using a combination of jumper (MM) and (FF) wires to cover the distance. For example in a 6-Worker MULTI-VOLVER, the Distributor will have six sets of SDA, SCL, ''12 V", and GND pins occupied, each set connected to one of the six Workers. ''12 V" is in quotations because the actual voltage is set by the power supply attach two alligators (Part 14) to the PUMP1 pins, and another two alligators to the PUMP2 pins attach each pair of alligators to a pump's positive and negative clips (Part 8) loosen the screw block of the PCB and insert one jumper (MM) wire (Part 17) into each positive and negative terminal, then re-tighten the screw block to lock the wires in place connect the ends of the jumper (MM) wires from the previous step to the power supply's adaptor piece, then connect the adaptor to the power supply (Part 21) Connecting pumps to solutions perform Section 5.1.6. steps (a-f) with both pumps (Part 8) connected to the Distributor (not the Workers) and using small tubing pieces cut to approximately 80-100 cm clip the 1-way valve (Part 11) for each pump into the arm head (b7) apply hot glue into the slot on the opposite side of the 1-way valve slots, and insert the distal end of the distributor arm (b6) from Section 5.2.1. step (f) into the slot insert the small tubing pieces from step (a) into the slots aligned earlier in Section 5.2.1. step (b) repeat Section 5.1.7. steps (a-c) use Y connectors (not shown in Fig. 5, but included in Supp. Table 1) and small tubing pieces (cut to 30-50 cm) to connect the Workers drainage tubing (Fig. 11f) to the negative pressure end of a third pump to help drain all Workers.

Set-up
Prior to initializing the REVOLVER or MULTI-VOLVER systems, the user must upload the correct program into the Arduino Nano microcontroller (termed ''flashing"). These programs can be found in the following links to our GitHub repository: REVOLVER, Distributor (MULTI-VOLVER), and Worker (MULTI-VOLVER). The Workers' microcontrollers must each be assigned a unique integer under the code const byte I2Caddress before flashing. The values must be in the range of 1 -128 (inclusive); we recommend labelling them 1 to 6 for a full 6-device MULTI-VOLVER (though it is not mandatory to label in this sequence as long as the user knows which Worker has been assigned which address). In contrast, the programs for the REVOLVER and Distributor can be flashed without immediately changing any variables, but will very likely require the user to modify a few variables after the initial flash, as detailed in Section 6.2 due to differences in DC pump manufacturing. Once all variables are set for each configuration and flashed onto the appropriate system, the user does not need to re-flash the microcontroller every time they use it as long as the addresses and pumps stay the same.

Initializing REVOLVER
The REVOLVER is initialized by first connecting the Arduino Nano microcontroller configured for the single device to the user's PC via serial USB. Once the program is flashed onto the microcontroller through the Arduino IDE, the user should open the serial monitor to be able to communicate with the REVOLVER. To test the connectivity of the various components and check whether they were assembled correctly before using the REVOLVER to purify a protein, we have created a checklist of tasks that allow the user to identify and address problems beforehand (Table 3). While we have tested the build extensively with the parts obtained with our printers, the user should expect to encounter some of the common challenges; the solutions we have offered should be considered different techniques to optimize the REVOLVER system's performance. (See Table 4.).

Initializing MULTI-VOLVER
Similar to the REVOLVER, the MULTI-VOLVER is initialized by first connecting its Arduino Nano microcontrollers to the user's PC via serial USB. Once the appropriate programs are loaded in the microcontrollers for the Distributor and Workers, the Distributor should be connected to the user's PC followed by opening the serial monitor on the Arduino IDE to communicate with the MULTI-VOLVER system. Since the MULTI-VOLVER is comprised of a network of REVOLVERs, Table 3 is useful for optimizing the performance of the Worker. However, the MULTI-VOLVER has unique functions with their own tests for connectivity and proper assembly, as well as challenges. The common challenges should be expected, and the solutions we have offered should be considered different techniques to optimize the MULTI-VOLVER's performance. A) The serial monitor is stuck at ''Waiting for first drop. . ."-Solution 1: check that there is solution being deposited into the waste collector, and that there are no leaks (i.e., the hookup wires of the waste sensor) -Solution 2: the salt concentration may be too low to bridge the current between the two pins. Increase the salt concentration.
B) The serial monitor is stuck at ''Drops detected" -Solution 1: check to make sure that both pins of the waste sensor are not touching each other or the walls of the waste collector. Re-adjust as needed so the exposed metal wire is ''floating" in the exit hole of the waste collector.
-Solution 2: apply 3-5 drops of mineral oil in the waste collector to increase the difficulty for water droplets to ''stick" to the walls. Remove any filament stringing in the waste collector's exit hole.
-Solution 3: drainage from the waste collector may be ineffective. Use the vacuum-drained waste collector set-up for more consistent removal of solution C) The serial monitor is stuck at ''Drops not detected" -Solution 1: re-adjust the position of the gravity column such that it drips solution directly into the centre of the waste collector's exit hole where the waste sensor pins are aligned. The diameter of the exit hole was highly optimized for drops falling directly in the centre to consistently trigger the waste sensor. h Task #5 Before Action 2, the serial monitor should read ''Filling tubes" and the pins of the tube sensor should be lifted away from the plate. The plate should then rotate the first tube underneath the gravity column, and the pins of the tube sensor should then be dipped into the tube.
A) The tube sensor pins are prematurely lifted before the tube is filled -Solution 1: check that the gravity column is not dripping solution onto the pins, and that the tube sensor is dry. This may require minor re-alignment of the gripper arm. If the gripper arm cannot be re-aligned, consider using a retort stand and clamp to hold the gravity column instead -Solution 2: carefully re-apply hot-glue to ensure a proper seal where the hook-up wire enters the tube sensor holes for them -Solution 3: follow instructions laid out in Supplementary Fig. 7 to modify the gravity column for more direct sample loading into tubes sitting in the plate. Manually storing the Workers' addresses for the MULTI-VOLVER While the command <L> exists for auto-homing the distributor arm similar to how <H> auto-homes the plates, we've created an option that allows users to manually store the location (viz. angular position in steps) of the Workers' columns. Below is the protocol: After Action 2, the drops should drip directly into the tube. When the level of solution inside the tube connects the circuit between the tube sensor's pins, the servo should lift the pins. The plate should then rotate to position the next tube under the gravity column, then redip the pins into the new tube. This process should repeat until all three tubes have been filled. When each tube is filled, the serial monitor should read ''Done with tube #1" and so on for each tube. When all tubes have been filled, it should read ''Done filling tubes!" and rotate the plate back to its home position.
B) The tube sensor pins are not lowered directly into the tube and collide with the plate -Solution 1: check that there is little slack between the plate and the stepper axle. Apply hot-glue to better lock the two together -Solution 2: re-adjust the orientation of the tube sensor pins to protrude more inwardly towards the centre of the tube, but ensuring the gravity column does not drip directly onto the pins Table 4 Checklist for initialization of the MULTI-VOLVER system.

Tested function Expected behavior Common challenges
h Task #1 The serial monitor should read ''Scanning I2C bus. . ." at first, then read ''I2C device found at address: 1" and repeat the corresponding message for all other Workers connected to the Distributor. When complete, it should read ''Found X devices where X is the number of Workers. Lastly, it will prompt the user with the message ''Setup done. . .please locate devices".
A) one of the Workers is not detected -Solution 1: check to make sure the jumper wires connected the SDA/SCL/GND/"12 V" are not wet and therefore connected to each other via liquid -Solution 2: user did not change the unique I2C address of each Worker before uploading the program to the microcontroller. There is a special const byte for this at the top of the program

Connect Distributor to PC via serial USB and open the serial monitor on the Arduino IDE
h Task #2 The plates should rotate until their magnet is directly above the Hall sensors attached to the waste collectors. Once aligned, the plates will immediately stop and those positions will be set as home.
See Table 3, Task #1 -Common Challenges. Action: Place a microfuge tube into the plate for all Workers Enter: <X><H><X> h Task #3 The distributor arm will rotate 1000 steps clockwise, then 1000 steps counter-clockwise. Next, the plate for the Worker at address 1 will rotate 1000 steps clockwise, then 1000 steps counter-clockwise.
A) the distributor arm or the plates rotate in the opposite direction as intended (0 = clockwise, 1 = counter-clockwise) -Solution 1: some steppers are designed differently, leading to differences in their polarity. Since the plate is symmetrical this should not affect the Worker's functionality. The user should take note that tube filling occurs in the opposite direction and the order of the fraction samples is the reverse.
This may however affect the distributor arm's functionality. It is recommended that the user purchase steppers that all utilize the same direction for 0 and 1, and work with the system in the opposite direction while the MULTI-VOLVER is off, rotate the distributor arm to a position directly opposite to where the pump tubing is clipped into the column grippers. When the MULTI-VOLVER is turned on, this step allows for the pump tubing in its neutral position to be step 0, which allows for the set-point of the distributor arm to best limit rotations that would tangle the pump tubing rotate the distributor arm using the <R> command until the 1-way valves of the arm head are sufficiently pointing into the column of the immediate left-adjacent worker (counter-clockwise) store this position using the <S> command and specify in the argument the Worker number repeat step (b) and (c) above for the remaining Workers to test if the Distributor appropriately recorded the correct locations, use the <V> command with the specific Worker number in the argument to have the distributor arm move the 1-way valves to that Worker. The <P> command can be used to check if the solution is pumped into the column Pump calibration 12 V DC pumps have variable flowrates, so we suggest users calibrate their pumps by modifying four variables in the program for the Distributor's Arduino Nano microcontroller and in the single REVOLVER firmware: smallVolumeCalibra-tionPump1, largeVolumeCalibrationPump1, smallVolumeCalibrationPump2, and largeVolumeCalibrationPump2. These are essentially calibration factors, which are found under the /* Constant properties of the hardware */ header. These variables distinguish between small volume (<= 1 mL) and large volume (>1 mL) because the calibration required for either volume range is different (viz. the calibration is not linear at small volumes). The third (optional) pump does not need to be calibrated since it is only used as a constant vacuum to drain liquid from the waste collector. Below is the protocol:. place both 1-way valves into a waste receptacle. Prime both pumps using distilled water before calibration by using the command <P,50,1><P,50,2> to remove air bubbles inside the tubing tare a scale for a 15 mL falcon tube, then place the tube underneath the 1-way valve for Pump 1 (the one connected to PUMP1 on the PCB) enter <P,1,1> to tell the pump to output 1 mL of solution from Pump 1. General guidelines for what calibration factors to use for a given output (measured volume) when 1 mL or 10 mL is inputted (desired volume) are described in Table 5. For example, if the user desires 10 mL from pump 1 and they measure 8.5 mL instead, they should assign the const float largeVolumeCalibrationPump1 variable a value of 1.17. If the user desires 1 mL from pump 2 and they measure 1.3 mL instead, they should assign the const float smallVolumeCalibrationPump2 variable a value of 0.76.

Running protocols
The REVOLVER and MULTI-VOLVER accept command sequences, which are lists of commands according to Table 1. To purify a protein, there are four primary commands: <H>, <P>, <C>, and <F>. Combinations of these commands mimic the same procedures a user would perform to wash affinity resins and elute target proteins with gravity columns. Table 6 describes typical command sequences for workflows that use a 30-mL gravity column for immobilized metal affinity chromatography. For the MULTI-VOLVER configuration, the Master can only execute commands <L>, <S>, <V>, and <R> on its own without having to send instructions to the Workers (i.e., without using the <X> command). We have also allowed the Master to pass the <R> command to the Workers outside of the main protocol in case the user wishes to perform manual homing of each REVOLVER. The program expects the user to remember to add the cell lysate at the beginning of a protocol before the first <C> command. However, the program will notify the user to add lysate if no liquid is detected.
If the user is purifying a new protein for the first time and chooses to use either system for the task, it should be noted that there are parameters to optimize that cannot be controlled in the command sequences, which only control the wash volume, number of washes, and elution volume. These other parameters include the stringency of the wash solution and the strength of the elution buffer (e.g., concentration of imidazole for immobilized-metal affinity chromatography). For a detailed description of important purification parameters, we recommend the guide by the Structural Genomics Consortium et al. [2].

Clean-up and shutting down the systems
Since some of the REVOLVER and MULTI-VOLVER components make direct contact with biological samples (i.e., the waste collector) and due to splashing, they are prone to build-up of waste on surfaces. Below is a general clean-in-place protocol for the systems: remove protein fractions from the plate and resin from the column. Re-clip column back in place transfer tubing from wash and elution buffer solutions to a container of 20% ethanol enter <P,25,1> and allow the 20% ethanol to flow through. Repeat once more enter <P,25,2> and allow the 20% ethanol to flow through. Repeat once more wipe the tube sensor pins with a lightly ethanol-soaked paper towel/ kimpwipe unplug the power supplies, then the serial USB from the system After multiple purifications (>10), we recommend the user visually assess the clealiness of the waste collector and the tubing attached to it to ensure no build-up is occcuring inside. If build-up is observed, we recommend removing the waste collector and soaking it in warm water ($50°C) with soap for 15 min to dissolve precipitate and using a small brush to physical remove any residue. If other parts of the systems become dirty over time, we also recommend this more thorough cleaning protocol. Tubing could be cleaned in this manner as well, but we recommend simply replacing the tubing if it become clogged.

Validation and characterization
The REVOLVER and MULTI-VOLVER systems rely on the waste sensor and tube sensor functioning as expected (viz. they detect liquid when liquid is present, and detect nothing when liquid is absent). Section 7.1 and 7.2 test these sensors' functionality, respectively. Section 7.3 describes our Supplementary Videos that show the REVOLVER and MULTI-VOLVER systems in action. Finally, Section 7.4 describes a real protein purification we performed manually and automatically with the REVOLVER.

Vacuum-drainage comparison
The waste collector (Fig. 13a) is comprised of a basin where the drops from the gravity column fall into, and an exit hole where the liquid is then drained. We created two small holes in this exit hole where pins (from the hookup wire) were Each Worker now performs the same protocol as described in the REVOLVER case above. At every pump step, the Workers will request the Distributor to move the distributor arm to their column's position to pump the next solution.
inserted into. In the absence of the third pump to continuously drain from the exit hole, the two pins exhibit the detection behavior seen in Fig. 13b, where ''ON" refers to liquid being detected by the sensor. Samples with a higher protein content can be more viscous and produce foaming in the collector, which reduces the draining efficiency and causes the sensor to stay ''ON" even if the column has drained. Moreover, from our testing, the position of this tubing (i.e., laid flat vs. hanging off a bench) and its size (i.e., inner diameter) can affect drainage. Therefore, we recommend the user consider adding a third pump to the system. which improves the drainage of liquid from the waste collector leading to detection behavior seen in Fig. 13c.
As an alternative to using a third pump, we additionally designed a new waste collector (Fig. 13d) that had better drainage properties and does not require a third pump, thus reducing the cost of REVOLVER by roughly 20%. We were inspired by toilets (viz. siphons) and re-designed the exit hole to have an internal siphon that flushes itself. Rather than detecting the presence of droplets, the waste collector version 2 detects changes in the volume within the siphon. If there are no more droplets from the gravity column, the two pins will either stay connected or disconnected for a set threshold time, similar to the first version (Fig. 13a). Consequently, the detection behavior appears as Fig. 13e.
Since waste collector version 1 was initially designed and tested, this paper primarily focuses on it, however we encourage future users to consider first using waste collector version 2 since it does not require a third pump with its own power supply. Our testing shows version 1 with the third pump and version 2 both have consistent, reliable waste collector drainage. The programs for the REVOLVER and Distributor that we have provided (Section 6.1) can be used for both versions. The user simply needs to change the value assigned to the variable const byte collectorVersion from 1 (by default version 1) to 2 (version 2).

Tube filling consistency
As noted in Section 2.5, fraction collectors are often open-loop systems that rely on predictable flow-rates and predetermined volumes to know how long to fill a collection tube before moving to the next fraction. However, gravity columns do not have predictable flow rates; the solutions flow through the column purely through gravity and pressure head. While one could pressurize the gravity column to control the flow rate of solutions, we deemed this approach too complex and expensive for an open-source solution. The tube sensor (Fig. 14a) follows the same principle as the waste sensor in that two metal pins detect the presence of liquid through the connection of a current. To demonstrate the importance of having our systems be closed-loop, Fig. 14b shows an experiment where we pumped 16 mL of elution buffer into the column and measured how long it took to fill each 2-mL microfuge tube in the plate. Since the gravity column's flowrate changes, the tube sensor allows the REVOLVER and MULTI-VOLVER systems to output fractions of similar volumes relatively consistently without predetermined fill times per fraction.
Notably, we found a statistically detectable negative correlation between the fill mass of each tube and the tube index (Fig. 14c, Spearman correlation = -0.55, p < 0.05), which could be due to a higher chance of additional droplets falling into the first tubes while the servo lifts and the platform rotates. Additionally, we assigned a minimum threshold for the fill time to be five seconds (that can be changed to the user's preference) to avoid premature triggering of the sensor, which helps explains why additional liquid is found in the first fractions of the column. However, the effect size of the negative correlation is small and the deviation in fill mass against the mean of all runs was below 5% except for these two measurements corresponding to the first tube. Moreover, the mean deviation between runs was also below 5% (Fig. 14d). Reducing this fill time threshold would have allowed the REVOLVER to detect the filled tubes earlier (<5 s) such that the fill mass would be similar to the subsequent tubes. Since, the magnitude of these errors is in line with that of other open-source collectors [12], we believe that the benefits conferred by our device outweigh the observed variation. Finally, we note that crosscontamination of fractions by the tube sensor is negligible (Fig. 14e). When an initial tube was loaded with >30 mg/mL albumin (Sigma-Aldrich #A7906), the tube sensor pins transferred on average 0.0008% of the protein in the intial tube.

Protocol demonstration
The details reported here are the result of several rounds of prototyping and testing. We recorded several videos to demonstrate the full functionality of the REVOLVER and MULTI-VOLVER. In Supp. Video 1, we demonstrate the REVOLVER performing a single wash step and elution into three microfuge tubes. In Supp. Video 2, we demonstrate the same protocol on three Workers networked to a Distributor in a MULTI-VOLVER system. The distributor arm's auto-homing command <L> was shortly optimized thereafter and demonstrated in Supp. Video 3. While the I2C-based protocols we developed can easily handle the six Workers in a full MULTI-VOLVER, we showcased a 3-Worker version of the MULTI-VOLVER in Supp. Video 2. Nonetheless, we verified that it is possible to effectively drain liquid from six waste collectors with a single vacuum pump, as demonstrated in Supp. Video 4. The user should note that the addition of mineral oil to the waste collector prior to protein purification, which applies a hydrophobic coating onto the inner walls, aids in drainage to an appreciable degree (noted in Table 3. Task #4 Challenge B).

Purification of CcSBPII, a nickel-binding protein
We wanted to confirm whether the REVOLVER system could actually purify a protein from a real-world cell lysate. A protein that is routinely purified in our work is CcSBPII, a nickel-binding protein belonging to an ATP-binding cassette transporter from Clostridium carboxidivorans. To express the protein and process its cell lysate, the following protocol was followed: Starter cultures for CcSBPII were grown from glycerol stock in Luria-Bertani nutrient media with carbenicillin (100 lg/ mL) for 16 h overnight at 37°C with shaking. Expression cultures were started by pre-warming Terrific-Broth media with 5% glycerol and carbenicillin (100 lg/mL) to 37°C before 1% v/v inoculation with the starter culture, then grown for 3 h at 37°C until addition of IPTG (BioShop, #IPT002) to 0.4 mM for induction. The expression cultures were then transferred to 16°C and grown for 16 h overnight with shaking, then pelleted with centrifugation and transferred to conical vials for one freeze-thaw cycle at À20°C. Frozen cell pellets were thawed and resuspended in binding buffer (50 mM HEPES, 500 mM NaCl, 5 mM imidazole, pH 7.2) to a final volume of 100 mL, followed by addition of 0.25 g lysozyme (BioShop, #LYS702). Cell pellet mixtures were sonicated for 25 min (Q700 Sonicator, Qsonica) and clarified by centrifugation to produce a cell lysate (displayed as ''L" in Fig. 15a,b).
The REVOLVER was equipped with a 30-mL gravity column containing cobalt-charged NTA affinity resin and pre-washed with the same binding buffer used to re-suspend the cells for sonication. We applied the cell lysates to the pre-auto-homed REVOLVER's gravity column and let it perform the command sequence <C><P,25,1>< C><P,25,1><C><P,25,1><C><P,11,2><F,5>. The exact protocol was performed by hand in parallel: wash with three 25 mL aliquots of wash buffer, add 11 mL of elution buffer, and collect five 2-mL fractions (the extra 1 mL of elution buffer is added since some of the solution stays in the column that we wanted to account for). The REVOLVER encountered no issues and completed the protocol in 43 min, similar to the manual purification.
We then ran an SDS-PAGE analysis of the protein samples and found nearly identical results in terms of the purity of the protein (Fig. 15a,b). To quantitatively compare the purity of CcSBPII between the both methods, SDS-gel images were analyzed by densitometry on ImageLab. The purities of CcSBPII for the E1-5 fractions were averaged for both methods (Fig. 15c). The REVOLVER's protein purity is 73.3% (standard deviation = 4.4%), and the Manual protein purity is 69.6% (standard deviation = 3.7%). This difference is not statistically significant (unpaired t-test, p = 0.23, a = 0.05). We also note the CcSBPII purity in these SDS gels is not high enough for metal-binding studies (>95%), however there are additional purifcation stages that routinely follow this initial crude purification. We are only reporting this stage of the CcSBPII purification given its relevance to REVOLVER and MULTI-VOLVER that was used to perform the crude purification step. Fig. 15. SDS-PAGE analysis of CcSBPII protein purification using (a) an automated protocol using REVOLVER, and (b) manual protocol by hand. Ladder numbers adjancent to SDS-gel images demark the molecular weight of the proteins. L = Lysate (post-sonication). E1-5 = Elution Fractions collected in 2 mL aliquots. (c) Average purity comparison of CcSBPII in E1-5 between REVOLVER and Manual as determined by densitometry using ImageLab 6.0.1.

Conclusion and future direction
We have designed, built, and characterized open-source systems for parallel protein washing and elution with gravitycolumn workflows. REVOLVER represents a low cost and highly customizable alternative to more expensive commercial systems, and due to its modular nature can be built in several steps without committing to a full build. This means that the user could build a basic version that does not include a PCB, pumps, or Hall effect sensors, which works essentially as a fraction collector where buffers are added manually. The user can then slowly upgrade the REVOLVER to a point where they have a full MULTI-VOLVER with pumps and Hall sensors. We note that the original design files for all parts of our systems reported here are available to users for ongoing improvements. For example, waste collector version 2 is an example of how to continuously improve our systems, which we recommend users consider over version 1 to improve drainage. Moreover, REVOL-VER is programmable via intuitive commands, which makes it highly flexible and reproducible with minimal effort.
There are some additional features that we did not include, but believe would enhance the systems. First, our PCB design has enough extra pins for added functionality, such as: LED status indicators, buzzers, and additional connections to external motor drivers for more pumps for adding cell lysate samples automatically. Second, we chose Arduino Nano microcontrollers for controlling each device because of their low cost and ease of use for users that are already familiar with programming Arduino-like boards. However, using other boards that have internet connectivity, such as the ESP32, would allow for wireless and remote control of each device from a dedicated web server. Third, using a properly designed dedicated user interface (GUI) could make REVOLVER more appealing for the wider community. Finally, while we have made an effort to optimize the design of our parts, different 3D printers with slightly different tolerances might result in pieces that fit loosely after assembly. Nonetheless, we expect the open-source community to contribute and help improve REVOLVER to make it an even better tool.

Declaration of Competing Interest
The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.