Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 165 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

eVOLVER

Loading...

General

Loading...

Loading...

Loading...

Getting Started

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Experiments

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Guides

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Troubleshooting

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Hardware

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Software

Loading...

Command Line Usage

A guide to basic command line terminal usage on a UNIX based machine.

  • What is UNIX?

  • Key Concepts

  • The Shell

What is UNIX?

UNIX is an operating system originally developed in the 1960s that is the base for modern operating systems such as macOS X, GNU/Linux, Sun Solaris, and many more. While modern UNIX systems usually have a graphical user interface (GUI) that you can use to interact with the system and run programs, the most direct and powerful way to interact with the kernel (operating system core) is through the shell (command line).

Key Concepts

Pretty much everything in UNIX is either a file or a process. Files are simply collections of data – they can be plain text, programs, binary machine code, or even directories. A process is a program that is being executed by the kernel.

The file-system on UNIX is very simple – it’s a tree that starts at root, which is written as /. Everything then branches off of the root with a location specified by a path from the root to the file. For example, if there were a user on a UNIX system with the username unixuser1, the home directory would typically be located at /home/unixuser1. If this user had written a hello world program in c and put it in a directory called myprograms in their home directory, that path would look like /home/unixuser1/myprograms/hello.c. It’s useful to think of the file-system as a tree that you navigate up and down through, and create routes from one spot to another. More on this later!

The Shell

The shell is the interface between the user and the kernel – it is a command line interpreter (CLI) which takes commands that the user types in and sends them off to the kernel to be carried out. Commands in UNIX are actually programs, which means that they are files on the system. When a user enters a command, the shell goes and finds that program and arranges for it to be executed by the kernel. The shell is configured through some other files that it looks at when it starts up to know where these programs are located so that the user doesn’t have to type out the path each time they want to use them.

Command Line Usage

When you open your command line terminal, you should see something like this:

This line is called the prompt – it is the shell waiting for the user to enter a command to run. Typically, the prompt will end with a $, meaning the shell is ready to accept a command.

Your prompt will probably look a little bit different, as this system has some customization and configurations set that print some extra information and changes the colors. This will be explained at the end! Just make sure you see a $ at the end of the line.

To execute a command, simply type it out on the command line after the prompt and press enter! Some commands can accept additional arguments or flags that will change the way they print things out or how they execute. Arguments are passed to a command as space separated strings of text. Because they are space separated, you cannot include spaces in your arguments - they will be interpreted as separate arguments. To pass in a string with spaces, you must either escape the space character by placing a \ in front of the space, or put the entire string in double quotes ("). Be careful though, as not all commands behave the same! It is best practice to not use spaces and other special characters in filenames if it can be helped. More on passing arguments will be shown in the following examples.

Current Working Directory and Paths

The shell has a concept of a current working directory, which can be thought of as the location in the file-system that the shell is currently “looking” at. When you start a terminal, usually the current working directory is the home directory of the user, typically at /home/username, or /Users/username on mac.

As stated earlier, a path is a string that tells the shell where to look for a specified file. There are two types of paths, absolute paths and relative paths. An absolute path starts at root (/) and lists out the entire file-system route to a file. For example:

/home/unixuser1/myprograms/hello.c

A relative path is the route through the file-system from one location to another. These are useful as they require fewer characters, less typing, and allow programs to be written that interact with the file-system that can run from anywhere and not have to worry about where the current working directory was when it was called.

When writing out paths on the shell, if you do not write an absolute path, the shell will interpret the path as relative starting from the current working directory. For example, let’s say a user wants to do something with the hello.c file in their /home/unixuser1/myprograms directory, and their current working directory is their home directory (/home/unixuser1), as in this figure:

The relative path to their c file would be the following:

myprograms/hello.c

This would be interpreted the same as the absolute path /home/unixuser1/myprograms/hello.c, but it requires less typing!

It is also possible to write relative paths to things further up or in a different branch of the file-system. For example, if the current working directory is /home/unixuser1/Desktop, and the user wants to reference the same c file as above, visually it would look like this:

and the relative path would be:

../myprograms/hello.c

The double dot (..) means up one level in the file-system. You can go up more than one level by stringing them together. For example, given a current working directory of /home/unixuser1/Desktop/another_directory, to reference the same file the relative path would be

../../myprograms/hello.c

Useful commands and tips

  • Double dot .. means the directory above the current one. A single dot . means this current location.

  • Tab can be to autocomplete a path or filename. Start typing the first letters, then hit Tab. USE THIS! It will prevent you from making typos or looking for something that doesn’t exist, and saves time overall.

    • Hitting Tab twice in quick succession will print out all files matching up to the point typed, then allows you to keep typing.

  • The star character * matches 0 or more characters in a filename. For example, *.txt would match all files ending in .txt.

  • The tilde character ~ stands for the home directory of a user.

  • Ctrl + C: kills the current foreground running process in the terminal and returns control back to the user (prints a new prompt).

Here are a few useful commands for navigation, inspection, and basic file manipulation on the command line. This is by far from being exhaustive! Most operating systems will have documentation listing out available commands and how to use them. You can also use the command man <command> to bring up the documentation (or manual) for a command within the shell. Press q to quit the manual after running. You can type /<search_string> to search through the manual.

whoami

Displays the username of the current user.

Notice that after executing the command, the shell will print a new prompt for the user to enter another command.

which

Identifies the location of an executable. Use this to determine if a command or program is installed on your system, and also to see where it actually resides on the file-system. If the program cannot be found, nothing will be returned.

pwd

Stands for Print Working Directory. It prints the absolute path of the current working directory from root. The current working directory is the location on the file-system where the shell is currently focused.

ls

Stands for list. This command will list out all files in a given directory.

You can provide a path to ls to list files not in the current working directory. Some useful flags are -l (long listing format), which can show you file permissions, owner, size, and last modified date, and -a (shows all files, including hidden files).

cd

Stands for Change Directory. Moves the current working directory to the path specified as an argument to the command. The syntax is cd <path>, where <path> can be any relative or absolute path on the file-system. If the path is invalid, the current working directory will stay the same.

mkdir

Stands for make directory. Creates a directory at the stated path if it does not already exist.

cp

Stands for copy. Copies file at one path to another specified path. If the path to be copied to is a directory, cp will copy the file and keep the same filename. You can also specify a new filename. The syntax is cp <file_to_copy> <new_location>

If you want to copy an entire directory, pass the -r flag.

mv

Stands for move. Works exactly like cp, but will remove (rename) the file from the original location.

Notice in this example that the directory went from having two files to only having one! Be very careful with cp and mv – these commands will overwrite any existing files, and there is no undo or recycle bin!

rm

Stands for remove. Delete a file at a given path. To delete an entire directory, pass the -r flag. You can also pass the -f flag which will not prompt for confirmation regardless of the files permissions. Remember, there is no undo when using this command. The syntax is rm <filename>

touch

Updates file timestamp information. Can be used to create an empty file.

echo

Outputs the strings being passed to it as arguments. You would usually pipe this command into other commands or use it to write data into a file through a single command. If you pass the -e flag, you can parse escaped characters. You can use this to print out Unicode symbols or different colors.

To append a line into a file:

echo "This is a string I want to append" >> myfile.txt

cat

Stands for concatenate. Displays the contents of a file. You can use it to concatenate by passing it multiple files, and it will print them to some output location.

head

Displays the first 10 lines of a file. Pass the -n argument to specify how many lines to display.

tail

Displays the last 10 lines of a file. Pass the -n argument to specify how many lines to display. Pass the -f flag to follow, or to not stop when end of file is reached, but rather to wait for additional data to be appended to the input. Press Ctrl + C to quit afterwards. Useful for watching log files in real time.

less

Like cat, but only displays contents from the beginning up to what will fit on the screen. Use the arrow keys (or j and k) to move the display through the file. Press q to quit.

grep

Searches a file or files for lines that match a regular expression or string. There are lots of flags and options for this command depending on what you’re trying to do, run man grep to see everything it can do.

For example, say you have a complicated project with many directories and want to find where a specific variable name or library is used. You could use grep to recursively look through all directories and look for that variable name. Grep will print the filename and contents of the line it found it on. In this example, the -r flag means to look recursively through any directory it finds, the -I means to ignore binary files, the -n will make it also print the line number, and the . means to start the search at this current location (the current working directory).

find

Finds files with properties that match a specified pattern. To find a file with a specific name from the current working directory, type the following:

find . -name "myfilename.txt "

You can also pass regex patterns to find multiple files that match a certain pattern. To find all c files, try the following:

find . -name "*.c"

sed

Stands for Stream Editor. Useful for searching, finding and replacing, inserting, or deleting things in files. As an example, maybe you want to replace all the tabs in every file within a directory to four spaces. You could do this all at once with one command:

sed -i .bak $'s/\t/ /g' *.c

The -i means to edit the files in-place, and backs up the files with an extension .bak. The characters within the quotes are what we are searching and replacing (basic regular expression), with / as a delimiter between what we are searching for, replacing, and any other options in the regex. So in this case, we are searching for \t (tab), and replacing it with four spaces. The g signifies to do this globally across the entire file and not just on the first occurrence. You can combine commands like find with sed to modify files across your file-system or in specific projects all at once.

If you really want to do some interesting command line text processing, check out the command!

Pretty colors and text editors

If you want the same coloring scheme I have in my terminal, edit the file ~/.bash_profile using a simple text editor. If you want to do it in the terminal, try using nano (a very simple text editor) or vim (an extremely powerful editor with a learning curve). Look up the usage of these on google before you open them! If you want to learn vim, you can use the built-in program vimtutor that will guide you through the basics.

To turn on some basic coloring, add this line anywhere in the file:

export CLICOLOR=1

The export command is setting the value of the environment variable CLICOLOR to 1, turning on colors. You can change how these colors look by changing some other environment variables. For example:

export LSCOLORS=GxFxCxDxBxegedabagaced

This setting makes the ls command print in a different color scheme. You can look up how to customize this on your own.

Lastly, to make your username/hostname on the prompt have different colors or display different things, you can modify the PS1 environment variable, which contains the value of the default prompt:

export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

This makes my username (the \u) bold and green, prints an @, then the host name (\h) and a colon, then prints the current working directory in blue (\w) followed by a $ in white.

You can modify the .bash_profile file to do lots of other useful things as well, such as making aliases for different commands, modifying or appending to environment variables, or setting up other things. Do your own research to see what kinds of things you can do!

Some terminals also have some color settings applied by default, or the ability to load up different profiles. Keep this in mind when trying to modify the appearance of your terminal.

ls

  • cd

  • mkdir

  • cp

  • mv

  • rm

  • touch

  • echo

  • cat

  • head

  • tail

  • less

  • grep

  • find

  • sed

  • Ctrl + L: Clear the screen. Alternatively, use the clear command.
  • Ctrl + A or Home: Moves the cursor to the end of the line.

  • Ctrl + E or End: Moves the cursor to the end of the line.

  • Ctrl + K: Deletes from the current cursor position to the end of the line. String this together with Ctrl + A to delete everything on the line!

  • The up arrow and down arrow on your keyboard will let you scroll through your recent commands so you don’t have to retype them.

  • Ctrl + R: Recall the last command matching the characters you provide. Press repeatedly to search past the last matching to previously matching commands.

  • command > file redirects the output of a command to a file, overwriting existing content.

  • command >> file redirects and appends output of command into a file (does not overwrite).

  • first_command | second_command is a pipeline, (the | character is called a pipe). This will send the output of the first command as input to the second command.

  • Command Line Usage
    Current Working Directory and Paths
    Useful commands and tips
    whoami
    which
    pwd
    Pretty colors and Text editors
    awk
    It would be really annoying to type out that filename! Just use Tab autocomplete!
    Notice the .im_a_hidden_file.txt entry that is only in the output when using -a.

    Overview of Hardware Architecture

    High-level description of hardware architecture

    1. Smart Sleeve

    2. Motherboard

      1. SAMD21 Arduino Microcontrollers

      2. Characterized SA Boards

        1. PWM Board

        2. ADC Board

    3. Auxiliary Board

    General Overview

    The eVOLVER hardware framework contains three levels of organization: (1) programmable sensors and actuators (e.g. Smart Sleeve components, pumps/fluidic control elements) (2) a Motherboard and microcontrollers, and (3) a Raspberry Pi. At the level of individual culture vessels, Smart Sleeves enable individual control over several experimental parameters in the culture.

    Specifically, each sleeve contains sensors and actuators (e.g. heaters, LEDs, thermometer/thermistor) that measure and adjust aspects of the culture environment of a glass vial housed within. At the next level of organization, the Motherboard, Arduino microcontrollers, and other core electronic boards form a robust hardware infrastructure that communicates internally and coordinates activity of each individual Smart Sleeve to control each experimental parameter.

    At the final level of organization, a Raspberry Pi forms a link to the outside world by relaying information and commands to and from a computer/server, permitting the same computer/server to run many eVOLVER devices across a network. Layered on top of the hardware framework, control software enables programmable feedback between parameters and orchestrates experiments at an abstract level, providing an easy method of customization that is shareable with other users. Below we present the core hardware framework as well as the particular configuration enabling the experiments described in this study.

    Smart Sleeve

    The Smart Sleeve houses each culture vial and contains all the necessary sensors and actuators to regulate desired culture parameters. An aluminum sleeve surrounds the vial, which is mounted into a 3D printed part that houses a printed circuit board (PCB) called the Component Mount Board (CMB). The CMB contains a variety of different sensors and actuators needed to regulate culture conditions. As the most flexible component in the eVOLVER Framework, the Smart Sleeve can be re-designed to regulate other culture conditions based on the user's end application.

    Motherboard

    The Motherboard is responsible for housing custom PCBs and Arduino microcontollers that control user defined culture conditions by routing signals to and from an array of Smart Sleeves. Custom PCBs are plugged into SA (sensor/actuator) slots, of which there are 8. Using the routing system, these custom PCBs can collect data from CMB sensors or deliver power to CMB actuators. For example, in the base eVOLVER setup, there is a SA slot dedicated to individually powering heaters across all 16 Smart Sleeves.

    SAMD21 Arduino

    On the Motherboard are 4 SAMD21 Arduinos, each of which is responsible for regulating a single culture parameter. To do so, each SAMD21 board is electrically connected to 2 SA slots since many culture conditions require both a sensor and actuator. To regulate temperature, for example, a single SAMD21 will leverage its SA slot pair to sense the temperature for each Smart Sleeve and provide the necessary power to each Smart Sleeve heater to maintain the user-defined temperature for each culture vial. This modular design enables functional parallelization of culture parameters, providing a high degree of flexibility to users when designing hardware for experiments.

    Characterized SA Boards

    FynchBio has designed and characterized the PWM Board and ADC Board, two PCBs that plug into Motherboard's SA slots. These boards are designed to power actuators and collect sensor data for existing CMB components and should be sufficient to handle custom reconfigurations.

    PWM Board

    The PWM Board is designed to power 16 actuators, in parallel, by amplifying the SAMD21 voltage ouptut using the Motherboard's voltage source. The PWM Board leverages pulse-width modulation (PWM) signals to power actuators, allowing digital signals to better approximate analog signals. This is essential because analog signals provide precise control of actuators, rather than simple ON/OFF dynamics with digital signals.

    ADC Board

    The ADC board is a 16-1 de-multiplexer that collects data from 16 sensors and filters it before sending it to its cognate SAMD21 Arduino. Specifically, the ADC Board reads the output voltage from a basic voltage divider circuit integrated with the sensor on the CMB. After analog signals are collected, they are filtered to remove noise, sent to the SAMD21 Arduino through an input pin, and finally converted to a digital signal for downstream data processing.

    Auxillary Board

    Akin to the Motherboard, the Auxillary Board is a custom PCB designed to control a peristalitc pump array to handle fluidic functions. This includes removing waste and adding nutrients/chemicals to cultures. The Auxillary Board contains a single SAMD21 Arduino, which connects to 3 PWM Boards to actuate 48 peristaltic

    Motherboard set up for revision D vial board. Differences to vial board revision C inside black box.
    This is for the old motherboard / smart sleeve which had 7 slots for customization of sensor/actuator (SA) boards. The current motherboard / smart sleeve combination has 8.

    Peristaltic Pumps

    Just like the digestive system!

    Standard components

    The standard eVOLVER peristaltic pumps (since ~2020) sourced by Fynch Bio are selected specifically to eVOLVER use. Previous pumps used with eVOLVER during its early development tended to wear out quickly and have variable flow rates, primarily due to the mechanism for rotating the rollers against the tubing to drive pump flow. The motor shaft directly turned the rollers through friction, which led to slippage and abrasion over time. The current pumps do not have drirect contact between the motor shaft and rollers, instead driving roller rotation through a gear reduction system.

    This gear system drives a roller casing with fixed roller axles contained in the pump head. In this way, the pump action does not rely on friction and thus much more accurate and durable than previous pumps.

    Inside the pump head, the pump tubing can be removed and inspected. The tubing is 2x4mm Pharmed BPT, which has similar chemical compatibility as the silicone tubing for the rest of eVOLVER fluidics, and is rated to over 1000 hours of operating life. Learn more here:

    Troubleshooting and repair

    Because the current pump style has been introduced so recently, very few of them have failed from wear and tear. Based on our experience with other pump styles, the most likely failure mode will be collapse or tear of the tubing inside the pump head, or shearing of the tubing on the barb outside the head. This can be solved by replacing the pump head (contact Fynch Bio) or replacing the tubing.

    Pharmed BPT can be purchased from Saint-Gobain suppliers. However, the tubing should be 2mm ID and 4mm OD, and there is not enough tolerance to allow for similar non-metric sizes (like 1/16"x1/8"). 2x4mm Pharmed tubing is difficult to find in the US, and we are working on finding a reputable supplier for it. In the meantime, these alternatives from McMaster-Carr have been tested to seal and pump properly: and

    The induction motor inside the pump is very unlikely to fail through normal use. If there is a liquid spill on the pump array and some pumps are not spinning, the most likely cause is corroded contacts with the pump array PCB. While the pumps themselves will be fine, they should be removed and replaced to a new PCB, ordered from Fynch or PCBWay. This will require removing solder, which can be tricky.

    Swapping and modifying

    The pump heads can be rotated 90 degrees in any direction, should your bench setup require changing the direction your pumps face.

    The low-flow pumps available through Fynch use an additional gear reduction box to reduce the speed of pump action by a factor of 45. This is useful for addition of inducers, antibiotics, or other media feeds that require a small and precise bolus.

    Plenty of other peristaltic pumps are suitable for eVOLVER, so long as they operate at 12V.

    The flow rate of eVOLVER pumps (and any pump with an induction motor) is somewhat modifiable through PWM modulation. This effectively reduces the voltage going to the pump, which will slow its rotation, down to the point where the coils can't generate enough torque to consistently turn the shaft. This happens about halfway through the PWM range (around 2000), where you can get the pumps to run at about 1/3 speed. This is rarely necessary for experiments, so it has not been optimized, but is a potential feature for users to explore.

    https://www.biopharm.saint-gobain.com/components/fluid-transfer/pharmed-bpt-tubing
    https://www.mcmaster.com/5102K11/
    https://www.mcmaster.com/7027N11/

    Overview of Fluidics

    Making culture continuous

    For eVOLVER to be more than a 16-well plate reader, there needs to be control of liquid flow through each vial. The most common hardware for this application is the peristaltic pump, used in continuous culture for almost a century. Novel aspects of eVOLVER include the automated, individual control of these pumps, and modularity for different types and numbers of pumps. This is enabled by an auxiliary fluidic board, separate from the motherboard, that controls up to 48 fluidic actuators. For typical eVOLVER use, this is coupled with 32 pumps (16 for influx, 16 for efflux), 64 lines of tubing (to and from each pump), and 128 barbed connectors (for both ends of each line of tubing). This section of the Wiki will go into detail of how each component works, and options for repair, troubleshooting, swapping, and modifying them in the eVOLVER fluidic hardware framework.

    Modular fluidic control system for the eVOLVER platform. (a) Electronic hardware for fluidic control. The Auxiliary Board enables one Arduino to independently and simultaneously control 48 fluidic elements (e.g. pumps and valves) via three PWM boards. (b) Schematic of system design for basic fluidic control. Serial commands from the Raspberry Pi are sent to the Motherboard and Auxiliary board on the same RS485 communication line. The Auxiliary board interprets the appropriate serial commands and actuates specific pumps for fluids to be metered in and out of a target smart sleeve.

    Tubing and connectors

    Also known as plumbing

    For reference: Inner diameter = ID, Outer diameter = OD. Quotation marks (") indicate inches, single apostrophe (') indicates feet. Most eVOLVER hardware is in US customary units (i.e. not metric) due to wider availability of parts.

    Standard components

    Tubing

    The standard eVOLVER package includes 1/16" ID (1/8" OD) soft silicone tubing for all fluid handling operations. For exact specifications, see the , "Fluidics" tab.

    Silicone is the tubing of choice for eVOLVER because of its flexibility, durability, cost, and resistance to beach and ethanol. It is also autoclavable, although 30 minutes of 10% bleach sterilization is sufficient to completely sterilize the lines.

    Silicone tubing is highly permeable to gasses, including water vapor. If you leave media in the tubing for >1 week, it will likely dry out and cause an obstruction (see ).

    Connectors

    The standard eVOLVER package includes 1/16" barb to luer-lok connectors for all pump-to-vial connections. For exact specifications, see the , "Fluidics" tab.

    The barb side of the connector is rated for the ID of tubing it is mean to be used with, i.e. 1/16" barb for 1/16" ID tubing, 1/8" barb for 1/8" ID tubing, etc. Barbs are designed to get a tight seal around their widest diameter, with the max pressure and resistance to slippage depending on the softness of the tubing and style of barb (40 psi for standard eVOLVER connectors).

    Luer connectors work by pressing a "male" plug into a "female" socket, both tapered at 6%. Because of the smooth surfaces and large contact area, this creates an effective seal without tools, held in place by friction. Syringes and medical equipment commonly make use of luer connections.

    To hold luer connections in place more securely, luer-lok connectors use a screw-like "skirt" to prevent luer connectors from simply being pulled apart. eVOLVER tubing connections are luer-lok, allowing for easy but relatively secure connections between most components.

    However, luer-lok connections have some common failure modes. Because the threads of the skirt are so coarse, it only takes a 1/4 turn to break the seal at the plug-socket interface, leading to a leak (if positive pressure) or air bubble source (if negative pressure). Loose luer connections easily become disconnected, leading to spills (the major source of electronics failure) and of course, failed experiments. One should always ensure luer connections are snug (hand tight), and tubing free from torsion that might unscrew the luer-lok.

    Additionally, because the male connector comes in direct contact with fluid, it becomes your most likely contamination source. Be careful not to bump the tips of the male connectors against contaminated surfaces when setting up your experiment. Doing a final wash with 70% ethanol after bleach sterilizing can prevent some contamination from this route, depending on your media and organism.

    For more information on luer connections (and credit for the above images), see here:

    Swapping and modifying

    Any soft tubing (durometer 40-70A) works well with the barbed connectors. Vinyl (PVC) or tygon tubing might be a suitable alternative for decreased permeability. Opaque tubing may make sense for light-sensitive media or antibiotic feeds that have extended time exposed to light in the tubing due to low flow rates, at the cost of not being able to observe media in your line. Remember that 1/16" ID tubing contains about 0.75 mL per foot.

    Fluidics box

    Separating fluidic control from the motherboard

    What's in the box

    The fluidics box can be opened by removing the 8 phillips head screws on the sides. Inside the box is the fluidics board (with a SAMD21 and three PWM boards) with RS485 and 5V connections for the SAMD21, and a 12V power supply beneath the board. Should the need arise to update the arduino code on the SAMD21, you'll need to open the box to get to it.

    The connections to the pumps are numbered according to their address, i.e. cable 1 connects to pumps 1-8, cable 2 connects to pumps 9-16, etc.

    part sourcing google sheet
    obstruction troubleshooting
    part sourcing google sheet
    https://www.apsf.org/article/managing-luer-connections/
    Luer-slip connector
    Troubleshooting and repair

    Not many things can go wrong inside the box, but we have dealt with a situation where the 5V power connection was faulty and led to malfunction. This part can be replaced by opening the box and replacing the faulty connector.

    Modifications

    Adding another pump array

    The existing pump pox can control up to 16 additional pumps (or any other 12V valve, actuator, etc) with no modifications. Typically this would mean using connections 5 and 6 on the back of the box, which correspond to indices 33-48.

    Modifying fluidics code

    Adding another pump array will of course require changes to custom_script.py, because pump indices 33-48 are not being sent commands during normal eVOLVER operation. The MESSAGE variable holds all information on how long to run each pump, and this is where you should implement your commands in custom_script. See the turbidostat section of the custom_script page for more information.

    Daisy-chaining multiple boxes

    Two RS485 ports (the telephone jack-looking ports) are available on the back of the fluidics box so that multiple boxes can be linked together on the same RS485 "line". All SAMD21 microcontrollers are receiving the same serial data from the Raspberry Pi, and only responding to commands when the appropriate address for that SAMD21 is in the command, like "temp" or "stir". Additional fluidics boxes can have the same "pump" address with higher pump indices (i.e. pumps 49-96 for a second box), so long as you change the number of expected pump values on the conf.yml file. You will also need to modify the SAMD21 arduino code accordingly. You can also have a different address for the other fluidics box, by adding another parameter in the conf.yml and modifying the arduino code accordingly.

    Arduino

    Resources related to using and programming arduinos for eVOLVER.

    The eVOLVER uses SAMD21 mini breakout boards that can be programmed using the Arduino IDE. These microcontroller breakout boards allow the eVOLVER to read analog signals from sensors (OD, temperature, etc.) and actuate pumps, stir, LEDs, and any other culture component that is needed.

    General Arduino Resources

    SAMD21 breakout board documentation, hookup guide

    About Us

    eVOLVER was initially developed by the Khalil Lab at Boston University. The software and hardware designs are available under an open-source license on GitHub. There are users around the world using and developing eVOLVER for a wide range of scientific interests.

    If you would like to be listed here as an eVOLVER community member and user, please reach out to us!

    Khalil Lab

    The Khalil lab uses eVOLVER to enable fundamental eco-evolutionary studies of cellular systems, and to evolve proteins with new and biomedically-useful functions at scale.

    • Brandon Wong

    • Zachary Heins

    • Daniel Hart

    • Ezira Wolle

    Alumni

    • Chris Mancuso

    Nathaniel Borders

    Code of Conduct

    eVOLVER Community Code of Conduct

    The eVOLVER community follows the CNCF Code of Conduct.

    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting heinsz@bu.edu and ccing evolvercommunity@gmail.com

    Buying eVOLVER

    Buying

    If you wish to purchase an eVOLVER, email account@fynchbio.com for a quote.

    Connecting to eVOLVER

    Currently eVOLVER requires a dedicated computer connected to it to run experiments. We recommend getting a Mac, which are easier to use and more reliable.

    The computer needed for running experiments does not have to be new or powerful.

    Upgrades

    Consider implementing these to the Fynch Bio eVOLVER.

    Variants

    Part Sourcing

    Check the upgrades guide here.

    Guidelines

    1. Use the below Google Sheet to source parts for each of the eVOLVER subsystems (click on the tabs for different parts of the eVOLVER)

    2. Parts may not be available due to backorder, discontinuation, or regional differences

    3. If you are able to find an alternative vendor for a part, please post to the forum so it can be added to the spreadsheet

    4. Should you not be able to order a part, post to the forum

    eVOLVER Specific Parts

    Many eVOLVER parts must be 3D printed or are custom PCBs made to control eVOLVER hardware. For these, please see the for CAD files and electronics parts lists for eVOLVER PCBs.

    Vial Caps

    Choose and 3D print vial caps for your application . For most applications choose the "universal" cap.

    Other "Consumables"

    See Consumables tab in spreadsheet above.

    Recommended to buy several vial racks as well for ease of handling vials.

    Relevant Forum Posts

    Note that the eVOLVER Consumables form post calls for 5/32" barbed connectors and 1/8" tubing. This is no longer recommended; refer to the "Fluidics tab" on the google sheet above and

    eVOLVER Community

    Check out the forum!

    New to eVOLVER, or have any questions about how something works or how to do something? Head over to our Discourse forum! We have many guides and resources available and are happy to start a conversation about your eVOLVER and science! https://evolver.bio

    What are the different platforms used for?

    Forum

    For questions, discussion, and knowledge building

    Should users find a problem, they should characterize it and submit it to group discussion on the forum

    GitHub

    For tracking and distributing code and hardware development.

    Not for discussion

    Wiki - Documentation

    Basic information about the eVOLVER (about the project, contributing, where to buy)

    Guides

    In-depth hardware / software documentation

    Publications

    Background, final data and experiments

    Extensive documentation in the supplements, meant for reference

    upgrades
    min-eVOLVER
    Custom experiments
    Custom fluidics
    Adding a new experimental parameter
    How to Edit the Wiki
    hardware GitHub
    here
    media bottle and splitter guide.
    eVOLVER Consumables
    Vial Racks
    Waste Containers

    DPU Installation

    Process for installation of the Data Processing Unit (DPU)

    You can run eVOLVER experiment culture routines directly on the command line, or through the Electron graphical interface. This page documents how to install the DPU for use on the command line.

    We recommend running the DPU through the GUI for most use cases. Please see the Electron App (GUI) Installation documentation and the GUI Start Guide for more information.

    Even if you plan to use the GUI to run your experiments, you still need to go through these steps!

    If you are unfamiliar with working on a command line terminal or cannot use the Electron GUI for your application, check out the guide!

    (Mac only) Homebrew and openssl/sqlite installation

    In Terminal, install homebrew:

    Afterwards, run the two following commands:

    brew install openssl

    brew install sqlite

    Install Python 3.9

    Python 3.9 is required for dpu operation

    Mac:

    Windows

    1. Go to the official to download python 3.9.

    2. Follow to install python on your machine.

    3. If you have multiple versions of python3 on your machine, you can set up an to manage the usage between the different versions.

    DPU Installation

    1. Navigate to the

    2. Click Releases on the right side of the page

    3. Click the Source Code link (zip) to download the latest release.

    The release name/number will be different from the screenshot below! You will typically want the latest release, which should be at the top of the page.

    4. Move the downloaded .zip file (which should be in your Downloads directory for your browser) to the location where you want your experiments to run. Documents or Desktop are good locations. This is also where your data will be saved.

    Do not leave the DPU zip file in your Downloads directory. Please move to appropriate location.

    5. Unzip the file.

    6. Open a terminal. On Mac, you can use the built in Terminal application (press CMD + Space then type terminal to find it). I recommend if you want a terminal with some quality of life enhancements. On Windows, you can use PowerShell.

    7. We use to manage our python dependencies. Go to their website to download and install it on your machine.

    • If you are using a Mac and have installed homebrew (described above) you can run the following command: brew install poetry

    • Windows Powershell:

    If you have installed Python through the Microsoft Store, replace py with python in the command above.

    8. Navigate to the DPU directory you just downloaded and unzipped:

    • Use this command: cd <path_to_dpu>

    • Replace the <path_to_dpu> with the location you put your dpu

    9. Create a new then activate it with the following command:

    Mac:

    python3.9 -m venv venv

    source venv/bin/activate

    Windows PowerShell:

    py -3.9 -m venv venv

    venv\Scripts\Activate.ps1

    10. Use poetry to install all necessary dependencies.

    If you can't find poetry on Windows "poetry : The term 'poetry' is not recognized as the name of a cmdlet" and it is installed, use the following command (replace <Your_User_Name> with your user name)

    C:\Users\<Your_User_Name>\AppData\Roaming\Python\Scripts\poetry.exe install

    You must activate the virtual environment when running DPU scripts from the command line. If you close a terminal or re-open it, you'll need to run . venv/bin/activate(Mac) or venv\Scripts\Activate.ps1 (Powershell) again while in the dpu directory.

    You can activate the dpu environment automatically on a Mac or Linux machine by adding a line in your shell run commands (rc) file typically located in your home directory located at ~/.zhrc (Mac) or ~/.bashrc (Linux):

    source <path to dpu>/venv/bin/activate

    swapping out <path to dpu> with the actual path on your machine to the dpu.

    If you have issues with the dpu setup, reach out to us on the

    Configuring Computer and Networking

    How to set up your computer to communicate with and run eVOLVER software.

    Page under construction!

    Link to tutorial on forum for DPU installation

    How to add multiple evolvers on the same computer

    Can go through building router, but contact institution IT (tell them it's RPi)

    Command Line / Terminal Usage
    python website
    these instructions
    alias
    DPU Github page
    iTerm2
    poetry
    virtual environment
    forum!
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew install python@3.9
    (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
    poetry install

    Pump Calibration

    1. Fill a large beaker with water and submerge all of the pump lines (inputs and outputs of the pumps), ensuring all of the ends are below the surface of the water.

    2. Run the pumps on the Setup page to completely fill the lines with water (about 20s)

    3. Place 16 vials into a rack and place the output ends of the pumps to be calibrated into the vials.

    It's best practice to not put the vials into the eVOLVER platform in case you make a mistake and overflow the vials. Keep the rack to the side.

    4. Select the eVOLVER on the top of the GUI home page to be calibrated

    5. Navigate to the Pump Calibration page

    6. Enter a name for the pump calibration

    7. Select the pump configuration for the eVOLVER. In a standard setup, IN1 are the media in pumps, and E refers to the efflux pumps. If you have another pump array (for a second media input source), it is typically going to be in IN2. Click Start Pump Calibration. The standard pumps are the FAST pumps (~1 mL/s, black pump heads). If you have the slow flow rate pumps (~ 1 ml/m, pink pump heads), select the SLOW radio button for that array.

    IN1 refers to address 0-15, E refers to addresses 16-31, and IN2 refers to addresses 32-47. If you have a different pump array setup you can either calibrate manually by putting a json fit object into the calibrations.json file on the RPi server, or reach out on the forum to ask for assistance.

    8. Select all of the vials either by clicking the button on the bottom right or clicking and dragging across the vials on the selector. Click PUMP IN (or whatever the pump array you are calibrating) to run the pumps for 10s if the FAST radio button was selected or 100s if the SLOW radio button was selected.

    The time the pumps will run will be noted in the bottom right of the screen. If you need to stop the pumps early, click FORCE STOP ALL.

    9. After the pumps finish pumping, measure how much water was pumped by pouring out the water from each vial into a 25 mL graduated cylinder (or something similar). Enter this number into the box for each vial. The flow rate will appear on the vial selector on the right side of the screen.

    Round to the nearest half graduation. The minimum resolution cylinder we recommend for typical eVOLVER pumps should have 0.5 mL graduations.

    10. Repeat this process for each pump array you have selected for calibration.

    11. Click the pen button to submit and save the calibration. Then click Exit after the calibration is logged.

    12. Verify the calibration appears on the setup page.

    Optical Density Calibration

    The goal of this tutorial is to learn how to efficiently generate OD calibration curves for each Smart Sleeve in a 16 vial eVOLVER setup.

    You must complete temperature calibrations before doing OD. Temperature effects OD and if there are big differences between vials, you will need to recalibrate all vials once you do a temperature calibration.

    About

    Why are OD measurements important?

    The turbidity (cloudiness) of the culture typically correlates to how many cells are in a culture. By using a simple LED and photodiode pair, we can quantify how many cells are in the population, track how the culture is growing over time, and observe the culture changing over the course of the experiment.

    Why is calibration necessary?

    Readings sent from the Raspberry Pi to the computer/server are the raw voltage values measured by the Arduino in the Motherboard. In other words, to make sense of what these readings are, we need a calibration file that converts this to a useable optical density measurement.

    Is calibration different between different organisms?

    Yes. Cells with different size and shapes scatter differently and would result in unique calibration curves. eVOLVER is set up such that one could easily use the appropriate calibration files for each experiment/organism.

    Is calibration different between different temperatures?

    Yes. Temperature effects the photodiode sensors that we use to measure OD. If you plan to use different temperatures we suggest doing a new calibration for each one.

    Always calibrate OD with the on to block ambient light. Recommendation: check the page for other things that can effect OD readings.

    Prepare the day before:

    • 16 assembled glass vials:

      • Glass vials (Chemglass, CG-4902-08)

      • Vial screw caps

      • Octagon magnetic stir bars (Fisher, 14-513-57)

    Check your Smart Sleeves with a vial containing water vs a culture of an arbitrary OD to make sure that you see some change in the Setup page of the GUI. Otherwise you will need to change the photodiode or OD LED.

    OD Standard Preparation

    Before preparing standards, turn eVOLVER on and to the temperature you will use this calibration at (ie 37C for E coli and 30C for yeast) and set stirring to 4.

    Wash cells and resuspend in 1X PBS to avoid cell growth

    1. Spin down saturated cultures in 50mL or 250mL centrifuge tubes.

      1. 2500 rcf for 5 minutes should be fine for bacteria or yeast

    2. Pour off media and resuspend cells in 50mL 1X PBS

    3. Spin down cells in a 50mL conical tube

    Find OD of Concentrated Cell Stock and Make Standards

    The cell stock will likely be much too dense to measure undiluted. For example, OD600 absorbance values on our plate reader above about 0.5 are inaccurate and we can expect this stock to be above an OD of 4.

    1. Measure the OD of cell stock using a dilution series

      1. Dilute 200uL of cells into 1800uL of 1X PBS (1:10)

      2. Dilute the 1mL of the 1:10 dilution into 1mL 1X PBS (1:20)

      3. Make 1:40 and 1:80 dilutions

    Use spreadsheet to make calculations. Make a copy on your own Google Drive or download for use in Excel.

    1. Calculate OD of concentrated cell stock

      1. Input ODs for dilution and 1X PBS blank into the spreadsheet

      2. Enter calculated OD into 'OD of Cell Stock'

    Measure OD of Standards

    1. Make dilutions for standards above 0.5 OD

      1. Use a 96-well plate to ease dilutions and transfer to plate reader

    2. Measure ODs and calculate original OD from dilution OD

    Don't immediately throw out your standards after finishing calibration! You could need to make another calibration should one or more vials be off.

    Calibrate OD using the GUI

    1. On the eVOLVER app home screen, make sure you are connected to your eVOLVER (green symbol next to active eVOLVER), then choose CALIBRATIONS and then O.D.

    1. Give the calibration a name (a standard suggestion is YYMMDD_YourInitials_od) and click enter.

    2. Click on the white box by the S0. The display should now have an overlay with Sample 0 on top of a box with a keypad. Input the OD values of each sample.

    1. Press ▷. After the eVOLVER has logged the vials in one configuration, click the forward arrow. Move vials into their new positions, as seen on the right side of the GUI.

    2. Click VIEW COLLECTED DATA to monitor the smoothness of the curves as you calibrate. If a particular value is a big outlier, consider rewinding to that vial position and doing it again. Don't worry your other work will be saved!

    3. Continue until all sixteen sets of values have been saved for each standard in each vial.

    Before doing an experiment it is recommended to further validate your calibration (after you have selected it on the SETUP page) by and logging a few values for each vial at a known OD.

    Electron App (GUI) Installation

    Process for installing the Electron App (GUI) for eVOLVER.

    For all operating systems, navigate to the releases section of the Electron App GitHub page.

    1. Mac

    2. Windows

    3. Linux

    For instructions on updating the GUI on the RPi, see .

    Mac Installation

    1. Download the evolver-electron-X.X.X.dmg file, where X denotes the version number in the latest release. The latest release should be the first one you see at the top of the page.

    2. When the download finishes, open the file (it should be in your Downloads directory) and drag the eVOLVER app into your Applications directory.

    FIRST TIME INSTALLATION - DO THE FOLLOWING NEXT STEPS!

    3. Open the eVOLVER app from the Applications directory.

    4. Using an editor of your choice (TextEdit, Nano, Vim, TextWrangler, etc.) open the file config.json located at /Users/<your username>/Library/Application Support/eVOLVER/config.json

    You may need to enable the ability to view hidden files if you are trying to find this file in a Finder window. With a Finder window open, press Command + Shift + . (period) to make hidden files appear. You can press the keys again afterwards to make them disappear.

    If you are attempting to modify this file via a terminal, be sure to escape the space character in Application Support with a \. It should look like this: /Users/<your username>/Library/Application\ Support/eVOLVER/config.json

    5. Add a line in this file between the braces: "dpu-env": "/Users/<your username>/Document/dpu/venv"

    If you add this line to the beginning of the block, be sure to add a comma at the end! If you add it to the end, put a comma on the line before it.

    If you installed the DPU in a different location, be sure to reflect that in this line. The electron app uses this to find the correct python binary/venv to run the DPU

    6. Save the file and you're done!

    Windows Installation

    1. Download the evolver-electron-X.X.X.exe file, where X denotes the version number in the latest release. The latest release should be the first one you see at the top of the page.

    Chrome may flag the download, just select "Keep".

    2. Open the .exe file.

    In Windows 10, Microsoft Defender prevents the app from starting immediately. Simply click "More info" and then "Run Anyway" to get around this.

    FIRST TIME INSTALLATION - DO THE FOLLOWING NEXT STEPS!

    3. Using an editor of your choice open the file config.json located at C:\Users\<Your-UserName>\AppData\Roaming\eVOLVER\

    You may need to the ability to view hidden files if you are trying to find this file in a File Explorer window.

    4. Add a line in this file between the braces: "dpu-env": "C:\\Users\\<Your-UserName>\\Desktop\\dpu\\venv"

    Note the escaped \ , be sure to put double \\ throughout the path.

    If you add this line to the beginning of the block, be sure to add a comma at the end! If you add it to the end, put a comma on the line before it.

    If you installed the DPU in a different location, be sure to reflect that in this line. The electron app uses this to find the correct python binary/venv to run the DPU.

    5. Save the file and you're done!

    Linux Installation

    1. Download the evolver-electron-X.X.X.AppImage or evolver-electron-X.X.X.deb file, where X.X.X denotes the version number in the latest release. The latest release should be the first one you see at the top of the page.

    Selection of either .deb or .AppImage is largely based on personal preference and computer environment, each presenting slight pros and cons. If you are unfamiliar with installing Linux packaged software, use this link to learn more about what is applicable to you. Briefly, .deb files are natively designed for Ubuntu and will compile the entire application, along with necessary dependecies, onto the local machine. An AppImage file contains everything necessary to run the program, requiring you to execute the file when you want to run program.

    2. If downloading evolver-electron-X.X.X.deb, open your Downloads directory and right-click evolver-electron-X.X.X.deb to open the file with Software Install .

    3. A new window should open, allowing you to install the eVOLVER GUI. Click Install and follow the onscreen instructions to install the eVOLVER GUI.

    FIRST TIME INSTALLATION - DO THE FOLLOWING NEXT STEPS!

    4. Open the eVOLVER app by either clicking Show Applications from the home screen or through the command line. To open via command line, open Terminal and enter to access installed applications:

    Run the eVOLVER GUI by entering:

    5. Using an editor of your choice, open the file ~/.config/eVOLVER/config.json .

    6. Add a line in this file between the braces to denote the location of the installed DPU virtual environment:

    "dpu-env": <path_to_dpu>

    If you add this line to the beginning of the block, be sure to add a comma at the end! If you add this line to the end, put a comma on the line before it.

    7. Save the file and you're done!

    Router Setup

    Page under construction

    Log in to router and make it have a static IP

    otherwise IP will change each time it's power cycled

    Then when connecting via ssh it will warn you and you need to change the file

    You can then change the name, MAC address, and IP of the evolver in the evolver-config.json file

    Manual Calibration - calibrate.py

    You can use manual calibration to view past calibrations after they are done. This can be useful for troubleshooting if a vial is not behaving as expected.

    About

    The GUI will run calibrations automatically upon completion of the calibration protocols. However, you can still manually run a calibration if you would like to change calibration settings. Can be useful if your GUI calibration fails for some reason.

    Software Installation

    It is helpful to have a dedicated eVOLVER computer (not a personal computer) as eVOLVER experiments take multiple days. We recommend a Mac for their high reliability and native Python, however users have reported Windows works as well.

    eVOLVER software does not take very much computational power or memory so an older computer should be fine.

    Search on the

    eVOLVER Documentation Wiki

    Welcome to the eVOLVER documentation wiki! This aims to be a resource for all things eVOLVER, covering how to set up, use, modify, and troubleshoot hardware, software, and wetware on the platform.

    If you have any suggestions or feedback on the wiki, documentation, or eVOLVER, please let us know on the !

    Please also note that we are still working on this wiki! There are many incomplete pages/stubs that we will fill out as we continue to build out documentation.

    Upgrade Base eVOLVER Hardware

    Vial Cap Upgrades

    As of 25/01/15, FynchBio gives the cap that only accommodates needles. This cap does not have a tight seal on the vial and thus does not enable emergency efflux.

    Calibrations

    Before beginning calibrations all and should be complete.

    About

    In order to appropriately interpret data from and actuate physical elements connected to the eVOLVER framework, a relationship must be established between the electrical signals generated by attached sensors and the physical phenomenon they are measuring. This is done by manually measuring values on a controlled set of data via some gold-standard assay or measurement device and comparing these data to the eVOLVER generated data. By doing this across a range of different values, a function can be fit to this relationship to allow eVOLVER to interpret data accurately.

    Unboxing and Setting Up

    If you have any questions about this process, feel free to reach out on the !

    Congrats on getting your eVOLVER and supporting our open-sourced community. We rely on support from you guys to help sustain this ecosystem so we can let everyone do the experiments that they want to! In this tutorial, we are going to teach you how to put this system together:

    If you ordered the standard kit, this is the tutorial for you! The kit contains the following major components:

    • Vial Platform

    Setup Waste Carboy

    1. Place waste lines into carboy

    2. We use a small stand to bring the carboy closer to the eVOLVER

    3. Have an extra carboy ready to swap in when the first gets full

    Temperature Calibration

    The goal of this tutorial is to learn how to calibrate the temperature settings for each Smart Sleeve in a 16 vial eVOLVER setup

    You must complete temperature calibrations before doing OD calibrations. Temperature affects OD and if there are big differences between vials, you will need to recalibrate all vials once you do a temperature calibration.

    About

    Benefits / Options
    1. Better seal to vial - enables emergency efflux (see below) away from vial if too much is pumped in

    2. More ports available

    3. Reusable connectors - can use luer connectors to connect to eVOLVER tubing

    See here for more information and construction protocols.

    Emergency Efflux

    Protect your eVOLVER hardware with a sealed vial and additional efflux line dedicated to preventing vial overflows.

    Guide here.

    Bubbling

    Many organisms require additional gas exchange outside of what eVOLVER stirring can provide. Others require custom gas mixes for growth. In-vial bubblers provide this.

    Guide here. Please cite Daniel Hart's paper when it comes out!

    Stop Stir While Taking OD

    This is a measure that is necessary if you are bubbling, but can improve OD in general by decreasing noise.

    To do this, swap in a conf.yml with stir stopped for OD reads. Example conf.yml here.

    You will need to calibrate OD with stir off.

    1. It is recommended to switch to the normal conf.yml with 20 second broadcast_timing for calibration to receive data more quickly. During experiment, switch back to the stir stopping conf.yml

    2. Swirl the vials when moving standards to make sure cells do not settle.

    Router IP: 192.168.1.1

    Login: admin

    pw: password

    Forum post
    if you have issues with installation.

    DPU Installation

    Electron App (GUI) Installation

    forum
    Useful Links

    Forum for asking questions, posting guides, and discussing eVOLVER related topics.

    Nature Biotechnology Paper

    Nature Biotechnology Supplement

    JoVE Paper - Visual protocol for running an eVOLVER continuous culture experiment.

    Software Repositories

    Server (RPi) Code Repository

    Data Processing Unit (DPU) Code Repository

    Arduino Code Repository

    Electron GUI Code Repository - Graphical UI for interacting with the eVOLVER platform

    Hardware Repositories

    eVOLVER Hardware Repository - eVOLVER Hardware (PCB, 3D printed parts)

    forum

    For more information see here.

    Procedure

    Calibrations should proceed in the following order:

    1. Temperature Calibration

    2. Optical Density Calibration

    3. Pump Calibration

    If the GUI fails to calibrate you can try to use calibrate.py manually.

    Software Installation
    Network Configuration

    300 mL of saturated culture of desired organism

    • If calibrating to ODs above 1.5, you may need more cells

  • 300 mL of 1X PBS (Phosphage Buffered Saline)

  • Resuspend well in 50mL 1X PBS

  • Measure OD of dilutions and a 1X PBS blank

    1. It is recommended to use 300uL of dilution if using plate reader to provide a similar read length to the cuvette

    2. Use absorbance at 600nm for most bacteria and yeast

  • If the measured OD of the lowest dilution is above 0.5, make further dilutions to bring it below 0.5

  • Use a dilution that is roughly between 0.1 and 0.5
  • Calculate and make OD standards

    1. Optional: alter the series of standards to include more ODs in the range you care about

    2. Get 16 vials and add a stir bar to each

    3. Add calculated amount of 1X PBS and cell stock to each vial

    4. Mix by swirling or putting in eVOLVER with stirring on

  • An example calculation, including the 1X PBS blank is included at the bottom of the spreadsheet
  • Adjust standards if necessary

  • Cap vials containing standards and place in eVOLVER to equilibrate to temperature while stirring

    1. Keep track of which vial is which OD

    2. This may take >30 minutes

    3. Each vial is labelled with its latest temperature in the SETUP page of the GUI

  • You can input the OD values using the keyboard, then hit enter to increase the vial selected.
  • Click Start OD Calibration ▷.

  • Click the pen button to submit and save the calibration. Then click Exit after the calibration is logged.

  • To validate the calibration was logged on the eVOLVER, from the touch screen home tap Setup and then tap the box next to OD: and a list of calibrations should come up. Select your recent one from the list. If not present, it was not logged to the eVOLVER.

  • light blocker / splash guard
    OD troubleshooting
    set all vials
    this
    starting an experiment
    Updating the eVOLVER Server
    enable
    Located in /dpu/calibration/.

    Requirements

    1. You have run calibration and logged raw values already

    2. You are in your DPU virtual environment in command line. This is set up when you install the DPU.

    Commands

    List raw calibration files on the eVOLVER

    Mac

    For Windows, use py instead of python for all commands.

    Calibrate Temperature

    Calibrate OD

    OD135

    OD90 (Check to ensure mode is configured properly)

    3D FIT (Check to ensure mode is configured properly)

    cd ~/usr/bin
    evolver
    python3 calibration/calibrate.py -a <ip_address> -g
    python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t linear -f <name_after_fit> -p temp
    python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t sigmoid -f <name_after_fit> -p od_135
    python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t sigmoid -f <name_after_fit> -p od_90
    python3 calibration/calibrate.py -a <ip_address> -n <file_name> -t 3d -f <name_after_fit> -p od_90,od_135
    
    16 Smart Sleeves
  • 2x Pump Arrays (total 32 pumps)

  • Fluidic Box to for control of 32 Pumps (can expand to 48 w/ additional hardware)

  • 1) First Unboxing the System

    There are several components with protective foam. Insure all the components were delivered intact.

    If your smart sleeves were delivered unassembled use this assembly guide.

    16 Smart Sleeves and a Box of Accessories

    Pump Array and Fluidics Box

    Vial Platform

    2) Set up power and ethernet for the vial platform

    The Vial Platform is the unit on which all the Smart Sleeves will be screwed onto. This system contains the eVOLVER Motherboard, Raspberry Pi, and Power Modules that control the Smart Sleeves. Parts used to setup the Vial Platform should be labeled with a black dot.

    Contents of the Vial Platform Components Bag:

    First, plug in Power and the Ethernet Connection to the system and ensure all the components turn ON properly (e.g. the touch screen turns ON). For more information on how to configure the router, please read the tutorial on router setup.

    The Ethernet should plug into your router, more information about assigning a static IP in this tutorial.

    3) Plug in and screw on Smart Sleeves

    If the system turns ON properly, turn off the eVOLVER and start fastening the Smart Sleeves. Use the 4-40 screws to fasten down each Smart Sleeve (2 screws/ sleeve). Vial 0 is in the front left (closest to the touch screen) with vials 1, 2, and 3 on the right of vial 0, in that order. Vial 15 is in the back right (farthest from the touch screen).

    4) Setup pump rack

    The Fluidics Platform is a separate module than the Vial Platform, typically is placed next to the Vial Platform. For this next part, we are setting up a pump rack that goes on top of the Fluidics Platform.

    First we want to set up the components for the pump rack. The parts for this is located in the Fluidic Box Components Bag (Red Dot).

    We want to fasten (w/ M6 screws) in aluminum extrusion into 3D printed part for the front pieces first. The front piece are the ones with the longer feet. See below:

    Next, insert back piece. Make sure the two feet are offset in the same direction. Do not screw the screws in yet. We will screw those in when we mount everything together with the acrylic piece.

    Repeat for the other side.

    Next, line up the acrylic piece to the back holes and fasten together with M6 screws.

    Screw in 10-32 screws to the feet of the mounts to fasten the pump rack on top of the Fluidics Box. Repeat to fasten all four mounts

    5) Plug in Power + Communications to Fluidics Platform

    Next, let’s setup the fluidics box. The fluidic box requires several connections:

    • Two Power Entry Cables (one for 12V Power, other for 5V)

    • Serial Communication Cable (To communicate with Raspberry Pi in Vial Platform)

    Power the 5V power in the Fluidic Box from the USB port of the Raspberry Pi.

    Connect Serial Communication Cable between the Vial Platform and the Fluidics Platform.

    6) Attach Pump Arrays to the Fluidics Box

    The fluidic box is meant to be flexible, to power whatever fluidic components you want. The standard setup assumes the following setup (back of fluidics box):

    Attach ribbon cables to the appropriate slots on the PCB the pumps are mounted on.

    Top down view of ribbon cable connections.

    Finally, attach the tubing to the appropriate pumps.

    7) Label Smart Sleeves with Appropriate Label

    Labeling the vials with the appropriate color coded labels help minimize human error (I just print it and tape it on the vial). You can download a PDF of the file here 17. The front left position (row closest to touchscreen) is vial 0.

    forum
    (Optional) You can fill 10% of the carboy with bleach
    1. Or bleach after depending on whether you hate the smell bleach or your culture more

  • (Optional) Shrink heat shrink tubing onto the waste lines to make them easier to deal with

  • (Optional) Drill a hole through the carboy cap to make the opening to the carboy smaller (less smelly)

  • (Optional) Parafilm the opening to the carboy to make it less smelly

  • If you intend to leave overnight or for a weekend, make sure that the carboy has more than enough room in it for the maximum volume you will efflux. Consider using two carboys.

    Waste carboy with black heat shrink over the waste lines and hole in carboy cap.
    Why are temperature calibrations important?

    Each microorganism has its own culture temperature requirement. Temperature may affect the successful cultivation and growth characteristics of the culture. By using a simple thermistor and heating resistor pair, we can track and change the culture temperature over time.

    Why is calibration necessary?

    Readings sent from the Raspberry Pi to the computer/server are the raw thermistor values measured by the Arduino. To make sense of the readings in terms of values we understand, we need a calibration file that converts this to degrees (celsius).

    Do I need to redo temperature calibration if I switch out a thermistor/resistor pair?

    Yes. Variability exists across the individual thermistor and heating resistor elements, necessitating a new temperature calibration anytime one of these parts are replaced. This is why the calibration curve is unique to each smart sleeve.

    Materials

    • 16 eVOLVER vials filled with 15mL water

      • Glass vials - 40mL (Chemglass, CG-4902-08)

    • Thermometer with probes

      • Do not use a thermocouple-based thermometer, as the magnetic field from the stir components can interfere with measurements

      • We use the ""

    • eVOLVER Electron GUI

      • This tutorial is for the newest version of the eVOLVER Electron App (Release 2.0.1), which enables both data visualization between each temperature calibration step (RT -> +10C -> +20C), as well as GUI-enabled calibration (without use of the command line).

      • For older versions of the Electron GUI (Release v1.2.1 and earlier), additional notes are provided at the bottom to successfully complete the calibration - the process remains largely the same, apart from the use of the command line to complete the calibration.

    • eVOLVER

    Methods

    Temperature Equilibrium

    Generally, there are two independent methods to determine if the vial water has reached temperature equilibrium.

    1. Place the thermometer probes into the water, clear the "Min/Max" readings, and wait until the reads no longer fluctuates within ~2min of monitoring.

    2. The eVOLVER Electron GUI has an in-built function that displays the change in thermistor value from the last read, shown as a (+/-) value in brackets next to the current thermistor value being read. The GUI uses this information to determine whether the vials have equilibrated across time, shown as an orange circle indicator around each vial circle on the GUI that should turn fully orange upon equilibration.

      • Importantly, sometimes the vials will not display the achievement of equilibrium correctly. Please use your discretion with respect to the time elapsed under heat, lack of temperature fluctuations, similarity of temperature measured by thermometer across vials, and the GUI equilibrium function to determine when equilibrium has been reached.

    • Turn on the eVOLVER 5V power supply. Wait 5 seconds. Turn on the eVOLVER 12V power supply.

    • Open up the eVOLVER Electron GUI app, and ensure you are connected to the correct eVOLVER you wish to calibrate in the upper-right hand corner of the "Home Screen". The circle should be solid green, indicating that the eVOLVER is connected.

    • Tap "Setup" in the GUI home screen, select all vials by tapping "Select All" in the bottom right corner. The vial circles should highlight orange. Tap the "Next ->" button in the upper right-hand box (which includes all the control parameters) until you reach the "Temperature" tab. Drag the slider all the way down to "20C". Tap the button, and the "Executed Commands" box in the lower right should indicate that a temp command was sent to all vials.

    • Place all the eVOLVER vials, pre-filled with 15mL of water, into the Smart Sleeves.

    • Go back to the "Home Screen", click "Calibrations" and then "Temp" in the eVOLVER Electron App.

    • Name the calibration, hit enter, and then click "Start Temperature Calibration". A prompt will read "Heaters turned off. Let equilibrate, then enter values."

    • Room Temperature: Wait ~30 minutes for the temperature of the water to equilibrate to ambient room temperature (and heat generated by the eVOLVER).

    • Once equilibrated, measure the temperature of each vial with the thermometer probe and log the temperature measurements in Celsius in the Electron GUI.

    • Press the "RT ▶️" button and wait for the eVOLVER to measure the thermistor values (the eVOLVER measures the thermistor values continuously for a minute, with an orange ring appearing around the ▶️ button. Once complete, the GUI should display "1/3 Measurements made"

    The newest version of the eVOLVER Electron App (Release 2.0.1) enables data visualization between each temperature calibration step (RT -> +10C -> +20C). This is especially useful when verifying that the thermistor reads are as expected, and follows an inverse linear relationship between thermistor value and temperature.

    Real-time temperature calibration data visualization on the eVOLVER GUI interface
    • Room Temperature +10C: Once complete, click the " +10C ->" button, and then click the "RT +10C ▶️". The GUI should display "Temperature set. Let equilibrate, then enter values."

    • Wait 60-120 minutes for the temperature of the water to equilibrate. Use the system outlined in the section "Temperature Equilibrium" to establish when the temperature has equilibrated.

    • Once equilibrated, measure the temperature of each vial with the thermometer probe and log the temperature measurements in Celsius in the Electron GUI. Press the "RT +10C ▶️" button and wait for the eVOLVER to measure the thermistor values. Once complete, the GUI should display "2/3 measurements made"

    • Room Temperature +20C: Once complete, click the " +20C ->" button, and then click the "RT +20C ▶️". The GUI should display "Temperature set. Let equilibrate, then enter values."

    • Wait ~2-3hrs, or leave overnight.

    • Once equilibrated, measure the temperature of each vial with the thermometer probe and log the temperature measurements in Celsius in the Electron GUI. Press the "RT +20C ▶️" button and wait for the eVOLVER to measure the thermistor values. Once complete, the GUI should display "3/3 measurements made"

    • Calibrate: An edit icon button should appear once all 3 measurements have been made. Click on the button, and a graph of the linear calibration curves for all thermistors across the smart sleeves should appear. Please confirm that the curves look linear. If everything looks good, please exit out of the graph (press the backwards arrow twice), and voila! You have completed your Temperature Calibration! Please be sure to change the temperature calibration file to the most recent in the eVOLVER set-up menu (click on the temperature calibration button).

    Example image of a successful temperature calibration

    IF In-GUI Calibration Fails (Unexpected Javascript/Python Error)

    If after clicking on the "Edit" button upon completion of all 3 measurements, the eVOLVER GUI encounters an unexpected Javascript/Python error, do not fret! The raw calibration data is now saved on the Raspberry Pi, so you just need to continue along to the info note below to run the calibration through the command line. Feel free to exit the calibration at this point - your collected data is safe.

    For older versions of the eVOLVER electron GUI (Release v1.2.1 and earlier)

    If you are using an older version of the eVOLVER electron GUI (< v2.0.0), an additional step on the command line/terminal is required to linearly fit the acquired calibration data and set-up the temperature calibration. Additionally, there have been instances where unexpected code errors arise, necessitating calibration through command line. You can also still manually run a calibration if you would like to change calibration settings.

    Open up a terminal, and navigate to the eVOLVER dpu folder (github link for download). List the raw calibration files on the eVOLVER Pi using:

    For Windows, use py instead of python for all commands.

    Now that you have the name of the temperature calibration file, manually run the calibration file:

    A figure will pop up displaying the linear temperature calibration curves for each vial. If all looks good (inverse linear relationship between thermistor and temperature values - please see above figure for an example of a successful temperature calibration), then exit out of the figure. A prompt on the command line will ask if you would like to update the eVOLVER to the new temperature calibration. Press and enter "y", and voila, you are all done with temperature calibration.

    Preparing Vials

    Construct, print, or source vials caps before starting this protocol

    Protocol

    Make 1-2 extra vials, in case you find an issue after autoclaving. If using septa, it may be best to make 4-5 extra as many septa will be pulled inside of vial by autoclave pressures.

    1. Rinse vial lids by running DI water from sink through influx and efflux straws (2-3 seconds). Alternatively fill a large beaker with DI water, dump vial lids in and stir.

    2. Shake vials caps to remove excess water and set aside on a clean surface

    3. Get out enough dishwashed vials (stored upside down), place in white rack

    4. Place a small stirbar in each vial

    Carboy Media Prep

    Considerations while preparing large volumes of media for continuous culture in 20L carboys.

    Materials

    Nalgene 20L carboy

    Nalgene fitting/venting closure

    Media Requirements

    A primary consideration when running eVOLVER experiments is predicting the media consumption rate, which is typically orders of magnitude higher than in typical batch experiments. The required media for continuous culture can be estimated using the following equation: 𝑀𝑒𝑑𝑖𝑎 𝑅𝑒𝑞𝑢𝑖𝑟𝑒𝑑 [𝑚𝐿] = 𝐶𝑢𝑙𝑡𝑢𝑟𝑒 𝑉𝑜𝑙𝑢𝑚𝑒 [𝑚𝐿] / 𝐴𝑣𝑔. 𝐷𝑜𝑢𝑏𝑙𝑖𝑛𝑔 𝑇𝑖𝑚𝑒 [ℎ] ∗ 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓𝐶𝑢𝑙𝑡𝑢𝑟𝑒𝑠 ∗ 𝐷𝑢𝑟𝑎𝑡𝑖𝑜𝑛 [ℎ] (1) It should be noted that additional media (~20mL) is needed during device setup to flush media input lines.

    Protocol

    20L of media will take a significant amount of time to cool. It's best to autoclave your media the day before you want to use it for an experiment.

    1. Before preparing media, steam clean the carboy by filling with ~2L of water and autoclaving on the liquids cycle for at least 45 minutes. Be sure to keep the lid loose to prevent the carboy from collapsing. Pour out the water.

    If the carboy does collapse, you can take the lid off and place it back into the autoclave for 30m-1h. The residual heat should allow it to pop back.

    2. If you are able to prepare a concentrate of your media, you can do so as a 10x 2L solution (or whatever makes sense for your media) in a beaker with a stir bar. It is also possible to mix everything directly in the carboy. Add your media components in small batches and try to mix as you go.

    3. Fill the carboy up to 20L - volume of media components that will be supplied after the autoclave step. For example, if you need your media to be 2% glucose, you should fill the carboy to 18L and then add 1L of filter sterilized 40% glucose after autoclaving.

    4. Place a male Luer cap on the outlet of the carboy lid. Place a filter on the inlet, and cover it with foil. Loosen the entire lid.

    You do not necessarily need a filter on the inlet - this depends on the context of your experiment. For most applications, capping the inlet and keeping the lid loose for the duration of the experiment is sufficient - the media should not become contaminated.

    5. Place the carboy into an autoclave bin, then place into an autoclave. Autoclave on the liquids cycle for 2 hours.

    6. Take the carboy out of the autoclave.

    WARNING: The carboy and media will be extremely hot, and there will be ~1L of hot media in the autoclave bin. Ask someone for help removing from the autoclave!

    Media will take a significant amount of time to cool (overnight) - be sure to take this into account before running an experiment with the media.

    7. If media components need to be added after autoclave (glucose, antibiotics, supplements, etc.) place the carboy on a cart and move next to a bench flame. Sterilize the area thoroughly with ethanol before quickly unscrewing the lid to make the additions. Mix by placing the carboy on a cart and moving the cart in a circular motion, or by placing on the floor, tilting ~30 degrees, and moving the top in a circular motion.

    8. You can place the autoclave on the floor next to your experiment. Be sure to keep the lid loose to prevent negative pressure buildup in the carboy which could prevent media from going into the culture vessels.

    9. After the carboy is empty, rinse thoroughly with water, being sure to run water through all of the tubing. Steam clean as described in step 1, then pour out the remaining liquid.

    Relevant Forum Posts

    Command Line Start Guide

    If you are new to command line / bash, you can start !

    Overview

    Reasons you might use command line experiment start:

    python calibration/calibrate.py -a <ip_address> -g
  • If using septa, place a septa on each

  • Screw on rinsed vial lids

  • If vials will be used within 24 hours of prepping, then place white rack in small autoclave bin, cover entire bin with foil (reuse foil if possible), and autoclave on vacuum cycle for 10 minutes

  • Keep foil on bin until right before loading vials into eVOLVER to maintain sterility

  • If vials are being prepped in advance, screw a white or black mini-cap onto every straw, then autoclave in bin without foil

  • Keep mini-caps on until right before loading vials into eVOLVER to maintain sterility

  • About the volume of required media
    Making Media Bottles and Media Splitters
    Fisherbrand™ Traceable™ Excursion-Trac™ Datalogging Thermometers
    python calibration/calibrate.py -a <ip_address> -n <file_name> -t linear -f <name_after_fit> -p temp

    Doing a custom experiment

  • Unable to install GUI or getting errors you aren't able to fix easily (post on the forum first)

  • Protocol

    Set your computer to never fall asleep to prevent experiments from being halted.

    1. In a command line window, enter the dpu virtual environment.

      1. Navigate to the DPU directory

        • Use this command: cd <path_to_dpu>

      2. Enter the command:

        • On Mac OS:

          • source dpu-env/bin/activate

        • On Windows PowerShell:

    2. Navigate to your experiment folder

      1. This should be in dpu/experiment

    3. Copy the template folder and rename it for each experiment

      1. Navigate into your new experiment folder

    4. Alter settings in custom_script.py

      1. EVOLVER_PORT = set correct IP of the eVOLVER

      2. Set initial temp and stir settings

    5. Start the experiment using the command:

      1. python3 eVOLVER.py -i <your_evolver's_IP_address>

      2. python3 eVOLVER.py -i 192.168.1.9

      1. Temperature should be fully equilibrated before this

      2. DO NOT add cells before blanking, whatever OD value the cells + media have will be subtracted from future measurements

    6. Stop the experiment using the keyboard shortcut control+C

      1. One control+C pauses the experiment from recording data

      2. Two control+C stops the experiment

    7. To change parameters mid-experiment or restart from blank data files:

      1. Stop the experiment fully

      2. Change parameters in custom_script.py

    8. You can run experiments on more than one eVOLVER at a time

      1. Create a new experiment folder (different custom_script.py) and change IP

      2. Follow this procedure in an additional command line window

    You can graph your experiment using the graphing tool here.

    Ending an Experiment

    1. Clean up the experiment

    2. Data is in the data files

    here

    Loading Vials and Setting Initial Conditions

    1. For the next few steps, it is recommended to spray your gloves with 70% ethanol.

    2. Partially insert autoclaved vials into the eVOLVER Smart Sleeves such that efflux straw is entirely visible, if possible.

    3. Start by attaching input lines (clear) to the short influx straw, avoid touching the tips of the lines to avoid contaminating the inside.

    Sterilizing Lines

    Protocol

    1. In three large beakers, prepare 500 mL of 10% bleach, 200 mL of 10% bleach and 300 mL 70% ethanol.

    2. Using the switches on the eVOLVER device, turn on the 5 V power supply on the eVOLVER, wait for >3 seconds, then turn on the 12 V power supply.

    Starting an Experiment

    List of things to do to setup and run an eVOLVER experiment.

    For a video guide and full written protocol for setting up an eVOLVER experiment, check out the 2019 JoVE . Note that some information there, such as using the GUI, is out of date.

    Checklist

    GUI Start Guide

    Guide for using the eVOLVER GUI to start and manage an experiment

    You should be able to follow the 2019 JoVE for most of the process. Differences will be highlighted here.

    Running experiments with Dropbox/Google Drive

    If you would like your data to be automatically backed up on Dropbox or Google Drive, first install the desktop applications. This will enable any computer with Dropbox/Google Drive and access to the directory to monitor the experiment using the eVOLVER GUI in real-time, while providing all the benefits of using these services (automatic backup of data, ease of data sharing, etc).

    We recommend saving your experiments through Dropbox or Google Drive, but you do not have to - it's fine to have everything run locally on your lab computer. Both options will be detailed in the

    Cleaning Up After Experiment

    Bleach (sodium hypochlorite) may create a small amount of chloroform when mixed with ethanol. In addition, many EHS policies prohibit mixing of ethanol and bleach waste streams. Considering this, you may want to move your efflux lines to a separate waste container when sterilizing tubing with ethanol, and move them back to your normal waste container when starting your experiment. Also consider using alternative sterilization agents such as and detergent.

    Emergency Efflux

    Overview

    Purpose

    Long have we been plagued by vial overflows. Certainly, many were our fault when we pumped too much in during setup or made unscrupulous changes to code. However, not always! And the cost was always too high for the magnitude of the mistake. Testing vials, rebuilding, and recalibration took weeks of our time.

    Use the GUI to Control Parameters

    A guide for usage of the eVOLVER GUI to set parameters

    Before doing using the GUI, all and should be complete.

    Also, make sure to parameters before using them.

    Building a Smart Sleeve

    A guide for building Smart Sleeves on eVOLVER

    If you need additional aid or have questions about this process, feel free to ask on the !

    Chemostat

    Process and considerations for running a chemostat.

    Code Breakdown and Explanation of Flow Rates

    This section is assuming you already have gone through the , which outlines basic parts of the script, and lets one run an initial pilot experiment.

    Here, I will explain chemostat functionality. This is the segment where the chemostat function begins on

    Turbidostat

    Turbidostats are automated culturing systems used to maintain a constant cell density in microbial cultures.

    Algorithm

    1. OD is constantly monitored

    2. When OD goes above the an upper OD threshold

    OD Blank

    Why

    When we start an experiment, the script asks us whether we want to calibrate to blank.

    on vial position, vial opacity, media, environmental light conditions, temperature, and more.

    Therefore, we take the first OD measurement as a zero and subtract that out from every subsequent measurement.

    Growth Curve

    Process and considerations for running a growth curve.

    Why is running the growth curve algorithm a good first experiment?

    When setting up eVOLVER for the first time, we recommend performing a simple growth curve as a starting experiment. The growth curve algorithm functions similar to the turbidostat algorithm, except the feedback between any experimental parameters are turned OFF (or ). That way, you won't have to worry about any leaks or overflow issues from pumps misbehaving while testing the system.

    FAQs

    FAQs

    Q: Can the eVOLVER do very long-term growth experiments?

    A: Yes. Experiments with over a month of growth have been done. An example of a 250h experiment was reported in Supplemental Figure 14 of the 2018 NBT .

    Making media bottles and splitters

    For routing media from standard lab glassware

    Overview

    Note: The original calls for 5/32" barbs and 1/8" inner diameter tubing for use with media bottles and splitters. While this will work (with some effort) for soft silicone tubing, it does not work for more firm tubing or some barb styles. We advise that you always match the barb size rating to the tubing inner diameter; i.e. always use 1/8" barbs for 1/8" ID tubing, and 5/32" barbs for 5/32" ID tubing.

    Next, attach efflux lines (blue) to the long efflux straw. It is critical to check for loose connections or incorrectly routed lines. Failure to do so will cause overflows and potentially damage the Smart Sleeve.

  • In the setup menu in the electron app, run all pumps in 10 second intervals to fill the vials with media. Run enough media so that the efflux pumps start removing media through the efflux straws.

  • Visually inspect the culture volumes at this point. If the efflux straws do not appear to be functioning efficiently (media levels rise above the efflux straw), inspect the fluidic line connections and the peristaltic pump. Correct or replace parts as needed to prevent overflows.

  • Push vials down until fully encased by the Smart Sleeve. If aluminum sleeves are cut to different lengths, vials may appear to be covered in different amounts.

  • Be sure that the desired calibration files have been selected from the dropdown menu in the setup panel. These files are stored on the device itself, and will default to the most recently used calibration. Temperature and OD calibrations must be repeated if vials are replaced, and OD calibrations are recommended if switching to a new organism (i.e. bacteria vs yeast). Otherwise, calibrations can be used over and over again.

  • Set the initial conditions for experimental parameters using the eVOLVER electron app. This will be overwritten once the experiment code starts running, but can be helpful for preheating media or trying out different stir rates.

  • If stir bars are jumping around (audibly) then the stir rate may be too high for the volume of culture you are using. Commonly used values are between 8 and 12.

  • Relevant Forum Posts

    Recommendations for Septas and Needles?

    Using nylon caps to determine culture volumes

    Making vial caps w/ laser cutter and pipette tip

  • If running several vials from the same media bottle, connect multiple media input lines with tubing splitters. Custom tubing splitters can be constructed with Luer components.

  • Submerge the media input lines (clear, media in) in the first bleach beaker, and the media efflux lines (blue) in the second bleach beaker. Place the downstream end of the media input lines (clear, to vial) in the second beaker with the efflux lines. Since the lines may be different lengths, a hairclip is useful to keep the ends of each lines close to eachother in order to ensure all remain submerged.

  • Add 1 L bleach into large empty waste carboy, which will sterilize waste generated during experiment. Consult with a safety coordinator to ensure proper disposal of waste.

  • Using the switches on the eVOLVER device, turn on the 5 V power supply on the eVOLVER, wait for 5 seconds, then turn on the 12 V power supply.

  • If running several vials from the same media bottle, connect multiple media input lines with tubing splitters (drawer under eVOLVER computer) before sterilizing. Custom sizes can be made if necessary.

  • Submerge the media input lines in the first bleach beaker, and the media efflux lines in the second bleach beaker.

  • Place the downstream end of the media input lines in the second beaker with the efflux lines. Place waste lines into waste carboy.

  • Open the eVOLVER electron app, select the appropriate eVOLVER from the dropdown menu.

  • Navigate to setup, then fluidics. Highlight the appropriate vials, select the influx and the efflux pumps, and run pumps for 20 seconds to fill lines with 10% bleach.

  • While running, ensure by visual inspection that all lines have been filled and that pumps are operating normally. Allow bleach to sit in the lines for at least 30 minutes to sterilize. This is a good pause point, can wait up to overnight. This is a good time to make code edits if necessary.

  • Run pumps again using the touchscreen app until lines are no longer submerged, pushing air through the lines to get as much of the bleach out as possible.

  • Place media input lines in the ethanol beaker (or pour ethanol into the first beaker) and repeat as in above, filling the lines with ethanol and flushing with air. Note: ethanol sterilizes quickly, so no need to wait 30 mins here.

  • It is also recommended to dip the downstream ends of the influx lines in ethanol to rinse off residual bleach, then drape on side of beaker rather than resubmerging in the remaining bleach. Residual bleach can affect culture viability, though washing with ethanol and media should be sufficient.

  • Attach media input lines to the media bottles with the Luer connectors and run the pumps until the media fully runs through the lines (10-20 seconds, depending on tubing), flushing out any residual ethanol.

  • dpu-env\Scripts\Activate.ps1

    custom_script.py has basic settings for running chemostat and turbidostat experiments, but you can also customize. To learn more click here.
    Restart the experiment
    1. Continue to keep your data

      1. Overwrite to make new blank data files and throw away your old experiment. NOTE: you will lose your OD blank and will need to make a new one (a hassle if you have already inoculated with cells)

    Calibrate to blank
    Stopping Experiment and Bleaching
    1. In the GUI electron app or command line, click to stop your experiment.

    2. In large beakers, prepare 500mL of 10% bleach and 200 mL of 10% bleach.

    3. Disconnect media bottles and place lines into 10% bleach solution

    4. To use pumps to bleach the cultures, keep tubing connected, but move vials to a white eVOLVER rack. Prepare an additional 1L of 10% bleach and add to the media input beaker.

    5. Run 10% bleach through vials until final concentration in the vials reaches ~10% bleach (~60 seconds for 25mL volume). Disconnect influx and efflux lines from vials, set vials aside for 30 mins.

    6. To manually clean vials, disconnect influx and efflux lines and skip steps 39 and 40

    7. Submerge the disconnected influx and efflux lines in the 200mL bleach beaker, then run all pumps for 20 seconds to fill all lines with 10% bleach. Let sit for no less than 30 minutes, no more than 48 hours.

    8. Remove media input lines from bleach, and run air though the lines to remove bleach. If not planning on using the device again right away, run diH2O through all lines for 20 seconds to remove residual bleach from the lines. Dried bleach can form salt crystals and clog the lines. If this happens, break up the crystals manually using pliers to squeeze the line.

    9. Turn off the 12V power, then the 5V power.

    10. Proceed to vial & bottle cleaning protocol.

    Clean Vials After Bleaching Cultures

    1. Prepare a beaker ~50% full of 10% bleach

    2. Remove vial lids and place in 10% bleach solution

    3. Using the magnetic stir bar grabber, remove the stir bars from each vial, place in the 10% bleach solution

    4. Let vial caps and stir bars sit for 30 minutes-overnight in the 10% bleach solution

    5. Meanwhile, dump bleached culture down the drain, rinse with diH2O

    6. Use a test tube brush to scrub inside of vial, particularly important if you grew bacterial cultures

    7. Place bleached/scrubbed vials right-side-up in the vial racks to indicate they have not yet been dishwashed

    8. Once vial lids/stir bars have been soaked for sufficient time, carefully pour out the 10% bleach solution, and replace with diH2O

    9. Let vial lids and stir bars soak for another 30 mins-overnight.

    10. Once vial lids/stir bars have been soaked for sufficient time, carefully pour out the diH2O.

    11. Run diH2O through influx and efflux straws for 2-3 seconds at the sink to remove any residual bleach

    12. Place stir bars in the stir bar tray.

    13. Once 60+ vials have accumulated, vials should be dishwashed.

    14. Place vials open side up in 3 white eVOLVER racks.

    15. Take one rack, cover the vials using the wire mesh from the bottom rack of the dishwasher, then flip upside down. Repeat for the other two racks.

    16. Add any other glassware or eVOLVER bottles to the top rack as desired, then run on cycle 3.

    17. Store vials upside down in vial boxes to indicate that they have been dishwashed.

    Wescodyne
    BacDown
  • Temperature should be fully equilibrated before this

  • DO NOT add cells before blanking, whatever OD value the cells + media have will be subtracted from future OD measurements

  • Details

    OD blank is only applied to the calculated OD from calibration, not the raw OD data. The blank is applied for each vial, it just subtracts it out from subsequent measurements for that vial

    https://www.evolver.bio/t/where-or-how-is-od-blank-info-stored/182

    OD is dependent
    paper

    Calibrating IPPs

    Page under construction

    OD_data: The OD_data variable saved from the transformed values from the input_data variable. The data is transformed via calibration scripts called from eVOLVER.py.
  • start_OD: This variable determines if you want the culture to be above a certain OD before starting dilutions

  • start_time: This variable determines when the dilutions should start. If set to 0, the dilutions start immediately

  • OD_values_to_average: The script will average N recorded OD values before it triggers the dilution via the start_OD variable.

  • chemostat_vials: Modify this script to to turn off vials (e.g. pumps). There is a known bug on the rate definition that might not turn off the pumps there (see below).

  • The peristaltic pumps are fixed flow rates, does that mean I have to use different pumps for each flow rate setting?

    No, with the eVOLVER setup, we approximate continuous perfusion by frequent small boluses of media. By doing this, a faster pump can achieve tunable, slower net flow rates. In our experience, this compromise does not significantly impact the culture conditions of common laboratory microbes.

    Here is an example calculation one would make:

    • The culture volume is 30 mL/ vial.

    • The typical pumps eVOLVER comes with have a fixed flow rate of 0.5 - 1.0 mL/s. We typically recommend a minimum bolus of 0.5 mL per dilution, meaning 60 boluses would turnover the culture once.

      • FynchBio also sells slower pumps that flow at ~1 mL/ min

    • If we want our culture to double every 3 hours, the pumps will fire every 3 minutes (180 min/ 60 boluses). In a chemostat, nutrient is limiting thus growth rate == dilution rate.

    • A doubling time of 3hr has a growth rate of 0.231/hr via the following equation:

    Below, we set the script such that the cultures will all have a 3 hour doubling:

    If one wanted to set the V0-3 at a doubling time of 3 hours but the rest of the 14 vials with a doubling time of 6 hours, the rate_config would be set as the following:

    NOTE (5/12/2023): There is a bug that does not turn OFF pumps if defined to 0 on rate_config variable.

    Code for interfacing with eVOLVER GUI

    Below is code that grabs values from the GUI and populates it in the code. If you aren't using the GUI, please ignore this portion of the code:

    Rest of the Chemostat Configuration Settings

    The following parameters initialize variables that will calculate how much time to turn the pumps ON to maintain the flow rate set in rate_config

    • Bolus Size: The minimum volume that the pumps are allowed to turn on. Please take great caution in tuning this parameter. For example, the ~1 mL/s pumps are sensitive to the bolus size since 0.5 mL would mean the pumps are turning ON for only 0.5 seconds. Lower values could induce variability to the amount pumped. Note: Fynch Bio provides slower pumps that would require this bolus size to be tuned.

    • flow_rate: get the calibrated flow rates for each pump

    • period_config: how often to pump (seconds)

    • bolus_in_s: how long to pump during a given pump event (seconds)

    Chemostat Pump Commands

    When we set vials to a new flow rate in the chemostat function, we see the experiment script send a comma separated pump command. Each pump assigned to the a chemostat gets a command that looks like this:

    1.18|144

    Which is in the format of:

    bolus_in_s|period_config

    If the above pump was influx, its corresponding efflux pump would be 2.36|144 because we pump out double the time to avoid overflows.

    growth curve tutorial
    custom_script.py
    gr=ln(2)/doublingTimegr = ln(2)/doublingTimegr=ln(2)/doublingTime
    What parts of the setup does the algorithm test?

    The growth curve algorithm tests the following before running a more intensive experiment:

    • Continuous communication from the eVOLVER to the DPU (lab computer)

    • Power settings appropriately set on the lab computer (e.g. sleep settings)

    • OD calibration during an actively growing culture

    • Stirring stability

    • Detection of any noisy from ambient light

    • Temperature stability

    What the growth curve experiment does NOT test:

    • Pump actuation and calibrations

    • Media line setup and sterility

    Code Setup and Introduction

    There are just two scripts that you need to run eVOLVER (eVOLVER.py and custom_script.py).

    1. eVOLVER.py generally contains most of the infrastructural code to communicate with eVOLVER and interpret raw data coming from the system. Basic users should not need to modify this file.

    2. custom_script.py includes several basic functions (growth curve, chemostat, and turbidostat) but is where the user should customize/ write their own scripts.

    For those of you familiar with Python, I highly encourage reading through the scripts (>1000 lines of code) after this tutorial. Let's quickly walk through custom_script.py before we talk about any of the experimental setup.

    Importing libraries

    For those familiar with coding and Python, the first few lines in the script is for importing libraries and logging files.

    Initial settings

    The next part of the code goes through inital settings one would want the eVOLVER to start at. These are sent at the start of the experiment when the script is initiated. Please refer to our API for examples on how to modulate the settings mid experiment.

    There are initial three parameters in this eVOLVER script that defined: temperature, stir, and what mode this script will run.

    Each position in the array corresponds to the vial it is updating (e.g. first position is typically called via an index of 0 in Python and thus is updating vial 0). For example, if one would want to set the temperature for Vials 0 - 3 to 37C but the rest to 30C, the array would look like the following:

    If one wanted to run a turbidostat script instead of the growth curve script, one would replace the OPERATION_MODE variable:

    If you wrote a custom modality named "new_super_cool_script", you would define it as a function and call it in a similar way. For example:

    You would define it as the following:

    Making sure eVOLVER.py is run as main script

    Let's skip the turbidostat and chemostat scripts for now (for another lesson) and jump straight till the end of the script. The following is just to indicate that the user should not be running this script from the command line

    That's all the code you need to run the growth curve!

    eVOLVER Setup

    For this experiment, we will need:

    • Autoclaved vials (with stir bar and caps)

    • Sterile growth media

    Protocol:

    1. Fill autoclaved vials with 30 mL of sterile media and place in eVOLVER Smart Sleeves.

    2. Set the desired temperature for the eVOLVER (using the GUI) to preheat the vials

    3. Wait for ~30 minutes

    4. Start experiment using the Command Line Start Guide or GUI Start Guide

    5. Spike in cells (1 mL of saturated culture) and watch the OD spike on the traces.

    6. Let the cells grow until saturated.

    FAQ

    • OD traces are noisy in bursts of ~10 - 12 hours:

      • This is most likely noise from light during the working hours of the day. Try placing a box over the system to block out ambient light. If works better, than try making a shield for the eVOLVER

    • OD readings are really noisy/ don't make much sense:

      • Verify that the stir vortex is not interferring with the OD sensors. This might happen if low volume is used (~20 mL) or stir settings are too high. A good way to debug this is to turn off stirring manually (via 12 V switch) and see if the measurement is better. NOTE: Toggling 12V switch will turn off STIR and TEMP.

      • Switch out the LED and or photodiode

    • All measurements stop after a few hours:

      • Check computer power saving settings. Make sure the system does not go to sleep.

    deleted in the code
    def chemostat(eVOLVER, input_data, vials, elapsed_time):
        OD_data = input_data['transformed']['od']
    
        ##### USER DEFINED VARIABLES #####
        start_OD = [0] * 16 # ~OD600, set to 0 to start chemostate dilutions at any positive OD
        start_time = [0] * 16 #hours, set 0 to start immediately
        # Note that script uses AND logic, so both start time and start OD must be surpassed
    
        OD_values_to_average = 6  # Number of values to calculate the OD average
    
        chemostat_vials = vials #vials is all 16, can set to different range (ex. [0,1,2,3]) to only trigger tstat on those vials
        rate_config = [0.231] * 16 #to set all vials to the same value, creates 16-value list
        stir = [8] * 16
        #UNITS of 1/hr, NOT mL/hr, rate = flowrate/volume, so dilution rate ~ growth rate, set to 0 for unused vials
    rate_config = [0.231,0.231,0.231,0.231,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46]
    if eVOLVER.experiment_params is not None:
        rate_config = list(map(lambda x: x['rate'], eVOLVER.experiment_params['vial_configuration']))
        stir = list(map(lambda x: x['stir'], eVOLVER.experiment_params['vial_configuration']))s
        start_time= list(map(lambda x: x['startTime'], eVOLVER.experiment_params['vial_configuration']))
        start_OD= list(map(lambda x: x['startOD'], eVOLVER.experiment_params['vial_configuration']))
    #Tunable settings for bolus, etc. Unlikely to change between expts
    bolus = 0.5 #mL, can be changed with great caution, 0.2 is absolute minimum
    
    ##### End of Chemostat Settings #####
    
    flow_rate = eVOLVER.get_flow_rate() #read from calibration file
    period_config = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #initialize array
    bolus_in_s = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #initialize array
    
    #!/usr/bin/env python3
    
    import numpy as np
    import logging
    import os.path
    import time
    
    # logger setup
    logger = logging.getLogger(__name__)
    
    ##### USER DEFINED GENERAL SETTINGS #####
    
    # If using the GUI for data visualization, do not change EXP_NAME!
    # only change if you wish to have multiple data folders within a single
    # directory for a set of scripts
    EXP_NAME = 'data'
    
    # Port for the eVOLVER connection. You should not need to change this unless you have multiple applications on a single RPi.
    EVOLVER_PORT = 8081
    
    ##### Identify pump calibration files, define initial values for temperature, stirring, volume, power settings
    
    TEMP_INITIAL = [30] * 16 #degrees C, makes 16-value list
    #Alternatively enter 16-value list to set different values
    #TEMP_INITIAL = [30,30,30,30,32,32,32,32,34,34,34,34,36,36,36,36]
    
    STIR_INITIAL = [8] * 16 #try 8,10,12 etc; makes 16-value list
    #Alternatively enter 16-value list to set different values
    #STIR_INITIAL = [7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10]
    
    VOLUME =  25 #mL, determined by vial cap straw length
    OPERATION_MODE = 'growth_curve' #use to choose between 'turbidostat' and 'chemostat' functions
    # if using a different mode, name your function as the OPERATION_MODE variable
    
    ##### END OF USER DEFINED GENERAL SETTINGS #####
    TEMP_INITIAL = [37,37,37,37,30,30,30,30,30,30,30,30,30,30,30,30]
    OPERATION_MODE = 'turbidostat'
    def new_super_cool_script():
        print('hello world')
    OPERATION_MODE = 'new_super_cool_script'
    if __name__ == '__main__':
        print('Please run eVOLVER.py instead')
        logger.info('Please run eVOLVER.py instead')
        
    Before starting experiment prep:
    1. Finished Getting Started Page

    2. Calibrations

      1. Temperature (must be first, affects OD cals)

      2. OD

      3. Pump calibrations

    3. Should things not be as expected

    Sample Experimental Workflow

    Starting eVOLVER experiments takes hours and it is important to supervise your experiment for the first few hours. Therefore, front-loading as much prep work as possible to the days before the experiment is strongly recommended.

    Consider running a test experiment with just water or the wild type strain before you devote time to making everything perfect. If you are running an experiment with modified code this is especially essential.

    Day 0:

    Prepare media - especially if using a 20L carboy so it can cool overnight

    Prepare vials

    Sterilize fluidic lines

    Make sure vials / pumps are behaving as expected

    • Are all vials stirring, getting up to temperature, all pumps pumping, etc?

    • Especially check that efflux is running long enough to remove enough culture from vials

    Start overnight cultures

    Day 1:

    Load vials and set initial conditions

    Start experiment via GUI or Command Line

    Inoculate cultures into vials

    Monitor experiment for correct behavior (over several hours)

    • Are the cells growing?

    • Is the experiment diluting as expected?

    • Are all pumps working?

    Day 2 - Onwards:

    Monitor media levels - make sure that there is more than enough media to make it to the next time you check the experiment

    Monitor biofilming on the vials - this can cause increased OD over time

    If something goes wrong, check the Experiment Troubleshooting pages

    Finally, end the experiment and clean up

    Relevant Forum Posts

    Considerations for your first eVOLVER experiment

    paper
    section below.

    Setup

    Select the eVOLVER you wish to run an experiment on in the dropdown on the top right, then click the SETUP button.

    On left side of the screen, ensure the correct calibrations are selected for Temp, OD, and the pumps. Click the box to bring up a list of available calibrations for each parameter.

    Once you have selected the calibrations, you can set the initial stir and temperatures, and sterilize the fluidics as described in the JoVE paper.

    Experiment Manager

    The JoVE paper is out of date with regards to using the GUI for running and managing an experiment, from 3) Configuring eVOLVER Software and Programming Algorithmic Culture Routines on.

    Open the experiment manager on the Home screen of the GUI. You should see something that looks like this if this is the first time you have used the application:

    In the top center the Expt Directory is listed out. You can click the pen icon to change this location to be anywhere you like.

    If you have Dropbox or Google Drive installed, you can select a location on the cloud to save your experiments. This will enable you to view your data from any computer that has permissions and the Dropbox/Google Drive application installed!

    You do not need to make a new folder called experiments as shown below - the GUI will automatically create this directory.

    If you'd like your data to be backed up on Dropbox or Google Drive, set this location BEFORE starting the experiment. Otherwise you will have to manually move it later to view the data in the GUI remotely. You can always click the Default Expt Dir button to reset the location back, or set your own personal location.

    Click the New Experiment button to open a prompt to name your experiment. Type a name then click Submit.

    Click the Pen button on the row of the new experiment to bring up with experiment editor page.

    Experiment Editor

    By default, the Turbidostat editor will appear when you come to the editor page.

    1. The name of the experiment. You can click the pen icon to change the experiment name.

    2. The parameter selector. The name of the currently selected parameter is listed at the top. You can click the -/+ buttons to change the value (or use the slider), and then click the box in the middle to apply this value to the selected vials.

    3. Experiment control panel. From left to right: Start/Stop experiment, View Data, Save Files (Only for File Editor), Copy Experiment, View Files in File browser, Delete experiment.

    4. eVOLVER Selector. Select the eVOLVER to run the experiment on.

    5. Experiment type. Default will bring up the Turbidostat editor. Chemostat and growth rate editors are also available. You can also bring up the file editor to directly modify the python files within the GUI.

    6. Vial selector - select the vials and then apply desired experimental parameters from the buttons on the parameter selector. Values display the currently set parameters.

    7. Vial selector control buttons - flip the orientation on the display or select all of the vials.

    8. Reset - goes back to default. Save Experiment - saves the parameters for all vials.

    You MUST click Save Expt. to apply all the changes you made to the experiment!

    The chemostat and growth rate modules function similarly to the turbidostat one.

    Clicking File Editor in the experiment type dropdown will allow you to directly modify the python files.

    Do not change the EXP_NAME variable if you wish to use the GUI based graphing features! We keep this variable here for backwards compatibility with the previous graphing app. They will be normalized in a future version.

    You can select the file you would like to edit on the left, edit it on the right, and save by clicking the Save icon on the bottom left. For most cases you will not need to use this! If you change the files, you will not be able to use the t-stat/c-stat/growth rate modules, and you will need to modify the EVOLVER_IP, OPERATION_MODE, and other variables throughout the code.

    You can also click the folder icon on the bottom left to view the files in a file browser and edit them using an editor of your choice.

    Starting the experiment

    When you're ready to start the experiment, click the Play button either on the Experiment Manager page or the Experiment Editor page. Then you can click the graphs icon to go watch your experiment running in real-time.

    If GUI graphing is not working, use this graphing tool.

    When you navigate to the graphs page, the graphs will look fairly empty to start. After a minute or so, data will start to appear as it is collected. You can also click the VIEW LOGS button to see how the experiment is running.

    On the left, you can modify how the graphs are displayed by clicking the appropriate radio buttons. You can also look close up at an individual vial and use the data slider at the bottom of the graph to zoom in on an area of interest.

    When you click ALL to go back to seeing all vials, the range set on a single vial will be applied to all vials. You can click the radio buttons to set it back to the latest data.

    To end the experiment, click the STOP square button on the device running the experiment.

    If you are looking at the data on a different device than the experiment is being run on, you cannot control the experiment through the app! Do not click the play button!

    paper
    Experiment Manager
    No longer! We can seal our vials, so that even if we make a mistake* and pump too much, it will flow out through an emergency tube into a secondary receptacle.

    *Mistakes that cause overflows are the most common and most catastrophic

    How It Works

    1. Vials are sealed using O-ring, a plug for the sampling port, and caps with no air leaks

    2. One fluidic port in the cap has a line connected that goes to a secondary container

    3. If you pump too much fluid in or knock the vial over:

      1. Fluid follows the path of least resistance out into the secondary container

    A basic eVOLVER vial setup with emergency efflux. Top, red emergency efflux line; center, capped fluidic port; bottom, black rubber plug in sampling port.

    Parts

    1. Emergency efflux enabled vial cap

    2. O-ring - for air-tight fit of cap onto vial

    3. Rubber plug - for sealing sampling port

    4. Luer caps - for sealing unused vial cap ports

    5. Emergency efflux tubing (semi-clear is ideal)

    6. Connector -

    7. Sterile beaker or other container to drape efflux tubes into

    8. Glass vial

    Guide

    Construct emergency efflux tubing

    1. Place a capped vial in your eVOLVER as far away from your beaker as possible

    2. Cut tubing to a length that comfortably drapes into your beaker from your vial

    3. Use this tubing as a metric to cut tubing for the rest of your smart sleeves

    4. Make a few extra just in case

    5. Insert male luer locks into your tubing

    Additions to Experiment Setup

    1. Vial construction

      1. Put O-ring in the slot in underside of cap

      2. Put rubber stopper in sampling port

      3. Cap any unused ports

    2. Autoclave emergency efflux tubing in an aluminum foil pouch

    3. While setting up fluid lines during experimental setup:

      1. Attach emergency efflux lines onto unused port

    4. Drape ends of emergency efflux lines into sterile beaker

      1. You can use the beaker you used in sterilization of fluid lines, but make sure it no longer has bleach or any other fluid in it

      2. Tape lines in place, far from the bottom of the beaker

    Emergency efflux lines must be far away from the bottom of the beaker. Efflux pumping will suck air and any liquid in from the emergency efflux port.

    Also Refer to the JoVE paper for a video of using the GUI and the GUI Experiment Start Guide.

    Turn on the eVOLVER 5V power supply by flipping the associated switch. IMPORTANT: Wait for 5 seconds before turning on the 12V power supply.

    Ensure the correct eVOLVER is selected by consulting the upper right hand corner of the GUI. It will display the eVOLVER name (default is evolver-darwin), followed by the IP address in parentheses. This will be the IP address you assigned it when setting up the router connecting the DPU to the vial platform.

    If connected, the indicator dot next to the name should be green. If this dot is red, you may need to troubleshoot the eVOLVER vial platform connection to the DPU. Consult the eVOLVER DPU Installation and Networking Setup for details on setting up and troubleshooting this connection. Otherwise consult the forum or post a question.

    In the PARAMETER box, ensure the correct calibrations are selected for Temp, OD, and the pumps. Click the box for each to bring up a list of available calibrations for that parameter.

    Select all vials by tapping Select All in the bottom right corner of the screen. The vial circles on the right side of the display should become orange.

    You can also click and drag to select as many vials as you want.

    Tap the NEXT → on the box that says parameter to get to the Stir tab. Tap the - button or drag the slider to a Stir of 8. Press the Stir: 8 button to alter the stirring of all vials.

    Tap the NEXT → on the box that says parameter to get to theTemperature tab. Tap the - button or drag the slider until the middle button says 37.0 °C and tap the button. The EXECUTED COMMANDS box should state that a stir and then temp command was sent to all vials.

    Pumps

    Refer to the JoVE video for how to use pumps and sterilize fluidic lines

    Software Installation
    Network Configuration
    calibrate
    Background

    eVOLVER hardware is primarily divided between the Smart Sleeves and Motherboard. The Motherboard is where all the sensitive control hardware is, whereas the Smart Sleeve is nice modular way of integrating all the sensors to control your culture conditions.

    Goal

    The goal of this tutorial is to show how one can build an eVOLVER Smart Sleeve using commonly found tools and easily customizable parts.

    Time/Cost

    In this post, we are describing the Smart Sleeve built for continuous culture documented in our Nature Biotechnology paper. It typically takes 10 to 15 minutes for construction of this version of the Smart Sleeve with all the appropriate parts (e.g. soldered PCB, constructed aluminum tube). Raw materials cost roughly $40/ vial however cost for 3D printing, machining, and coloring (spray painting/ anodizing) parts vary due to accessibility to appropriate tools.

    That all sounds great, but I have never soldered or 3D printed before, how do I start?

    Here is a great introductory tutorial on soldering from our friends at Sparkfun. Also, you can easily outsource your 3D printed parts to be produced by folks at 3DHubs by uploading the appropriate STL file (if you’re a student, don’t forget the student discount!). Generally, building a Smart Sleeve is simple because we only use through hole components and screw terminals, so it is much easier to make than surface mount designs.

    How can I modify or change the design?

    We built our PCB designs on KiCAD, an open-sourced software for circuit board design, and our 3D models on Solidworks. Here is a schematic of the PCB here and the Solidworks part here. There are many other programs for vial board design, including a bunch of tutorials on Eagle from Sparkfun, another popular CAD tool for the open-source community.

    Does this tutorial include how to build the Motherboard?

    No. This tutorial only provides instructions on how to build a Smart Sleeve.

    Guide

    Use the below video to help if you are confused about any of the steps in this guide.

    1. Source parts

    • To assemble each Smart Sleeve, you will need all 16 components listed in Figure 1.

    • See here for part sourcing or order the Smart Sleeve unassembled from Fynch Bio

    Figure 1

    List of supplies needed (Figure 1):

    1. Aluminum Vial Sleeve Tube

    2. Thermistor

    3. 2x IR Photodiode

    4. IR LED

    5. 2x Stainless Steel Screws, 2.5" 4-40 Thread

    6. 2x Black pan head screws, 1/4" 2-56 Thread

    7. 1.5mm Flathead screwdriver

    8. Number 1 Phillips screwdriver

    9. Laser cut 1/8" Acrylic Fan Spacer with circular cutout

    10. Laser cut 1/8" Acrylic Fan Spacer

    11. Laser Cut 1/4" Acrylic Base

    12. 12V DC Computer Fan with 3D Printed Magnet Holder

    13. Vial Board PCB

    14. 3D Printed Tube Holder

    15. Lab Tape (Not Shown)

    16. Soldering Iron + Solder (Not Shown)

    2. Assemble Aluminum Tube and Vial Board

    1. Align the holes as shown in Figure 2

    2. Secure the two pieces together using a 1/4" black head screw (Figure 3)

    3. Repeat this process to align and secure the holes on the opposite side

    Figure 2
    Figure 3

    3. Tape Thermistor Onto Aluminum Vial Sleeve

    1. The thermistor has one side covered in plastic (with writing) and one exposed side (Figure 4). Ensure the exposed side faces the aluminum tube

    2. Thread the thermistor’s lead wires through the two holes on the PCB (Figure 5) and secure it in place using lab tape, as shown in Figures 6.1 and 6.2.

      1. The holes are labelled "Thermistor" on the top side of the PCB

      2. Tape the thermistor parallel to the length of the tube, about 0.5 cm away from the bottom of the tube. The leads should be exposed when slotted into the 3D printed part.

      3. Avoid allowing tape into the hole in the aluminum tube to the right of the thermistor

    3. The aluminum tube may need to be cleaned with alcohol if tape is not sticking

    Figure 4
    Figure 5
    Figure 6.1
    Figure 6.2

    4. Insert the Aluminum Tube into the 3D Printed Tube Holder

    1. Next, insert the black 3D-printed tube holder beneath the PCB (Figure 7), positioning the indented section over the thermistor

      1. All holes in the 3D-printed tube holder should align with the holes in the aluminum tube

      2. Avoid damaging the thermistor by twisting or rotating the parts.

    2. Secure all components using two 4-40 stainless steel screws (Figure 8).

      1. If the screws are not sliding into the holes, loosen the black screws that are securing the heaters to the aluminum tube. Make sure to tighten these after you get the stainless steel screws through

    Figure 7
    Figure 8

    5. Assemble Acrylic Parts and Fan

    1. Slide the solid acrylic fan spacer onto the 4-40 stainless steel screws, followed by the spacer with the circular cutout (Figure 9.1).

    2. Orient the fan according to the directional arrows shown in Figure 9.2 and slide it onto the screws

      1. The arrows are on the same side as the 16-pin ribbon cable connector that overhangs off of the vial PCB

    3. Coil the fan wires very tightly around the base of the Smart Sleeve and connect them to the right two ports of the screw terminal labeled “P2” (Figure 9.3)

      1. The red wire should be connected to the ‘+’ terminal and the black wire should be connected to the ‘-’ terminal

      2. It can help get the fan wires into the terminal to bend their tips

      3. This can be challenging, so it's okay if you have to rotate the fan 90 degrees to give more slack

    4. Finally, attach the acrylic base to the bottom of the Smart Sleeve (Figure 9.4) and secure the assembly by tightening the two 4-40 stainless steel screws.

    Figure 9.1
    Figure 9.2
    Figure 9.3
    Figure 9.4

    6. Connect the IR LED and IR Photodiodes

    1. Both the IR LED (clear) and the IR photodiodes (black) feature one long and one short lead (Figure 10.1). The long lead should be connected to the ‘+’ vial on the PCB, and the short lead to the ‘–’ vial (Figure 11.1).

    Figure 10
    Figure 11.1
    1. Connect the IR LED

      1. Connect the IR LED (clear) to the IR LED screw terminal ports on the PCB, using the following polarity:

        1. Long lead to the ‘+’ port and short lead to the ‘–’ port (Figure 11.2)

      2. Bend the sensor into the corresponding slot, which is an opening on the black 3D-printed part below the IR LED terminal (Figure 11.3)

      3. Using a screwdriver, firmly press the IR LED into the hole until it no longer moves

      4. Press the leads towards the 3D-printed part so that they are separate as shown in Figure 11.4.

    Figure 11.2
    Figure 11.3
    Figure 11.4
    1. Repeat the same process for both IR photodiodes (black), connecting each to the appropriate screw terminal ports labeled with “Spare A” and “PD135” (Figures 12 and 13)

      1. Again, make sure the long lead goes into the + terminal

    Figure 12
    Figure 13

    7. Solder the Thermistor

    Finally, solder the thermistor onto the PCB (Figure 14).

    Figure 14

    That’s it! You’re done.

    Following a similar framework for building the Smart Sleeves enables adding different parameters, adaptation to different vial sizes, and other creative eVOLVER applications! Have fun!

    Let us know if anything is unclear on the forum.

    Background
    Guide
    forum

    A dilution is calculated to bring OD to the lower threshold

    1. Dilutions are capped at 20 seconds to avoid vial overflow

  • Both influx and efflux pumps are run simultaneously for the calculated length

  • Efflux pumps are run extra to make sure volume stays constant

    1. The efflux straw sets volume

  • Turbidostat Dilution

    Pumps

    • Influx and efflux are both run at the same time

    • Like chemostat, vial volume is set by efflux straw height

      • Efflux is run extra time to make sure that enough volume is removed

    • Pumps run at roughly 0.75mL/second

    • Pump calibration is important for turbidostat otherwise dilutions will not hit the lower OD threshold accurately

    Dilution Calculation Example

    Dilution is calculated here in the code and is modeled as a mass balance equation

    Example Dilution

    time_in = -(np.log(lower_thresh[x]/average_OD) *VOLUME)/flow_rate[x]

    However, the mox dilution is 20 seconds to avoid overflow.

    Growth Rate

    Calculation

    Calculated in eVOLVER.py in this function and stored in your data folder during an experiment.

    When there is a turbidostat dilution, it fits a line to the log of the OD data since the last growth curve (ie last turbidostat dilution) time. The slope of that line is reported as the growth rate in 1/hr.

    Doubling Time

    Convert growth rate to doubling time (in hours) via ln(2)/growthrate.

    Growth Rate (1/hr)
    Doubling Time (hr)

    0.2

    3.47

    0.5

    1.39

    1.0

    0.69

    1.5

    0.46

    2.0

    0.35

    More Info

    See custom_script and the GUI start guide for information.

    While large carboys (autoclavable plastic jugs >10L) are useful for long-term experiments or particularly fast-growing bugs, the best typical media storage is standard Pyrex/Corning bottles, which range from 100 mL to 10 L. The 1-2L bottles are the most convenient size for media prep, short experiments, and experiments with many media types, so we'll be sharing the process for those bottles here.

    Per media bottle, you will need (see parts list, fluidics page):

    Parts:

    1 ft of 1/8" ID silicone tubing 2 Female luer-lock connector with 1/8" barb, polypropylene 1 Male luer-lock connector with 1/8" barb, polypropylene 1 Male luer cap Tools: Scissors/razor Drill gun 3/16" drill bit

    Step-by-step

    Assembled supplies and tools for media bottle

    First, drill a hole directly down through the cap. Be sure to have something safe to drill into on the other side. If having trouble with the 3/16 bit catching on the plastic, drill a pilot hole with a smaller bit.

    Drilling into the lid

    Next, push one of the barbed female luer connectors through the top of the cap, so the luer side is facing up.

    Luer connector and lid

    Next, cut two pieces of tubing. One is for the cap above, and can be as short as 3". Put the two remaining luer adapters (one male, one female) on this piece. This flexible piece makes it a little easier to connect lines to bottles. The other should be at least 9" so that it makes it from the barb on the cap all the way to the bottom of the bottle (for 1L bottles). Connect the longer piece of tubing to the barb poking through the bottom of the lid.

    Assembled cap

    The long straw should reach the bottom of the bottle and bend slightly. If it’s too long it will be annoying to screw the bottle cap on, and might get stuck against the wall. If it's too short, it won’t be able to reach media at the bottom of the bottle. Your bottles may vary: for 2L bottles, you need a 13" straw.

    Proper straw length

    Rinse out the straw with diH2O, and add a male luer cap to the top of the straw before autoclaving, and you’re good to go!

    Final assembly

    You can also make splitters with the same 1/8" tubing and corresponding luer-barb connectors and barbed T-connectors, allowing you to split one media bottle to multiple input lines. We usually sterilize the splitters using 10% bleach and ethanol (by connecting them before sterilizing all the lines when beginning an eVOLVER experiment), but everything shown here is autoclavable as well.

    Example 4:1 and 2:1 media line splitters.
    forum post
    average_OD = 1 # OD
    lower_threshold = 0.5 # OD
    VOLUME = 25 # mL
    flow_rate = 0.75 # mL/second
    time_in = -(np.log(0.5/1)*25)/0.75 = 23.1 # seconds
    eVOLVER Maintenance
    Vial Troubleshooting
    Male luer lock, 1/16" ID

    Troubleshooting Overview

    Summary

    The eVOLVER system is highly complex and it is easy to feel lost about what happened when something went wrong.

    For example, the behavior of optical density readings can vary widely and the underlying cause can be complex.

    Please look through these troubleshooting guides and the relevant documentation before posting to the forum about your problem. It could also be the case that your problem is a bug.

    Tips and Tricks

    Ways you might accidentally change the OD reading

    1. Moving vials once experiment has started

    2. Altering

    Constructing Millifluidics via SLA Printing

    Page under construction

    Contamination

    While batch culture techniques often utilize biosafety hoods or flame convection currents to keep workspaces sterile, these are rarely amenable for automated cell culture devices. Prevention of contamination in eVOLVER is achieved at three levels: 1) sterilization of media, culture vessels, and fluidic lines, 2) attention to sterile technique, and 3) physical and chemical barriers to contaminants. First, all media bottles and their adapters, and all components of the culture vessel (e.g. borosilicate glass vial, magnetic stir bar, cap with fluidic adapters) are designed to be autoclaved before each use. Fluidic lines on the device are sterilized before and after each experiment using bleach and ethanol (see Online Methods). Second, following sterilization, sterile technique should be practiced when attaching media lines to culture vials by working quickly, avoiding physical contact with the ends of fluidics lines, and taking care to spray gloves with ethanol. Finally, additional physical and chemical measures may be taken depending on the organism and experiment. For example, the sampling port may be covered by a sterile membrane for long-term culture. For slow-growing eukaryotic cultures, antibiotics can be added to the media to exclude bacterial contaminants. UV sterilization of components or surfaces is another preventative measure to consider.

    Vial Troubleshooting

    Tubing and Connector Blockage and Bursting

    Burst Tube at Barb Connection

    When there is an obstruction in the line, from dried media or biofilm, the peristaltic pumps can produce up to 45 psi of pressure, which is enough to exceed the barbed connector tolerance and burst barb connections. This is clearly undesirable, so if you find that one of your barb connections has burst, check the length of the line for obstructions. If it's an efflux line to the waste container (opaque), assume it has an obstruction.

    Obstructions

    For the pumps that we typically use for eVOLVER, 1/16" ID tubing does not resist flow in any appreciable amount. If a pump is not pulling liquid, it is likely blocked or obstructed.

    Unblocking With Syringe

    Biofilm obstructions can happen during long experiments with a biofilm-forming organism like E. coli - your best bet is to pause the experiment and bleach sterilize all lines before restarting. If your line is completely blocked, either replace the line or clear the obstruction by pushing water through the line with a 50 mL syringe (shown below).

    Unblocking by Soaking the Lines

    If the syringe method does not immediately work to clear the blockage, the blocked lines can be soaked in water for a few days to help rehydrate the dried media/biomass - the silicone tubing is quite permeable, so water can slowly enter the tubing and help loosen any dried blockage so that it can be flushed out with a syringe.

    Stuck luer-lok connectors

    Residual or leaked media on the ends of luer-lok connectors can dry and leave the connectors stuck. Rather than reach for a pair of plyers, soak the connection in hot water to dissolve the media. This can also help for any stubborn fluidic connection, and make tubing much more pliable.

    Arduino Software Installation

    Process for installing the Arduino IDE and necessary eVOLVER Arduino libraries.

    If you have any questions or hit a roadblock, check on the forum.

    1. Download the Arduino IDE

    should be fairly easy to navigate.

    Updating the eVOLVER Server

    Process for updating code on the eVOLVER Server (Raspberry Pi)

    If you have any questions or concerns not addressed here, reach out on .

    You can download the latest version of the code on our . If you do, skip step 3 below.

    Millifluidics Guides

    This is a page collecting guides for millifluidics. These do not come with the base eVOLVER and thus should done only by advanced users.

    For documentation and information about millifluidics see the .

    Constructing Laser Cut Millifluidics

    Page under construction

    Protocol

    Designing Millifluidics Using Eagle

    Page Under Construction

    Design

    Eagle

    Raspberry Pi Configuration

    Process for configuring a Raspberry Pi for eVOLVER

    Please see the infrastructure page for additional information on the RPi we use for the eVOLVER.

    Be sure to on the RPi after following this guide, or you will have issues communicating with the server through the DPU or with actuating/sensing connected components!

    - Recommended

    Change Your conf.yml File

    Overview

    Reasons you might want to do this:

    1. Changing - ie how often the s erver cycles

    View the Server Log and Restart Server

    About Server Logs

    We use to run and manage the logs for the . eVOLVERs should come pre-configured with this.

    We also provide a utility monitoring and restart script, evolvercron and server_monitor.sh. To use, add the crontab job line in evolvercron into your cron installation.

    Experiment Troubleshooting

    Miscellaneous

    "" after a very long term experiment

    - another alternative is to tape the switches on

    Optical Density (OD) Readings

    Overview

    Optical density (OD) is one of the most integral parts of continuous culture. While chemostats do not innately rely on OD, it is still a useful metric for your evolution. Meanwhile, turbidostats and growth curves heavily rely on OD to function.

    However, OD is the most easily disrupted parts of eVOLVER hardware. This guide serves as an initial list of things to check when troubleshooting OD.

    Operating Millifluidics

    Always use less than 10 psi inputs into the millifluidics and pressure regulator to avoid breaking them

    Never use ethanol to sterilize millifluidics as it breaks them. Use bleach to sterilize and flush it with sterile water.

    Heating Element

    Relevant Forum Posts

    Vial Overflow, Pump Failure, and Spills

    Vial overflow is one of the most common problems to plague eVOLVER experiments. Overflow events can cause damage to internal components such as the PCB motherboard, sensor actuator (SA) boards, power supplies, etc. If you experience overflow during an experiment, it is important to immediately stop the eVOLVER and evaluate potential causes of overflow, as well as any damage that the overflow may have caused.

    If you catch an overflow that happened recently (i.e. an overflow that happened overnight), the best thing you can do after stopping the experiment is turn off and unplug the eVOLVER, determine the extent of overflow spilling, and wash any components that have media on them. There are no components on the vial board or motherboard that retain significant charge (i.e. no batteries or large capacitors), so they are safe to wash gently in soap and water. Once clean, they should be dried quickly with a paper towel.

    The main reason for electronics failure after an overflow is current shorting through media (most microbial media is salty and conductive), or connections and copper corroding from media that has been left to dry. If you can clean off all the media immediately after an overflow, you will have a much better chance of saving electrical components, and saving yourself many headaches down the road.

    If you did not catch an overflow quickly, or a large amount of media spilled, follow the workflow below.

    Control Layer (1/4" acrylic)

    Cut outlines first

    • 0.1pt

    • 3 copies

    Keep full stock in place + outline on computer

    • Acts as a frame for the device

    • Remove board from stock with tweezers

    Add adhesive

    Put adhesive covered outline back in place on stock

    On the computer

    • Align control vector cuts (ports) to the outlines

    • Delete outlines

    • Print (3 copies for 1/4")

    Keep board in place

    Rastering control channel

    • Undo deletion of outline, delete previous vector cuts

    • Align raster outline to old outline + delete outline

    • Load control_channel 2 in advanced settings

      • 1200 dpi

      • Deep to get through adhesive

    • 1 copy => print

    Remove board + stock from laser cutter

    Flow Layer (1/8" acrylic)

    Cut adhesive sheet

    • Copy/paste in design with scooped out region around bridge

    • Cut adhesive out first

    • This way we don't have to move the acrylic stock later to put adhesive on the laser cutter

    • Check adhesive stickiness

        • Remove corner from adhesive

        • One side will stay attached to adhesive, one will remove cleanly

    • Put adhesive sheet on laser cutter, with side that easily removes down

    • Focus to adhesive

    • Vector cut Full speed + 80 - 90% power

    Cutting acrylic

    • Delete scoops, we just want the outlines

    • Print vector cut for outline

    • Refocus laser cutter to 1/8th inch + cut

    Plasma clean acrylic

    Put adhesive on

    Rastering acrylic

    • Place device back in stock on laser cutter

    • Copy/paste raster of flow route

    • Remove outline

    • Raster cut

    • While rastering, start tapping control board

    Assembly

    Tap control board

    • 2 turns one way, little turn the other way

    • Use a countersink to remove burrs around the holes

      • A couple of turns

      • Both sides of board

      • Allows silicone to sit flush + barbs to insert easily

    • Blow out small bits of acrylic from threading using air before plasma treating

    Remove backing from all acrylic (helps with alignment later)

    Silicone

    • Sam from Densmore lab bought a big roll

    • Some in drawer under cutting station

    • Cut larger size than device

    • Peal one side of silicone

    • Plasma treat 30 seconds

    Apply silicone to control board

    • Align and press onto control board

    • Take off plastic from other side of silicone

    • Wrap in paper towel

    • Put between aluminum plates in vice

    • Turn tight + one small more turn

    • Wait 10 minutes

    Punch holes in silicone

    • Use biopsy punch (green on shelf above 3D printers) to make holes silicone for flow

    • Don't need to do the control

    • Put pressure and turn

    Clean silicone + adhere to flow layer

    • Use piece of packing tape to remove dust

    • Plasma clean silicone 30 seconds

    • Align flow and control

      • Take special care to align IPP flow and control

      • Easier to align flow layer on top

    • Clamp full device in paper towel for 10 minutes

      • Avoid over tightening - this can overstretch the silicone layer

    Put loctite on barbs + screw in to board

    • Barbs are in Dan's drawer

    Subprotocols

    Laser Cutter

    Different colors of line produce different depth / intensity of cut

    • Use black for everything

    Make all lines hairline outline

    • Otherwise it won't cut!

    Open up a new page

    • Paste whatever you're cutting into this

    • This will be the correct size of bed

    Printing

    USB Bullshit

    • Open up printers / devices

    • Have to reconnect USB multiple times for it to be recognized

    1. Open up print

    2. Select correct printer you figured out

    3. Load the correct settings

    4. Set the correct copy number

      1. For millifluidics this is 2 for vector cutting (we have the double line problem)

      2. 1 for raster probably

    5. Press print

    On the Laser Cutter

    Make sure it's on / connected

    Focus first using metal thing attached to laser

    Run the job with lid open to double check it's doing what you hope

    Run the job

    Plasma Cleaning

    Plasma treat surfaces (except adhesive)

    • Take off one side of acrylic backing

    • Vacuum knob arrow left

    • Metal valve tight, then quarter turn loose

    • Pump on + power on to remove air 1 minute

    • Then switch on upper right knob to high

      • Acrylic = 1 minute treatment

      • Silicone = 30 seconds treatment

    • Turn off pump and power

    • Slowly open black knob and let vacuum fill

    Adhesive

    Adhesive is in a box above 3D printers

    Cut adhesive to larger size than acrylic

    • Remove adhesive backing and place face up on surface

    • Remove acrylic from plasma cleaner and firmly press clean side onto adhesive

    • Squeegee the bubbles out as much as you can (and away from where the channels will be)

    • Cut excess adhesive off with razor blade

    Using Eagle to drag and drop elements + make layers

  • Problem with Eagle

    • Only outputs dxf

    • We then have to trace as a png in illustrator

    • This creates a double line

    • Less accurate + goes over each area twice

  • Zack defines width of the pumps, but doesn't worry about depth

    Width of channel / valves

    • Too small = hard to align + valves will no longer stay closed

    • Larger is more robust

    Barb spacing

    • Want enough space between each barb for tool

    • Far enough from the edge

      • Prevent leaking from the port

    Troubleshooting Workflow for Overflow

    Inspecting internal components

    Overflowed media can enter into the vial platform through the ports that connect the Smart Vials to the motherboard. This can cause damage to the internal circuitry, which is should first be evaluated by visually inspecting the motherboard, SA boards, power supplies, and Raspberry Pi. Damage to any of these components can look like burned or melted spots or loose/broken connections. If you see visible damage to any of these parts, they will need to be fully replaced. See pages below for specific instructions on how to replace these various parts.

    Motherboard Troubleshooting/Replacement

    12V Power Supply Troubleshooting/Replacement

    Old evolver pumps (solid black plastic head)

    Pump is not actuating / spinning

    Relevant Forum Posts

    Pump failure and spill, lessons learned

    View Server Logs

    To understand what you see in the server log, take a look at the information here.

    1. Connect to your server via the following command (replace <eVOLVER_IP> with your eVOLVER's IP)

      1. ssh pi@<eVOLVER_IP>

    2. Enter the eVOLVER server's password

    [Option 1] View the server log live

    1. Enter the supervisor environment via the following command:

      1. sudo supervisorctl

    2. Use the following command to follow the eVOLVER server log:

      1. tail -f evolver

    3. Ctrl+C to exit

    [Option 2] View the whole server log file

    The server monitor stores the log file here: /var/log/supervisor/

    You can either view there or move it to your computer for more analysis

    Restart the eVOLVER Server

    1. If you are currently following the eVOLVER server in supervisorctl, use ctrl+C to exit. Otherwise, follow steps to view server log.

    2. Enter the following command:

      1. restart evolver

    3. If you quickly follow the server via tail -f evolver you should see it restart

    supervisor
    eVOLVER server
    Contamination
    Vial Overflow, Pump Failure, Spills
    Media Consumption Tracking
    No Buffer Space Available
    Accidentally turning the eVOLVER base off
    Heating element not working
    Using a syringe to clear blocked fluidics lines

    Replacing Photodiodes and LEDs

    Forum Guide

    Additional tip: if you see strange raw OD values after swapping out LEDs or photodiodes, it's possible you have the positive and negative ends switched.

    2. Install SAMD libraries

    The Sparkfun website has a very good blog on this. For more details, please refer to that link. The following is information copied from there.

    Navigate to your board manager ( Tools > Board > Boards Manager… ), then find an entry for Arduino SAMD Boards (32-bits ARM Cortex-M0+) . Select it, and install the latest version.

    3. Install the Sparkfun libraries for the SAMD21

    First, open your Arduino preferences ( File > Preferences ). Then find the Additional Board Manager URLs text box, and paste the below link in

    Then hit “OK”, and travel back to the Board Manager menu. You should (but probably won’t) be able to find a new entry for SparkFun SAMD Boards . If you don’t see it, close the board manager and open it again.

    4. Choose the correct BOARD and PORT to upload into

    1. Plug the SAMD21 into your computer via a data transfer micro-USB cable.

    2. The boards used in eVOLVER are the SAMD21 Mini boards.

    3. The port changes based on which USB the Arduino is connected to. The wrong port is typically the most common reason why the Arduino won’t upload.

      1. If you are unsure which port is the correct one, plug and unplug the SAMD21 board and see which port appears and disappears.

    Choosing the board:

    Selecting the SAMD21 Mini in the Board Manager out of available boards.

    Choosing the port:

    You should see the SAMD21 come up on the Ports list if it is plugged in.

    5. Download the Arduino scripts and copy eVOLVER libraries into Arduino folder

    1. Download the scripts from our Github Page

      1. Download by clicking "Code" and downloading as a zip file

    2. Extract the files from the zipped file

    3. Copy the into your local Arduino libraries folder

      1. For example, on my computer, it is under Documents > Arduino > libraries

    6. Upload script to Arduino!

    This should be all. Open up the files and upload your scripts to the microcontroller via microUSB! The program should tell you that it has uploaded successfully.

    A quick tip: there are many poorly designed microUSB cables out there (e.g. just for charging). Be careful to use one that you know works. If you can’t upload, try another cable. If it still fails, take a look at this guide.

    this post
    Their website
    Updating the RPi GUI

    1. SCP File to Pi

    On Mac: scp evolver-electron-2.0.0.AppImage pi@<your_evolver_ip>:.

    On Windows, use WinSCP or Filezilla to drag the file to /users/pi/home/

    2. Change Permissions to AppImage

    First, ssh to the Pi:

    ssh pi@<your_evolver_ip>

    Next, make the file executable using chmod:

    chmod +x evolver-electron-2.0.0.AppImage

    3. Change What AppImage the Pi uses at startup

    sudo nano /etc/xdg/openbox/autostart

    Scroll down and change the following line to correspond with the version you are using.

    4. Reboot the eVOLVER

    You can either power cycle (turn off the eVOLVER completely, wait a few seconds, then turn it back on) or you can use the following command:

    sudo reboot now

    Updating the eVOLVER Server Code

    Mac/UNIX

    Windows

    Mac/Unix

    1. Open up a terminal of your choice (I use iTerm2).

    2. Use the cd command to navigate to the eVOLVER server software.

    3. Use git to pull the latest version of the code. I have my own fork, so I need to pull the code from an upstream master branch. git pull origin master should work for most setups.

    4. I like to use the scp command to transfer the files over to the eVOLVER. scp stands for secure copy - it usesssh to transfer files between computers on a network. You can also use any GUI based tool - Filezilla is a popular one. I also normally only transfer the python files, and not the entire evolver directory. The server saves calibration files and other configurations which we don't want to modify by accident. To transfer only the relevant python files, run the following command:

    Replace the <eVOLVER_IP> text below with the actual eVOLVER IP.

    scp evolver/evolver/*.py pi@<eVOLVER_IP>:/home/pi/evolver/evolver

    5. Now that the files have been updated, the last step is to restart the server so the changes will take effect. ssh over to the evolver and run sudo supervisorctl. Then enter restart evolver, and you're done!

    Windows

    Follow steps 1-3 as described above.

    4. Use WinSCP or Filezilla to drag the .py files into the correct locations. Be careful not to overwrite other types of files.

    5. Most Windows 10 computers have a Windows 10 SSH client (such as OpenSSH Client) so you can log into the Raspberry Pi from Command Prompt in order to restart the server. Simply type ssh pi@<eVOLVER_IP> (replace <eVOLVER_IP> with your actual eVOLVER IP) and log in. From here you can run sudo supervisorctl as normal.

    this forum post
    GitHub release page
    Page under construction
    Figure 2C Wong. Nature Biotech, 2018 - Millifluidic multiplexing devices enable novel, customized liquid routing. Devices are fabricated by bonding a silicone membrane between two plastic layers with laser-etched flow channels. Integrated pneumatic valves actuate on the membrane to direct fluidic routing from media input to output ports (to or from vials).

    hardware page
    Using Raspberry Pi Imager

    1. Download the pre-configured eVOLVER RPi image here.

    2. Download and install the Rapberry Pi Imager Tool.

    3. Plug an 8GB micro-SD for the RPi into an adapter, then into a the computer.

    4. Click the Choose OS button, then scroll to the bottom and click Use Custom.

    5. In the popup at the dropdown at the bottom of the window, select All files(*.*). Then select the image file downloaded in Step 1.

    6. Click the Choose Storage button and select the SD Card.

    7. Click the Write button. A notification might appear warning about erasing all existing data on the card. Click Yes. If it asks for your computer password afterwards, enter it. It might take a while to finish (~40m).

    8. When it completes, you can plug the SD card into the RPi. You will need to update the server code and potentially the conf.yml with the latest code from GitHub.

    Using command line utilities (Mac/UNIX only)

    1. Download the pre-configured eVOLVER RPi image here.

    2. Plug the SD card into the computer.

    3. Open a terminal of your choice (I recommend iTerm2).

    4. Run the following command:

    diskutil list

    Identify the SD card name from this (it should be obvious). Next run:

    diskutil unmountdisk <diskname>

    where <diskname> is the name you identified from the previous command - it should look like

    /dev/disk3/ or something similar.

    5. Use the dd command to copy the image onto the SD card:

    sudo dd bs=4m if=<diskimage.img> of=<diskname>

    Be sure to change the two arguments above! if should point to the image you downloaded from step 1, and of should be the diskname.

    This command can take a while, and it doesn't show any status or progress updates - be patient. If it fails, try decreasing the bs argument to 1m instead of 4m - this will slow things down but will decrease the chance of failure. If you still have issues reach out on the forum.

    6. When it completes, you can plug the SD card into the RPi. You will need to update the server code and potentially the conf.yml with the latest code from GitHub.

    Backing Up Raspberry Pi (Make a Custom Image)

    Writing an image to save your full Raspberry Pi configuration.

    Useful to save time when reimaging your Raspberry Pi if you want to go back to your custom Python code and calibrations as quickly as possible.

    Follow this guide: https://www.tomshardware.com/how-to/back-up-raspberry-pi-as-disk-image

    Raspberry Pi
    update the server code
    RPi Imager Guide
    Command Line Guide (Mac/UNIX only)

    Adding an experimental parameter

    Guide

    [Optional] Before doing this, save the conf.yml file you are using, if you don't already have it saved. You can use the following command in a terminal window:

    scp pi@<your-IP-address>:/home/pi/evolver/evolver/conf.yml

    1. In a terminal, navigate to the folder in the server files containing the conf.yml file you want to change to

      1. For example if you want to change to the stir pause conf.yml:

        1. cd <your-directory>/evolver/alternate_conf_files/stir_pause_for_OD_reads

      2. For example if you want to change to the default conf.yml:

        1. cd <your-directory>/evolver/

    2. Copy over your new conf.yml file (overwriting the old one)

      1. Input the following command:

        1. scp conf.yml pi@<your-IP-address>:/home/pi/evolver/evolver/

      2. Input your eVOLVER server's password

    3. Restart your eVOLVER server

      1. Input the following command (replaced with your eVOLVER's IP)

        1. ssh pi@<your-IP-address>

      2. Input your eVOLVER server's password

    4. Check the server log files to see that it is cycling properly

      1. While still in supervisorctl, input:

        1. tail -f evolver

      2. More about the server log

    About the conf.yml file
    broadcast timing
    Disclaimer: You may find that you are still not getting "good" OD readings after trying solutions in this guide. We hope that you will search the forum because others may have had your same issue.

    After trying a fix, before attempting a whole new calibration, prepare a couple of standards in the OD range that you care about and check if you see a difference between them in the raw OD values (in the GUI Setup page or by starting an experiment and going to the data folder).

    For more in-depth information about the OD hardware see here.

    Most Common Problems

    Variability in OD Sensing Range Between Vials

    Vial 1 (left) shows a smaller range than vial 2 (right). However, vial 2 is still unable to accurately differentiate values under OD 0.5.
    1. Standardize LED/Photodiode distance

    2. If you already have a version of the 3D printed tube holder with defined OD LED and photodiode distances:

      1. Use the upgrade guide to double check your photodiodes and LEDs are correctly placed!

    3. Sometimes a given OD photodiode or LED can be variable as they are cheap parts. Swap both out for new ones. Part numbers here.

    4. Try

    5. Try different ADC resistor packs

      1. eVOLVERs come with a variety of these

      2. Ask on the forum for help

    6. Check that your vial construction is not variable

    Noisy OD Data

    1. Stir bars jumping around during OD readings

      1. Decrease stir speed

      2. Stop stirring during OD readings

    2. You are near the edge of your calibrated OD range

    3. is off enough to make your calibration fail

    Incorrect OD

    ie eVOLVER OD is offset from the cuvette or plate reader measured value.

    1. Bad OD blank

      1. Especially because you did not wait for temperatures of the vials to equilibriate

    2. Poor quality OD calibration

      1. You can check your OD calibration using the manual calibration script

      2. Different temperatures require different OD calibrations

    No Change in OD

    1. Photodiode or IR LED not working

      1. Replacement guide

      2. A failed photodiode will show a raw OD value close to 64,000

      3. A failed IR LED will most likely show a raw OD value much closer to your other vials

      4. Check that they have the long (positive) lead in the correct positive terminal

    2. ADC board or motherboard broken

      1. Can happen after vial overflow

      2. See motherboard and

    Other Considerations

    Pre-Calibration Considerations

    • LED to photodiode angle

    • od_led value in conf.yml file (PWM value)

    • Resistor pack value

    • Ambient light

      • Use the splash guard that comes with your eVOLVER

      • Or using black acrylic

      • You may need to recalibrate if you calibrated with ambient light

    Experiment Considerations

    • Photodiode Temperature - make sure temperature is equilibrated before calibration and before start of experiment

    • eVOLVER recently turned on - causes rapid change in values

    • Vial to Vial Sleeve Distance - Second Forum Post

    • Needles or other structures coming below 10mL line (close to OD PD etc)

    • Vial volume - a volume of 10mL will totally change OD compared to 30

    • Stirring with low vial volume - this will give noisy readings as the funnel created by stirring fluctuates and is more and less reflective

    Non-standard changes

    • Low (~10mL) culture volumes ONLY - readings are affected by stirring

    • Vial holder reflectiveness - ie white vs black vs metallic

    Set Up Pressure Regulator

    Plug in 5V power supply and 5V fan

    Changing Pressure Settings

    Option 1: Manually change via Arduino code (hard coded)

    • Follow the Arduino Software Installation guide

    • Unplug the SAMD21 from the pressure regulator before uploading code (otherwise there might not be enough power to the SAMD21 from the USB)

    • Upload modified pressure code to SAMD21

    Option 2: Add a 'pres' command to the evolver conf.yml and modify conf.yml

    Fluidic Lines

    Connect a 8-10 psi air input into the input port (only port on its own in 1.0 design)

    Connect regulated line to both sensor (below) and controlled output (white, above) as shown below:

    Set Up Solenoid Control

    Solenoid Bank Diagram (facing holes)

    • The solenoids should be normally open and connected to the 8 psi air source. ie Vacuum when closed

    • Left = 8 psi

    • Right = Vacuum

    • Middle = 8 different solenoids, groups of 3 are IPP controls

    Connect solenoid ribbon cable to slot 5 on the fluidics box

    Turn on eVOLVER server and fluidics box

    Check that the solenoid bank is correctly set

    Run ipp_cal.py on the server:

    • ssh to server

    • Use command:

      • python3 ipp_cal.py <frequency (hz)> <seconds to run>

      • For example: python3 ipp_cal.py 1 100

    Set Up IPPs

    IPPs need to be constructed and calibrated before use.

    It is recommended to calibrate using a pressurized input line (ie a 1.5 psi bottle). Always use that same pressure on the fluidic input.

    • Hook IPPs up to a pressurized input bottle for consistency

    • Make sure that IPPs are operating as expected and producing the expected flow rate

    If running a trial experiment with just water, you can put food dye in to the inducer to visualize how much is injected into vials

    Server Troubleshooting

    For more information about the server software, see here.

    Overview

    If a parameter is not working properly, often the first place to check for issues is the server

    Guide

    1. Monitor the server log file

      1. Guide

    2. Any time you are troubleshooting the server, make sure to save your calibrations.json file in a secure location before going further

    3. If the log file is not updating (via evolver tail -f

    Relevant Forum Posts

    https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
    # Start Electron App in Kiosk Mode
    ./evolver-electron-2.0.0.AppImage

    Input the following commands to restart the server

    1. sudo supervisorctl

    2. restart evolver

    here
    libraries folder
    OD90 for OD600 0.5-4.5 or OD135 for OD600 0.0-0.5
    OD blank
    hardware
    troubleshooting
    make one

    Stirring

    Stir Bar Jumping

    • How to recognize if your stirbar is jumping

    • Fixed by increasing space between fan and vial

    IPPs (Integrated Peristaltic Pumps)

    Vial Platform Troubleshooting

    Before attempting to troubleshoot the vial platform, make sure that the server is working as expected.

    The eVOLVER vial platform is the base that the Smart Sleeves sit upon. It contains the motherboard, Raspberry Pi (where the server is running), and power supplies.

    eVOLVER Maintenance

    We have monitored the lifetime of eVOLVER components since the invention of the device (~3 years). As in most systems, mechanical parts have the highest possibility of wear and thus need replacement most frequently. Likewise, in eVOLVER, the peristaltic pumps used have a lifetime of 6 months of typical use during continuous culture. Specifically, the silicone tubing within the head of the pump is frequently compressed when actuating peristaltic pumps and will tear over time. The head can easily and inexpensively be replaced ($4/ pump). The computer fan used for stirring has robustly operated continuously for > 3 years, whereas the magnetic stir bars are rated for a limited number of autoclave cycles and need eventual replacement. All other components (e.g. heaters, thermistors, LEDs, diodes, PCB, power sources) have been stably operating for > 3 years.

    https://www.evolver.bio/t/replacing-photodiodes-led-on-smart-sleeve/155

    GUI Troubleshooting

    Pressure Regulator

    Described initially in Huang, Heins et al. 2022 Nature Biotech

    Description

    As IPP devices are sensitive to changes in pressure at valves and in connected media bottles, we developed an 8-channel pressure regulator that can be used to regulate these pressures through the eVOLVER framework. The device consists of sets of two proportional valves that can limit air flow from a high-pressure source and a vent at atmospheric pressure. By connecting an electronic pressure gauge to the output of this valve configuration, it is possible to implement proportional-integral-derivative (PID) control over the valves in order to set the output pressure to any desired level between the input and atmospheric pressure. We validated the functionality of this device by regulating pressure at 1.5 psi over 24 hours, and compared the performance of our device with that of a fixed, manually set regulator (PARKER-WATTS R25-02A) connected to the benchtop air supply (Supplementary Figure 3). The average pressure with PID control was 1.498 psi with an RMS error of 0.0086 psi, while the fixed regulator had an average pressure of 1.706 psi with an RMS error of 0.2220 psi. Large pressure deviations (>0.5 psi) that can affect the performance of the devices were observed with the fixed regulator, but were successfully eliminated with our automated pressure regulator scheme. We further characterized the effects of pressure changes at various locations in the system in order to optimize performance of the IPP devices for the course of a PACE experiment (Supplementary Figure 3).

    )
    1. If you have manually edited the conf.yml file, most likely you have made an error somewhere there

      1. This could be formatting or a typo

      2. Copy a conf.yml that you know works (for example to base eVOLVER conf.yml)

        1. Using the server update as a reference

        2. ONLY copy the conf.yml to home/pi/evolver/evolver/

        3. Otherwise you will overwrite your calibration files

      3. Restart the server

        1. Stop following the server using ctrl+C

        2. Type restart evolver

        3. evolver tail -f

      4. The server log should now be updating each cycle

    2. If not, and you have not recently updated the evolver.py or other python files,

    here
    Directly Connecting to Rpi over USB
    Sudden Server Disconnections
    Using Raspberry Pi 4 as a server
    ssh Connection Refused

    Motherboard Troubleshooting/Replacement

    From eVOLVER Forum

    12V Power Supply Connection to Motherboard Melted

    Overview

    The motherboard is the large printed circuit board (PCB) in the vial platform that connects the Smart sleeves to the PWM boards, ADC boards, and SAMD21 mini breakout boards and these boards to the Raspberry Pi. In the event that the motherboard is damaged, it will need to be replaced. Some damage to the motherboard will be immediately obvious.

    Diagnosis

    to GitHub hardware page for the motherboard

    If you have determined that the server and Arduinos are both functioning properly, however, the link between them seems to be broken in some or all ways, then the last likely culprit is the motherboard.

    In the example below, overflow events during an experiment caused media to leak through the Smart Vial ribbon cable ports into the vial platform, which houses all of the eVOLVER circuitry. This resulted in visible damage to the motherboard, which can be seen below.

    Replacement Protocol

    Before getting started with disassembly, be sure to unplug the eVOLVER from the wall outlet.

    You may want to purchase an to help remove the PCBs from the motherboard without damaging them.

    Unfasten Motherboard

    The motherboard is fastened to the eVOLVER platform and other internal components in several ways (numbers correspond to image below):

    1. Ribbon cables connecting the motherboard to the Smart Sleeves (not shown)

    2. Screws in gold holes

    3. 6 screws that fasten wiring from the power supplies to the motherboard

    4. Cable connecting motherboard to Raspberry Pi (fastened to base of platform)

    Remove Motherboard

    1. Unplug the cables connecting the motherboard to the Raspberry Pi and display screen.

    2. Remove the screws in the gold holes using a Phillips screwdriver.

    3. Remove the screws holding the wiring in place using a flathead screwdriver.

    4. Close the eVOLVER chassis lid half way, making sure to hold the motherboard with one hand. Unplug the ribbon cables that connect the Smart Sleeves to the motherboard, starting from the last row of vials and moving towards the first row of vials.

    Transfer Parts to New Motherboard

    The PWM boards, ADC boards, SAMD21 mini Arduino boards and jumpers need to be transferred to the new motherboard.

    Be sure to take note of where each board is on the old motherboard before removing them. An image of the configuration can be seen in the images above.

    Remove the ADC boards, PWM boards, and SAMD21 mini breakout boards from their slots

    1. Using an Integrated Circuit (IC) puller, as seen in the image below.

      1. Pull the IC puller perpendicular to the motherboard to prevent bending or breaking the SA boards’ pins.

    2. Or put a screwdriver in the hollow under the board and SLOWLY work it back and forth the pry the board out.

    Make sure you pull the pins out as straight as possible because it will be challenging to get the board back in if they are bent.

    BE VERY CAREFUL. If you break off the wrong connector pin on their bottom, it's pretty annoying to figure out a solution other than replacing the whole board. Unfortunately, you also need to apply a good amount of force to get the board up. But be patient!

    1. If pins are bent in the process of removing the boards, they can be straightened using tweezers. Avoid bending the pins too much; excess bending can cause the pins to snap off.

    2. If pins are snapped off during this process:

      1. Not all pins are needed. You can check the hardware KiCad for whether the pin you snapped is necessary

      2. Alternatively, the pins can be soldered back into place onto the board, but this is much trickier to do.

    Optional: If your motherboard includes a variable resistance board, proceed to steps 3 and 4. If not, skip to step 5.

    1. Remove the variable resistance board from the motherboard. The ADC boards on this board can be removed first, or the variable resistance board and ADC boards can be removed as a single part.

    2. Remove the headers under the variable resistor board and transfer to the new motherboard. These can be removed with pliers.

    1. Remove the yellow resistor arrays (see below). An or pliers may be helpful here. Transfer the resistor arrays to the new motherboard, making sure to insert them in the proper orientation.

    2. On the side of the resistor array, there is a description of the part and a black dot, seen in the image below. This black dot indicates the ground pin of the resistor array, and should go into the slot towards the top of the motherboard.

    1. Remove the jumpers to the old motherboard by pulling them straight up. Transfer the jumpers to the new motherboard, recreating the same configuration as shown below.

    Before transferring the SA boards to the new motherboard, they should be evaluated for damage. Damage to SA boards will look like burns, melted parts, etc. Damaged SA components should be replaced.

    1. After checking for damage, transfer the variable resistance board (if applicable) and SA boards to the new motherboard (it is easiest to move these boards after transferring the resistor arrays and jumpers). Be sure to align the boards’ pins with the slots on the motherboard before pushing the boards into place.

    You may need to apply some force to get the SA boards into their slots. HOWEVER, make sure you are not bending the pins further as you push them in

    Adding the SA parts to their slots on the motherboard can be quite tricky, especially if their pins were bent during the removal process. Some tips for this step:

    • Inspect boards and use tweezers to carefully straighten pins that have been bent out of place. Bending the pins back and forth too much can cause them to break off the board, so this should be kept to a minimum.

    • If pins break off an SA board, they can be soldered back into place, or the entire board can be swapped out.

    • Place the SA board over its slots and check for pin alignment. Try to wedge the bent pins into place first, before pressing the board into place.

    • Make sure ALL PINS enter their respective slots before pressing the SA board into place.

    1. Unscrew the 3D printed corners from the old motherboard and fasten them to the new motherboard. These parts act as spacers to prevent the backside of the motherboard from touching the eVOLVER platform.

    Prepare New Motherboard and Plug in to eVOLVER

    1. Use electrical tape to cover all exposed elements on the back of the motherboard. There are exposed pins on both the top and bottom of the motherboard.

    The new motherboard is now ready to be fastened to the vial platform!

    1. Align the motherboard correctly by lining up the ribbon cable ports with the openings in the platform.

    2. Fasten the motherboard to the platform using the screws and a Phillips screwdriver.

    3. Fasten the wiring from the power supplies to the motherboard. The new motherboard will have screws in place for where the wires should go, so those should be removed and then used to fasten the wires to the motherboard.

    4. Plug in the cables to the Raspberry Pi and display screen.

    Power Up eVOLVER

    You are now ready to power up your eVOLVER!

    The first time you turn on the eVOLVER after replacing the motherboard, we recommend opening the platform and keeping an eye out for a few things:

    • Be sure to turn on the 5V power supply first, wait 10 seconds, then turn on the 12V power supply.

    • If you notice smoke or the smell of something burning, immediately turn off both power supplies. If this occurs, inspect the motherboard and the SA boards for melting or burn spots.

    • The red light on the Controls Raspberry Pi should turn on steady, and the green light should blink on and off.

    • The red and blue lights on the SAMD21 mini breakout boards should turn on steady.

    12V Power Supply Troubleshooting/Replacement

    The 12V power supply powers the heating and stirring elements in the Smart Vials. If both of these elements are not properly functioning and you have inspected the internal circuitry for damage (see Motherboard Troubleshooting/Replacement for more information), the next element to check is the 12V power supply.

    Troubleshooting

    • measuring w multimeter?

    Replacing a 12V Power Supply

    If you have found that the 12V power supply is not functioning, you can replace it following the steps below.

    Before getting started, be sure to unplug the eVOLVER from the wall outlet.

    1. The 12V power supply is fastened to the bottom of the vial platform with 4 hexagonal bolts. Use an Allen wrench to remove these bolts.

    1. Unscrew the wiring that connects the motherboard to the 12V power supply using a flathead screwdriver. This is easiest to do when the power supply has been unfastened from the case so that it can be turned on its side.

    1. Attach the wiring to the replacement 12V power supply, making sure that the wires are in the correct configuration, as shown below.

    Vial Caps

    Overview

    An essential component that screws on top of the glass eVOLVER vial. Connects to eVOLVER fluidics via luer lock.

    Versions

    4 Port Universal [Needle or Luer Lock]

    Overview

    Option 1: [Recommended] Can be easily constructed with luer locks

    Option 2: [Not Recommended] Can be used with needles like old caps, however this opens you up to preventable overflows as the old caps did

    Advantages

    1. [ enabled] - prevent vial overflows via air tight seal to vial

    2. Reusable connectors (no need to use needles) - connect tubing directly to luer lock on cap

    3. Easy assembly with few additional parts

    4. Ports work with old needle setup if needed

    Assembly

    GitHub

    5 and 7 Port [Nylon Tube Only]

    Overview

    Use a honeycomb pattern for the ports to cram more ports onto the cap.

    Advantages

    1. [ enabled] - prevent vial overflows via air tight seal to vial

    2. Reusable connectors (no need to use needles) - connect tubing directly to luer lock on cap

    3. Up to 5 or 7 ports per cap (plus sampling port) - other caps only have 4 ports

    4. Allows color coding of cap tubing to aid correct setup (see image above)

    Assembly

    GitHub

    [Old] Needle-Only

    GitHub

    Overview

    This is the cap that is currently given by default from FynchBio as of 25/01/15.

    Requires needles, so cannot have a full seal on the vial. Therefore, should be used with caution because of overflow risk.

    Assembly

    Must be assembled with needles at correct heights before each run.

    Overview of Millifluidics

    See the guides for all practical construction and operation.

    Figure 2C Wong. Nature Biotech, 2018 - Millifluidic multiplexing devices enable novel, customized liquid routing. Devices are fabricated by bonding a silicone membrane between two plastic layers with laser-etched flow channels. Integrated pneumatic valves actuate on the membrane to direct fluidic routing from media input to output ports (to or from vials).

    Description

    A key development in microfluidics was the design and fabrication of devices containing integrated (pneumatic) valves that could allow for complex fluidic manipulations with minimal number of control elements27–29. Here, we describe (1) why adapting this technology for the macro scale is valuable for automated cell culture, (2) challenges faced when scaling to larger flow rates, and (3) a new framework for fabrication and bonding of millifluidic devices featuring integrated pneumatic valves. These devices offer a scalable solution to challenges faced by traditional fluidics.

    Importance of Complex Fluidic Tasks

    The ability to program complex fluidic tasks could enable entirely new manipulations in automated cell culture applications (see Fig. 5, Supplementary Notes 15 - 17). For example, when growing undomesticated microbes, biofilm may form in the efflux fluidic lines and vials in as little as in 12 hours (e.g. see Fig. 5). The ability to programmatically bypass the vial in order to clean the fluidic lines with a bleach solution, and passage the culture from one vial to the next as a preventative measure, would be critical for long-term continuous growth of these microbes. However, complex fluidic tasks like vial-to-vial transfer, cleaning protocols, and mixed media inputs are extremely difficult with traditional fluidic systems used by current devices. In electronics, custom circuits can be readily created by breadboarding; however, this approach scales poorly to larger, more complex circuits because it relies on tedious manual assembly and leads to limited durability. Similarly, fluidic systems consisting of flexible tubing connecting separate control elements, like pumps and valves, can solve simple fluidic tasks. However, the number of necessary fluidic connections scales with the complexity of the desired task. For example, even with an optimal valving scheme, the ability to perform automated large volume transfers between any two culture vials in a 16-vial eVOLVER unit would require almost 300 fluidic connections and over 20 control elements. As in breadboarding, each connection would need to be routed individually by fluidic tubing and often by hand, a tedious task. Additionally, the tubing is usually fairly long, and each connection introduces dead volume, making the system less robust and impractical. Instead, by creating integrated (pneumatically valved) schematics, we sought to make a millifluidic equivalent of a printed circuit board; the complex fluidic connections are now integrated in a small device that is computer designed, manufacturable, and much easier to reproduce. With the flexibility of CAD, one would be able to customize a fluidic device to fit their particular experimental needs.

    Fluidic Scaling Problem

    The cost of control elements and assembly time of bioreactor units can prove to be a significant burden as one scales fluidic inputs and outputs for high-throughput operations. As previously described, most designs rely on a pinch valve or a peristaltic pump to separately control each of the media sources and another to control waste. For example, a single vial turbidostat unit with 4 different media inputs would require 5 pumps. A hypothetical 48-vial unit with the same capabilities would therefore require 240 pumps, at a cost of $7,000 to $10,000. The key problem is that the number of control elements increases linearly with the number of vials. Our pneumatically-valved devices can leverage concepts developed in microfluidics in order to scale throughput by multiplexing and demultiplexing inputs and outputs27,30. In this scheme, the number of controllable vials scales exponentially to the number of control 23 elements, needing only 30 elements to route up to 16 different fluidic inputs to 48 vials. We project the costs of this new hypothetical 48 vial fluidic schematic to be $1,000 to $2,000, roughly a 90% decrease in cost in comparison to current systems.

    Desired Characteristics and Properties of Integrated Millifluidic Devices

    Though inspired by microfluidic technologies, integrated millifluidic devices for continuous culture have drastically different design requirements. The following is a list of critical requirements for this technology in the context of continuous culture:

    • Devices need to be on the decimeter scale. Indicated in the nomenclature, microfluidic devices operate on the nano to micro liter per second flow rate. In contrast, continuous culture in eVOLVER requires flow rates of roughly ~1 mL per second, a 1000-fold increase. As such, in order to increase flow rate with an appropriate safety factor, the flow channels and device needs to be at least 10-fold larger than typical microfluidic devices.

    • New prototyping framework is necessary for larger devices. Traditional microfluidic prototyping techniques rely on standards from the microelectronics industry, namely patterning photoresist on silicon wafers29,51. Typically, 100 mm (4 inch) circular wafers are the largest size the machinery can pattern designs on, which is still too small for complex millifluidic devices. New fabrication framework is necessary to prototype devices for continuous culture.

    • Design cycle must be fast and repeatable. The success of microfluidics in the laboratory is, in large part, attributed to rapid and reliable design cycles enabling iteration and testing of prototypes. New design frameworks for millifluidic devices must be equally rapid and reliable.

    Characteristics of Pneumatic Valves for Millifluidic Devices

    Our pneumatically-valved millifluidic devices enable customizable, programmable routing of liquid at volumetric flow rates of ~ 1 mL/sec. The valves pinch off fluid flow on the flow layer when 10 psi is applied to the control layer and enable flow when vacuum is applied (Supplementary Fig. 11). Improvement of device bonding will enable application of pressures above 10 psi, necessary with higher flow rates.

    Coordinating New Fluidic Experimental Parameters

    Fluidic tasks in eVOLVER are enabled by the sequential actuation of valves in a specific fluidic network encoded in the integrated millifluidic device. We demonstrate these fluidic manipulations in a series of experiments (see Fig. 5, Supplementary Notes 15-17). Each experiment utilizes different devices as required to meet the experimental needs. The architectures for most functions are modular (e.g. multiplexer, vial-to-vial router) and can be combined in order to achieve more complex functionalities (Supplementary Fig. 11). For example, simple single media input turbidostat function utilizes multiplexer and demultiplexer modules. The demultiplexer routes the media source to the correct vial and the multiplexer routes the efflux from vial to waste. The same multiplexer and demultiplexer modules are Nature Biotechnology: doi:10.1038/nbt.4151 25 reused in all Fig. 5 applications, but different multiplexed media selectors and vial-to-vial routers are included as needed in different experiments. Software routines to control the control elements (valves and pumps) are also divided into commonly repeated functions, usually in a similar manner to how fluidic modules were divided. The code for each fluidic function is preloaded into the Arduino to coordinate tasks between each fluidic module. For example, a simple dilution event would first actuate valves in the media multiplexer to select media, then actuate a syringe pump for metering the desired volume, followed by valves in the vial demultiplexer and multiplexer to route media into the vial and remove efflux. By loading the routine for abstract functions (e.g. dilute, clean, vial-to-vial transfer) into the Arduino, robust communication can be ensured, with rapid transition between sub-tasks and no skipped steps (which could cause incorrect media routing, mis-priming of the syringe pump, or leaks and other device failures).

    Motherboard Layout and Circuitry

    This page aims to go more in depth into the Motherboard's circuitry to assist users in making the necessary modifications to add/subtract new experimental parameters or tune existing ones.

    Github hardware

    General Information

    As a quick recap, the Motherboard is designed to collect and send data/power to all 16 Smart Sleeves. The Motherboard is essentially a large PCB used to route signals via a network of electrical traces. Each SA slot (8 total) posses two electrical connections (positive and negative leads) to each Smart Sleeve CMB (8*2=16 connections per CMB). These two leads per SA slot are then used to make the physical connections to a sensor/actuator. In total, this results in 2 (leads per sensor/actuator) * 8 (SA slots) * 16 (number of Smart Sleeves) = 256 total traces. This is important to keep in mind when modifying the Smart Sleeve or troubleshooting when problems arise.

    Smart Sleeve

    Description

    The programmable Smart Sleeve is the foundational unit on which the eVOLVER is built (Fig. 2 and Supplementary Fig. 1). The Smart Sleeve is comprised of all the sensors and actuators required to control the culture conditions inside a 40 mL borosilicate glass vial. At the core is an aluminum sleeve, which surrounds the vial and is used to control temperature via two resistive heaters and a thermistor integrated within. Near the base of the vial sits a 3D printed part that houses and aligns the optical density LED and photodiode. Below that sits a fan motor equipped with magnets to rotate a stir bar within the vial. The Smart Sleeve represents one of the most easily customized features of the eVOLVER: by changing which sensors and actuators are used and their layout, the user may develop culture vessels that fit their experimental needs. For a detailed description of the sensors and actuators used to control stirring, temperature, and optical density in Smart Sleeves featured in this study, as well as strategies for modifying the Smart Sleeve to fit experimental needs, refer to Supplementary Note 4. Liquid handling is also controlled at the level of the individual culture vessel, yet these components are housed in a separate fluidic module, described in Supplementary Note 5.

    Universal Vial Cap Construction Guide (Luer Connectors Only)

    Materials

    • 3D printed (SLS, nylon PA-12) vial cap

    5 and 7 Port Nylon Tubing Caps Construction Protocol

    Materials

    • 3D printed vial cap with ports for nylon tubing

    OD90 vs OD135

    Definition

    The two photodiodes on the eVOLVER are at 90 degrees and 135 degrees from the IR LED.

    Recommendations

    Optical Density

    Description

    Based on previous work26, optical density measurements in a bioreactor can be measured with a simple 900 nm infrared (IR) LED and photodiode pair. There are two practical benefits of using 900 nm scattered light instead of the classic OD600. First, at 900 nm, turbidity/optical density measurements are less dependent on the absorbance spectrum of the media, meaning calibration is required less frequently before each experiment. Second, wavelengths in the visible range are preserved for light induction and colorimetric assays. To maximize scattering, the LED-diode pair is offset at a 135° angle. The 3D printed part is designed to house the LEDNature Biotechnology: doi:10.1038/nbt.4151 16 diode pair slightly above the height of the stir bar, at the correct angular offset. The part can be easily customized and printed to the users required specifications with any 3D printer. In the eVOLVER configuration used in this study, the IR LED and photodiode pair (4 leads) are each connected to the CMB via screw terminals in SA slots 4 and 5, respectively (Supplementary Fig. 7). In SA slot 4, a 16-channel PWM board amplifies a 3.3V signal from the Arduino microcontroller to a 5V signal to power the IR LED. A resistor is placed on the CMB to limit current and prevent the LED from burning out. SA slot 5 contains the 16-channel ADC board, responsible for analog filtering and demultiplexing the signal from the photodiodes. The ADC board reads the sensor by measuring the voltage difference across a 1M Ohm resistor, located on the Motherboard. Both slots are managed by Arduino 3 in the system developed in this manuscript. Briefly, the Arduino code interprets serial inputs from the Raspberry Pi, flashes ON the IR LEDs to measure turbidity, and responds with the current measurements. In the present system, optical density can be measured every 30 seconds, limited by the time taken for the Arduino to average diode readings (to minimize noise). For convenience, density readings from the 900 nm LED-diode pair were calibrated to OD600 measurements from a spectrophotometer, and the calibration curve fit with a sigmoidal function (Supplementary Fig. 8). Spectrophotometer readings were performed on a Spectramax M5 using 300 uL of media in a 96-well flat bottom plate; users may substitute density calibration data from measurements used in their labs. The optical density measurements in all experiments are calculated based on the calibration curve fit for each Smart Sleeve (Supplementary Fig. 8). For our experiments, calibration was performed using a dilution series of yeast cells suspended in distilled water, but in theory any cell type and/or solution of interest (such as evaporated milk) could be used. A custom MATLAB script was developed to facilitate the density calibration process, particularly important for bringing new eVOLVER units on line. Following calibration, the system was used to compare growth of S. cerevisiae (FL100) cells in eVOLVER vials to that in 250 mL flasks with 50 mL of media shaken at 300 rpm (Supplementary Fig. 8). Finally, to quantify the variance in growth across eVOLVER vials, 96 cultures across six 16-vial eVOLVER units were grown in parallel and aligned (Supplementary Fig. 8). These results demonstrate that eVOLVER cultures are repeatable, and exhibit comparable growth rates to cultures in shaken flasks. As previously mentioned, varying temperature induces a shift in the optical density readings (Supplementary Fig. 6). In measurements performed on yeast cells, we observed the largest shift near the center of the optical density calibration curve, while at low or high OD, the shift due to temperature was minimized. This information was used to select a density range for experiments in which temperature was controlled dynamically (see Fig. 4). As cells may shift in size in response to heating, we also quantified temperature-induced offset in optical density readings using evaporated milk.

    Vial Board

    Version D

    Pin Map

    Differences to Version C bolded

    Try OD135 for OD600 < 0.5

    1. There will likely be vials that max out between OD600 0.5 and 1.0

  • Try OD90 for OD600 > 0.5

    1. Some eVOLVER systems are able to read OD90 up to OD600 of 4 or 5

    2. This may require optimization of the internal resistor pack

  • Switching between currently requires manual OD calibration (can be applied to an existing GUI calibration you have on your eVOLVER)

  • See this forum post for an example

  • guide
    update them
    Bottom view of eVOLVER: 12V power supply volts are circled in red
    Side view: wiring that connects the 12V power supply to the motherboard
    Top view:
    Emergency efflux
    link
    Construction guide
    Emergency efflux
    link
    Construction guide
    link
    4-port universal cap with nylon efflux straw on bottom.
    5-port cap assembled

    The sensors and actuators on each sleeve are integrated in a small printed circuit board (PCB), termed the Vial Board (VB). We designed the VB such that we can easily solder electrical connections and efficiently manage/package wiring from the sensors. The VB is a very simple PCB, containing only a few resistors, and is straightforward to redesign and inexpensive to manufacture, if needed. The simplicity in the VB leads to robustness in the system. For example, any accidental overflow and spillage from the vials (e.g. from clogged fluid lines or user error) should minimally impact the rest of the system, as critical components are located at the Motherboard rather than the sleeve itself. Ribbon cables provide a modular way to connect the integrated Smart Sleeves to the Motherboard.

    The VB is designed to rest atop a 3D printed piece, which houses optical density and temperature components (see Supplementary Note 4). The printed part can be fabricated with Nature Biotechnology: doi:10.1038/nbt.4151 5 any commercial or DIY 3D printer, readily available at almost any university or hacker space, and customized to the requirements of the user. For example, if a user wanted to change the mode of optical density detection between scattering and absorption, they could redesign the 3D printed part housing the LED-diode pair such that it would have the correct offset angle for the desired mode of measurement.

    Vial

    Vial Holder

    Vial Sleeve

    Vial Cap

    Vial Board

    Cable connecting motherboard to display screen (fastened to lid of platform, obstructed by ribbon cable in image)

    Maneuver the motherboard around the 3D printed part housing the display screen.

  • The board should be replaced with a new board if other options do not work

  • The SA boards can withstand some force when being pushed into the motherboard. Press the SA boards into their slots until the boards lay flush with the slots on the motherboard.

    Plug in the Smart Vial ribbon cables to the motherboard from the top of the eVOLVER.

    Link
    Integrated Circuit (IC) puller
    files
    IC puller
    Layout of damaged motherboard
    Internal components fastening the motherboard to the vial platform
    Using an IC puller to remove an ADC board. In black are the PWM boards. Small red boards are the SAMD21 Arduinos
    Variable resistance board sitting on top of headers after being removed
    Jumper configuration indicating power supply for each component
    3D printed spacers in corners
  • Device must be transparent. Fluidic systems designed for long-term continuous culture of microbes will be prone to biofilm formation. The ability to monitor flow through the device is critical for debugging experimental issues.

  • Device needs to interface with pumps, filters, and tubing. Fluidics for laboratory continuous culture typically interface with syringe pumps, pressurized fluids, sterile filters and peristaltic pumps. A robust way to interface dozens of connections between the device and other fluidic elements (e.g. vials, filters) is critical and nontrivial.

  • Device must be resistant to 10% bleach and 70% ethanol. Sterilization of the device is necessary prior to any experimentation. Fluidic materials and fabrication must be resilient to these chemicals for weeks of continuous usage.

  • Millifluidic devices featuring integrated pneumatic valves. (a) Characteristics of macro pneumatic valves. A silicone rubber layer is sandwiched between two PETG plastic layers to form disposable, pneumatically-valved millifluidic devices (left). Valve layouts and fluidic paths can be designed with any vector-based CAD software, patterned with a laser cutter, and bonded with adhesive (upper right). The entire process, from CAD to completed device, can be done in 3 hours. Pneumatic valves and devices can be daisy chained together for improved scalability (lower right). (b) Integrated millifluidic devices as fluidic modules. Completed devices are transparent, disposable, and patterned with a laser cutter (left). Fluidic routing and valving can be customized to form specialized fluidic modules (center). These modules can be connected in various ways to enable complex fluidic functions (right). (c) Photograph of 16-channel multiplexer device, with fluidic lines (clear) and pneumatic lines (blue). Thread-to-barbed plastic connectors can be fastened onto the millifluidic device to interface with standard fluidic components.
    Supplementary Figure 27. Control structure for millifluidic devices enables unique fluidic programs for each experiment. (a) Control structure for custom millifluidic devices. Fluidic sub-routines are pre-loaded onto an Arduino in order to ensure rapid and robust transition between the many sequential tasks needed to perform fluidic tasks on a custom fluidic module. These sub-routines convert abstract commands (e.g. dilute vial 1 with media A) into sequential actuation of control elements, such as solenoids for valving, or peristaltic and syringe pumps for media metering. (b) Logic diagram for dilution event. For routine turbidostat dilutions, a dilution event triggered by reaching a density threshold consists of three parts: 1) Open route from appropriate media input, pull fluid into syringe, repeat as necessary in order to mix medias (as in glucose/galactose ratio sensing experiment, see Fig. 5a), then dispense through demultiplexer route into vial. 2) Open route through multiplexer to run efflux from vial to waste. 3) Open media selector route to 10% bleach, ethanol, then sterile water, to sterilize and flush fluidic paths used during dilution event. (c) Logic diagram for vial to vial transfers. Transfer of cells from a source vial to a target vial were triggered either by elapsed time for the biofilm prevention experiment (see Fig. 5b) or by a growth rate measurement above threshold value for the antifungal evolution experiment (see Fig. 5c). A transfer consists of four parts: 1) Open route from appropriate media input, pull fluid into syringe, dispense through demultiplexer route into source vial. 2) Open route through multiplexer to run efflux from vial to syringe to collect cells. 3) Dispense through demultiplexer route into target vial. 4) Open media selector route to 10% bleach, ethanol, then sterile water, to sterilize and flush entire device.

    Pulse Width Modulation (PWM) Boards

    Lastly, each SA slot acts as a de-multiplexer/multiplexer for bidirectional relay of signals with its cognate SAMD21 Arduino.

    TODO: Include a figure to highight transfer of data including voltage divider

    Tuning Sensor Behavior

    As mentioned earlier, the Motherboard makes use of voltage divider circuits to acquire sensory data on cultures. Briefly, a voltage divider circuit works by connecting two resistors in series with Vin, a voltage source, to produce Vout, a set fraction of Vin (Fig 1.). The value of Vout is based on the the resistance values of the two resitors and the value of Vin, which can be modeled as:

    Figure 1. Basic voltage divider circuit

    This principle is used by the Motherboard to implement sensory circuits with components that transduce environmental signals into electrical signals (i.e. thermistors, photodiode, phototransistors, etc). This signal is read via Vout, the voltage across the resistor, which is proportional to the sensor's electrical readout (Fig 2.).

    Figure 2. Optical density sensor circuit using a photodiode sensor to transduce changes in light.

    Based on experimental conditions, it may be of interest to tune how these sensory circuits behave to acquire optimal data. The Motherboard offers two primary ways to modify sensory circuits: 1) swap R1 to alter sensor sensitivity and 2) swap Vin to alter the circuit's dynamic range.

    Tuning Sensor Sensitivity

    To streamline sensitivity tuning, the Motherboard uses 9-pin resistor packs (one is reserved for ground), which connect to the left-and-right to each SA slots (8*2=16 parallel resistors). As a user, all you need to do is remove the two current resistor packs and replace them with packs with desired resitance values. By taking a look at the raw sensory data coming off the eVOLVER, you can assess if the sensitivity modifications are adequate or not.

    Resitor packs are polarized electrical components so ensure that the ground pin (with dot) is properly put into the female ground connector on the Motherboard.

    Avoid bending or breaking pins when removing/placing resistor packs. Use pliers to gently pull up on both ends to nudge the resistor pack out

    link
    Vout=Vin∗R2/(R1+R2)Vout = Vin *R2/(R1+R2)Vout=Vin∗R2/(R1+R2)
    Download the .stl file from GitHub
  • Order from Hubs

  • Get these "vapor smoothed" for better sealing

  • Get white nylon PA12 (the default black will leach dye into your media)

  • Other default settings are fine

  • 4X - 3/32" female white nylon barb to luer lock

    • Buy at least 4 x number of caps + extra

    • Nylon required to survive autoclaving (expansion differential between normally used polypropylene and nylon 3D printed vial causes epoxy to separate)

  • Semi-clear white hard nylon tubing (1/8" OD)

  • Plasticweld epoxy

  • [Required for overflow protection] Rubber stopper

  • [Required for overflow protection] O ring

  • Construction Protocol

    1. [Optional] Mark fluid lines on a glass eVOLVER vial (see below image)

      1. This will be used to set the efflux tube height, which sets the volume in the eVOLVER vial.

      2. Tape an eVOLVER vial

      3. Using a serological pipette, measure water into the vial in increments of 5 mL

      4. Mark the volume at each increment on the tape at the bottom of the

    2. Using a razor, trim nylon tubing so that it reaches the volume you have set

      1. Nylon tubing will straighten in the autoclave, so try and straighten it out as much as you can

      2. Cut to 53 mm for 20mL

      3. Otherwise, determine the correct length using graduated eVOLVER vial from step 1

    1. Use gloves when working with epoxy

    2. Put epoxy into mixing tray and mix

      1. You don't need much because epoxy will likely set before you finish all vials

    1. Apply epoxy to barb of luer connector

      1. Be generous, but avoid the opening in the barb

      2. If you do get epoxy in the opening, blow it out or pick it out with a paperclip

    (Top) Connector without epoxy. (Bottom) Connector with epoxy on barb.
    1. Press the connector into a port in the top of the cap, and twist a few times to spread epoxy

    1. Repeat steps 4 and 5 for the other ports

      1. When epoxy starts to solidify, mix more (in a new tray)

    2. Wait for at least an hour for epoxy to set somewhat

    3. Epoxy one side of the outside of efflux tube (avoiding the hole)

    4. Press the tube into left port of cap (when sampling port is facing you) (see below)

      1. Only press until you feel a slight resistance

      2. Twist once or twice to spread epoxy

    Cap with efflux tube epoxied in to left port
    1. Repeat steps 8 and 9 for all caps

    2. Allow epoxy to set 24 hours before using

    Universal vial cap with efflux tube in place.
    Download the .stl file from GitHub
  • Order from Hubs

    • Service = SLS; material = nylon PA-12

    • Get "vapor smoothed" for better sealing

  • Plasticweld epoxy

  • Semi-clear white hard nylon tubing (1/8" OD)

  • White flexible silicone rubber tubing (3/32" ID (inner diameter))

  • Blue flexible silicone rubber tubing (3/32" ID (inner diameter))

  • Five 3/32" female barb to luer connectors

  • Mixing tray (here a small weighboat)

  • Disposable applicator (here a wooden stir stick; pipette tip also works)

  • [Optional - for color coding ports] Red flexible silicone rubber tubing (3/32" ID (inner diameter))

  • [Optional - for color coding ports] Black flexible silicone rubber tubing (3/32" ID (inner diameter))

  • [Optional] 3D printed (SLS, nylon PA-12, vapor smoothed) bubbler for in-vial aeration

  • Materials needed for cap assembly. Instructions for making glass vial with graduations below.

    Design

    1. Choose the minimum number of ports necessary

      1. You will need to block up ports that are unused if you want to do emergency efflux

      2. Therefore, choose the cap with the minimum number of ports that you need

      3. For example, counting ports for PACE

        1. Lagoon: 1 vial-to-vial + 1 efflux + 2 inducers + 1 emergency efflux = 5 ports

        2. Cell reservoir: 1 media influx + 1 efflux + 1 vial-to-vial + 1 emergency efflux = 4 ports

        3. For simplicity, you may want to just use this type of cap and plug the extra port with a luer .

    2. Efflux straw sets the volume of the culture

    3. Increase influx accuracy

      1. Important for low volume influx like inducers

      2. Angled influx tubing should touch the inside of the glass vial to create a stream of liquid rather than drops.

      3. It should also be well above the efflux line to avoid contamination.

    4. [Optional] Use different colors of tubing to denote different ports (see above)

    Construction Protocol

    0. Mark fluid lines on a glass eVOLVER vial (see above image)

    1. This will be used to set the efflux tube height, which sets the volume in the eVOLVER vial.

    2. Tape an eVOLVER vial

    3. Using a serological pipette, measure water into the vial in increments of 5 mL

    4. Mark the volume at each increment on the tape at the bottom of the meniscus

    1. Cut Nylon Tubing to Various Lengths Needed

    Tip: To keep things tidy and make the process of constructing the cap easier, cut everything you need first and store in clearly labeled old micropipette tip boxes.

    Optional: When making multiple caps, it is easier to keep track of the varying lengths of tubing by storing them in old pipette tip boxes.

    The nylon tubing will straighten in the autoclave.

    1. Cut the necessary components of the hard semi-clear white nylon tubing (1/8" OD). Refer to the table below for lengths.

    The table below has the necessary components for the construction of one cap.

    Component
    Length

    1 x Regular Efflux (culture volume of 25 mL)

    3 inches

    1 x Emergency Efflux

    1.5 inches

    2 x Influx

    2.5 inches

    1 x Gas Bubbler

    2 inches

    1. Cut the necessary components of the flexible nylon tubing. Refer to the table below for lengths.

    The table below has the necessary components for the construction of one cap.

    Component
    Length
    Flexible Tubing Color

    1 x Regular Efflux

    1.5 inches

    Blue

    1 x Emergency Efflux

    1.5 inches

    Black

    2 x Influx

    1.5 inches

    Clear

    1 x Gas Bubbler

    1.5 inches

    2. Assemble Cap

    When handling epoxy, use gloves to avoid getting it on skin as it can eventually lead to allergic reactions.

    Steps

    1. You may need to drill out the ports in the 3D printed vial cap if powder is blocking them.

    2. Insert the hard semi-clear white nylon tubing (1/8" OD) into each corresponding port in the cap as per the image below.

    1. Influx, 2. Influx, 3. Gas Bubbler, 4. Emergency Efflux, 5. Regular Efflux
    1. Screw the cap into the glass vial with measuring tape on the side and ensure that:

    1. Follow the epoxy directions to mix up a small amount of epoxy in a disposable dish. Use even pressure to get even amounts of resin and hardener. Use a toothpick or other similarly sized applicator to put the minimum amount of epoxy around the outside area of the cap where the ports and the hard nylon tubing connect, ensuring to spread the epoxy in between any gaps.

    2. Set assembled caps upright (with a vial rack or spare vials) so that epoxy doesn't drip into the sampling port as it cures.

    3. Set cap on its side to cure overnight.

    4. Next day, add the appropriate color flexible nylon tubing (3/32" ID) to each hard nylon tubing (1/8" OD) as per the table above.

      1. [Bubbler Only] Connect the flexible nylon tubing (3/32" ID) bubbler connector component onto the inside end of the gas bubbler hard tubing. Allow the tubing to reach halfway through the connector tubing.

      1. [Bubbler Only] Connect the constructed gas bubbler onto the other side of the connector tubing. The end of the gas bubbler hard tubing that is inserted in the cap and the gas bubbler should connect as per image below.

    Example cap with 5 ports, one of which is a bubbler [optional].
    IR LED-photodiode pair integrated in each Smart Sleeve enables individual monitoring of optical density. (a) CAD drawing and photographs of a 3D printed part for housing optical parts. Designed on CAD software, printed parts housing the IR LED and photodiode are customized for 135° offset to maximize scattered light (left). Completed part printed from CAD file (center). CMB assembled with mounted LED and photodiode via screw terminals (right). (b) Schematic of system design for eVOLVER optical density module. The IR LED (SA slot 4) and photodiode (SA slot 5) are integrated into the Smart Sleeve (left). A resistor is placed on the Smart Sleeve to limit current through the LED. A turbidity measurement is triggered by a serial command from the Raspberry Pi, and consequently, the Arduino responds with the current optical density measurements (right). The Arduino coordinates the timing when the LED flashes ON and the photodiode starts collecting measurements. Nature Biotechnology:
    Optical density calibration and growth characterization. (a) Optical density calibration curves. Optical density is measured by a 900 nm LED-diode pair (see Supplementary Fig. 7) and calibrated to an OD600 measurement performed on a Spectramax M5 using 300 uL of media in a 96- well flat bottom plate. The calibration curve is fitted with a sigmoidal function. All optical density measurements in the experiments are calculated based on the fitted calibration curve for each Smart Sleeve. Sensitivity of OD measurements can be tuned by swapping the photodiode resistor. Top: A larger photodiode resistance at a lower LED intensity (2125 a.u.) gives a larger dynamic range, robust after 4 months of use. Bottom: A smaller photodiode resistor at a higher LED power gives a smaller dynamic range, but with more precision. This setting is also robust over time (1 year of use). Both traces are representative of a typical Smart Sleeve. (b) Comparison of cell growth in flask vs Smart Sleeve. Comparison of yeast cells grown in flasks in a shaking incubator with cells grown in SDC in 18 different Smart Sleeves across 6 different eVOLVER systems (left). (c) Comparison of cell growth across Smart Sleeves. We characterized variability of yeast growth across 96 Smart Sleeves (6 different eVOLVER platforms). Traces were aligned at 0.2 OD before plotting in order to normalize for different lag phases.
  • Fan

  • Unused; linked to fan for future fan tachometer

  • Heating resistor

  • Thermistor

  • OD IR LED

  • OD 135 photodiode

  • OD 90 photodiode / Spare A

  • Spare B

  • Differences to vial board revision C inside box.

    Version C

    Picture of version C vial board in KiCAD

    Pin Map

    Differences to Version D bolded

    1. Fan

    2. Unused; linked to fan for future fan tachometer

    3. Heating resistor

    4. Thermistor

    5. OD IR LED

    6. OD 90 photodiode

    7. OD 135 photodiode / Spare A

    8. Spare B

    Differences to vial board revision D inside box.
    Picture of version D vial board in KiCAD

    Known Issues

    Please report any issues you come across in the appropriate and consider making a post on the !

    Vials

    OD is dependent on depth of LED in vial

  • Characterized on this forum post

  • Needs to be pushed to users

  • OD is dependent on vial position

    • Notched vial caps help align

    • Brandon has designed vial aligners

    • It is generally an unwritten rule to not move vials after experiment start, but this is sometimes impossible

    Stirring affects OD

    • Tuning stirring too high can cause stir bars to chitter (stop turning and move around)

    • Because the stirred media forms a spout in the middle

    • Therefore inconsistent stirring can means more noise in OD reading

    • Also, less stirring = less optimal growth

    Fluidics

    Pump heads stop working

    • Causes overflows, poor reliability

    • Fixed by new pumps

    • Almost all evolvers have old pumps

    eVOLVER Base

    New eVOLVER base susceptible to fluid damage

    • Vial overflows or spills get into chassis via ribbon cable ports, then short motherboard

    • Drainage system drips down the back of the eV and into chassis

    • Overflows finally leak onto bench and floor requiring serious cleanup

    Old eVOLVER base susceptible to fluid damage

    • Fluids from vials drip onto pumps, destroying them

    Github repository
    forum

    Cut the tubing to a longer length than you need

  • Pushing it into the vial cap until you feel a little resistance (easy to accidentally go further, but there is a stopping point)

  • Screw the cap on all the way

  • Estimate where to trim

  • Check in vial cap again

  • Measure length when you have this correct - use this for the rest of your vials (or use cut length as a guide for cutting the rest)

  • Cut all tubing for the caps you are making

  • meniscus

    Red

    1 x Bubbler Connector

    5/8 inches

    Clear

    cap
    Color flexible tubing connected to cap.

    Sensor/Actuator Board Slots

    Analog-to-Digital Converter (ADC) Boards

    Description

    Another customizable control board, the ADC board is designed to plug into the Motherboard and measure the signal from dozens of sensors in the system. The sensors currently integrated in each sleeve are simple and can be measured with basic voltage divider circuits. The sensor and resistor are placed in series, and the voltage across a resistor changes when the measurement from the sensor changes. The board reads this voltage and has two main roles: (1) remove noise from the signal through a low pass filter and (2) multiplex the signal from all 16 channels to one analog input pin on the Arduino. When the signal arrives at the input pin, the Arduino changes the analog signal to a digital signal via its own 12-bit ADC. Nature Biotechnology:

    Chassis

    Temperature

    Description

    In contrast to current approaches in which all culture vessels are housed in a single incubator7,26, we developed a module for individually controlling the temperature of each Smart Sleeve in the eVOLVER. This not only allows the cultures to be maintained at distinct temperatures, but also reduces thermal mass, permitting dynamic temperature profiles. For the configuration described in this study, the temperature module utilizes SA slots 2 and 3 on the Motherboard (Supplementary Fig. 5). Typically, there are three main components to temperature control: (1) a thermometer, (2) a heater, and (3) a feedback controller. In our setup, the thermometer and the heater are integrated in the Smart Sleeve while the feedback controller is located on the Motherboard. Specifically, the temperature is measured by a 500 μm thick temperature-sensitive resistor, or thermistor (Semitec, 103JT-025). The sensor is integrated into the sleeve between the 3D printed part and the aluminum tube, and the thermistor is soldered onto the component mount board (CMB) after assembly. The aluminum tube enables even heat distribution/dissipation and shields the culture from ambient light (important for other measurements/parameters). Two heating resistors (20 Ohm 15 W, thick film) are screwed onto the aluminum tube for better contact and connected to the CMB via soldering. In our setup, the four leads, 2 from heating resistors and 2 from thermistor, are connected via a ribbon cable to the Motherboard and routed to SA slots 2 and 3, respectively. In slot 2, a 16-channel PWM board amplifies a 3.3V signal from the Arduino microcontroller to a 12V signal to actuate the heating resistors. Slot 3 contains a 16-channel ADC board, which reads the voltage difference across a 10 kilo Ohm resistor, and is responsible for analog filtering and demultiplexing the signal from the thermistor. These slots are connected to and are programmatically controlled by Arduino. Briefly, the Arduino code interprets serial inputs from the Raspberry Pi, updates the set point on the PID controller, and responds with the current measured temperature. Temperature settings can be updated as frequently as every 30 seconds. To determine how much to turn the resistive heaters on, the Arduino is programmed with a simple PID control algorithm. The PID controller can be easily tuned via software to obtain the desired overshoot and time delays. The Arduino then controls a PWM board (on SA slot 3) to interface with the resistive heaters and get the desired heat output. Calibration of the temperature measurement in the sleeve was performed by comparing the temperature of water measured in the vial using a thermocouple to the values returned by the thermistor (Supplementary Fig. 6). The dynamics of heating were determined by tracking temperature during a programmed step function, again comparing thermocouple and thermistor readings; the thermistor measures the temperature of the sleeve, while the thermocouple measured the actual water temperature. At room temperature (23°C for this experiment), a single culture (20 mL) can reach a temperature of 42°C in roughly half an hour with the current hardware setup (Supplementary Fig. 6). During an experiment, the transient offset between the recorded temperature and actual temperature may vary due to ambient temperature and volume of liquid. At steady state, the temperature can be maintained to +/- 0.1°C, with properly tuned PID constants. Max temperature and rate of temperature ramp can be changed with different power sources (e.g. 24V power source could reach temperatures >55°C). It should also be noted that at different temperatures, the optical density readings are affected accordingly. This effect was measured in both yeast cultures and evaporated milk (Supplementary Fig. 6). See the next supplementary note for more detail.

    Light Blocker / Splash Guard

    Functions

    • Keeps liquid spills away from electronics

    • Protects OD readings from environmental light interference

      • If you have calibrated without the light blocker / splash guard you will likely need to recalibrate

    Construction

    Materials

    • 1/8" acrylic sheet

      • Laser cut or get laser cut by a vendor

      • Find vector cutting files for this

    • Acrylic solvent cement (Weld-On 4)

    Protocol

    1. Remove backing, if any, from acrylic sheets

    2. Hold pieces in place using tape or clamping

    3. Follow solvent cement directions for assembly

    RS485 Board

    GitHub hardware link

    RS485 board is center with a red arrow pointing to it.

    Overview

    The RS485 board enables serial communication between the Raspberry Pi (server) and the Arduinos (controlling the parameters).

    Troubleshooting

    The RS485 board has broken on very rare occasions.

    Symptoms

    No communication between all Arduinos and the Raspberry Pi server

    Diagnosis

    If only one Arduino is not communicating More likely to be something wrong with:

    1. Arduino

    2. connections between Arduino and RS485 board

    If you have tried a new Arduino with new code and verified motherboard connections work, it may be the RS485 board itself. Try a new RS485 board ordered from Fynch.

    Raspberry Pi

    Resources for setting up and interacting with the Raspberry Pi for use in the eVOLVER platform.

    eVOLVER uses Raspberry Pi for interfacing with the Arduino microcontrollers and for processing user and experimental commands. Hardware and software configurations and calibrations are saved on the RPi.

    We provide a pre-configured RPi image that is configured to run all eVOLVER software.

    RPi image for eVOLVER

    General RPi information

    Raspberry Pi Imager - Use this to upload the disk image linked above to the RPi SD card. We have a guide for this process here.

    Guide for uploading a disk image to the RPi SD card via command line - Only use this if you are comfortable working on a terminal and the upload tool above isn't working for you.

    Setting up a new RPi

    If you need to setup a new RPi, download the image linked above and install the Raspberry Pi Imager tool on your personal laptop or computer. Plug in the SD card from the RPi and upload them image onto it (this process might take a while). Afterwards, you can plug the card back into the RPi and .

    Overview of Software Architecture

    High-level description of software architecture

    All code is located in our Github Repositories:

    1. eVOLVER Code (Raspberry Pi, Python)

    2. Arduino/Microcontroller Code (C/C++)

    3. Data Processing Unit (Python)

    4. (Node, JS, Electron, React)

    Arduino (SAMD21)

    Responsible for collecting data from sensors and actuating culture vial components. A single is typically responsible for a single culture parameter. All of the SAMD21 boards are connected in parallel to a . They listen for commands from the Raspberry Pi and communicate only when the RPi asks them specifically for information.

    All code is in C/C++.

    Raspberry Pi

    The Raspberry Pi orchestrates the control of all connected components, keeps track of calibration data for those components, and serves as the interface between the hardware and any lab computers or users wanting to interact with the eVOLVER. It can communicate via a network and also interface with low-level hardware. It communicates with the connected Arduino's via Serial RS-485, and with users via a lab computer with , typically over a local network (router).

    The server is written in python.

    Lab Computer

    This is where the logic for experiments happens. Users can program culture routines in python (DPU) that are carried out as commands sent to the RPi via websockets typically over a local network (router).

    Additionally, users can use the electron GUI interface to send immediate one-off commands and see the current data being collected on the eVOLVER. The GUI is also used to carry out calibrations of connected components, mapping the currents and voltages that the sensors generate to real-world representation of what they are measuring like OD or temperature.

    Lastly, the GUI is also capable of customizing and managing eVOLVER culture routine experiments, and can be used to view the data from current and past experiments.

    The DPU code is all in python, and the GUI is written in Javascript using and .

    Stirring

    Description

    The eVOLVER platform features tunable and independent stir rate control across culture vials. Stirring in eVOLVER is actuated by 12V brushless DC motors with attached neodymium magnets. The fastened magnets spin a stir bar (20 mm x 3 mm, PTFE coated) within an autoclaved glass vial (28 mm x 95 mm, borosilicate). The stirring module utilizes a single SA slot on the Motherboard; in the particular configuration described in this study, we utilized SA slot 1 (Supplementary Fig. 4). The two leads of the motor (12V & GND) are connected to a screw terminal on the component mount board, from which a ribbon cable connects the smart sleeve to the Motherboard. The PWM board (plugged into the SA slot) can control each motor independently to achieve different stir rates across eVOLVER vials. Briefly, the 16-channel PWM board amplifies a 3.3V signal from the Arduino microcontroller to a 12V signal to actuate Nature Biotechnology: doi:10.1038/nbt.4151 12 the motor. Arduino 1, which manages SA slot 1, was programmed to take in serial inputs from the Raspberry Pi and translate the serial values to different stir rates, determined by pulsing the motor ON and OFF at different ratios (Supplementary Fig. 4).

    Relevant Forum Posts

    here
    update the server code
    Motherboard
    eVOLVER GUI
    SAMD21 mini-breakout board
    Serial RS-485 bus
    websockets
    Electron
    React
    About stir speed
    Individually controllable stirring utilizing DIY parts. (a) Photographs of eVOLVER stirring components. A 30 mm x 30 mm computer fan affixed with neodymium magnets actuates stirring in the eVOLVER smart sleeve (left). Two 1/8” acrylic sheets are used to space the magnets from the glass vial. The 3D printed part and CMB are fastened with screws (center, right). Electric leads are connected to the CMB with a screw terminal. (b) Schematic of system design for eVOLVER stirring module. The computer fan spins a stir bar (20 mm x 3 mm, PTFE coated) within a glass vial (28mm x 95 mm, borosilicate) (left). The Arduino interprets the serial command from the Raspberry Pi, amplifies the signal with the PWM board, and applies a 12V signal to the motor (right). The stir rate is determined by the ratio of pulsing the fan ON and OFF. (c) Stir rates can be roughly calibrated by using a smartphone camera recording at ≥240 frames per second. Calibration curve shown is for a single Smart Sleeve. Stir rate was calculated multiple times in a five second window, with error bars depiction standard deviation of these measurements. Rotations per minute varies with different types of Nature Biotechnology: doi:10.1038/nbt.4151 13 stir bars and volume of liquid in the vessel due to drag. Stir rates remain stable after 3 weeks of continuous use.
    Individually controllable temperature achieved by feedback between thermometer and heaters integrated in the Smart Sleeve. (a) Photographs of eVOLVER temperature components. A temperature-sensitive resistor, or thermistor, with a compact form factor, 25 mm x 3.6 mm (left). Sensor integrated into Smart Sleeve in between the 3D printed part and spray painted aluminum tube (center). Two heaters are screwed onto the aluminum piece and all components are soldered onto the CMB (right). (b) Schematic of system design for eVOLVER temperature module. The resistive heaters and thermistor are integrated into the Smart Sleeve and interface with PWM and ADC boards at SA slots 2 and 3, respectively. Arduino 2 manages both boards and interprets the desired temperature settings and responds with the current temperature (right). The temperature is maintained with a PID controller programmed into the Arduino. The controller interprets the input from the ADC board in slot 3 to determine the output of the PWM board in slot 2.
    Temperature control characteristics in eVOLVER Smart Sleeves. (a) Temperature calibration curves. Top: A thermocouple was used to measure the temperature at different thermistor readings. The points were fit with a line and all temperature measurements in the experiment were calculated based on the fitted line. Bottom: Recalibration, after a year of use, demonstrates stable and robust temperature control in Smart Sleeves. (b) Temperature offset between aluminum sleeve and liquid. To measure the temperature offset during dynamic temperature changes, the integrated thermistor (upper left) and a thermocouple (lower left) simultaneously recorded temperature at two different locations during a square wave (right). (c) Impact of temperature changes on optical density readings. Optical density calibration curves for yeast cultures (see Supplementary Fig. 8) were generated at three different temperatures, and verified separately by OD600 spectrophotometer readings (left). To characterize temperature-induced OD offset without cells, evaporated milk was used to generate another set of calibration curves at different temperatures (right).