arrow-left

All pages
gitbookPowered by GitBook
1 of 15

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

About

hashtag
Purpose

The min-eVOLVER was originally conceived of as a minimal apparatus to conduct phage-assisted continuous evolution (PACE). Thus it has two bioreactors (eVOLVER Smart Sleeves): one for a "host cell reservoir" and one for a "lagoon". It also has six pumps: four for bulk media in and out of the two Smart Sleeves and two for fine control over inducers into the lagoon.

However, base min-eVOLVER can be used for most continuous culture scenarios, such as turbidostat and chemostat. It can also be readily adapted to new experiments.

hashtag
Differences from Main eVOLVER

hashtag
Software-Hardware Architecture

The software architecture of the min-eVOLVER is similar to the , with the exceptions that:

  • The Raspberry Pi server has been replaced with a server run on the connected laptop

  • A single Arduino SAMD21 actuates all functions and collects vial data through the min-eVOLVER board

hashtag
Maximum Power Draw

  • Maximum current draw* = 2 Amps

  • Power supply voltage = 12V

  • Maximum power draw = 24W

*Maximum current draw was measured from a bench-top power supply with the heaters fully on, all pumps running, and stirring on. Instantaneous spikes in current could be higher when pumps and stirring start up

circle-exclamation

Especially if you plan to run multiple (>4) min-eVOLVERs off of one power strip, make sure you have a power strip that is rated for more than enough current. Most power strips are rated for 15A, but you should check.

original eVOLVER

Calibrations

hashtag
Overview

  • Calibrations are important for the eVOLVER to match its sensor inputs with its actuator outputs

  • The min-eVOLVER is not yet compatible with the normal eVOLVER GUI

  • Therefore, calibrations must be done manually (ie via recording of values and fitting of lines in excel)

circle-info

Each min-eVOLVER needs its own calibration files. These are kept inside of the server folder for each min-eVOLVER (ie in evolver-min/evolver/calibrations.json)

hashtag
Questions?

Ask about calibrations in the relevant category on the .

hashtag
Before Calibration

  1. Complete the page

  2. Gather materials (see below)

  3. Start cells for OD calibration the night before

circle-exclamation

Temperature calibration should be done before OD calibration because the OD sensors are effected by temperature. Calibrate OD at the temperature that you intend to run experiments. (For example 37C for bacteria and 30C for yeast)

hashtag
Materials

  • Glass eVOLVER vials (6X)

  • eVOLVER vial caps (6X)

  • Temperature probe (we use a )

hashtag
Temperature Calibration

hashtag
About

  • During temperature calibrations we will be setting the min-eVOLVER temperature to various 'raw' (uncalibrated) values

  • We will then measure the actual temperatures that the min-eVOLVER vials reach using a temperature probe

  • We then fit a line correlating the raw values to temperatures in degrees Celsius

hashtag
Procedure

  1. Make a copy of temperature_calibration.xlsx and label with the date.

    1. This can be found in /dpu/calibration/

circle-info

While waiting for equilibrations you can start calibrating pumps.

  1. Record the equilibrated temperature (in Celsius) in the space in the spread sheet for the correct vial

  2. Repeat steps 3 - 6 for the other three values

  3. Ideally the resulting plot will be linear, with little variation of the points from the line

hashtag
Pump Calibration

  1. Make a copy of pump_calibration.xlsx and label with the date.

    1. This can be found in /dpu/calibration/

  2. Fill a large beaker with water and submerge all pump input and outputs in the water

circle-info

If you need the pumps to stop before the time is up, send the command:

python3 send_command.py <port_number> pump 0

  1. Wait for the pump lines to fill

  2. Calibrate the fast (grey) pumps

    1. Leave fluidic inputs in water and put the outputs in eVOLVER vials

  1. Calibrate the slow (pink) pumps

  2. Leave the inputs in water and put the outputs in 1.5mL Eppendorf tubes

    1. It may be helpful to remove the plastic Luer lock on the tube end

hashtag
OD Calibration [Not for ePACE]

circle-exclamation

For running ePACE, OD calibration is required because S2060 cells have significantly different scattering properties while growing vs during stationary phase.

hashtag
About

  • OD calibration allows for the min-eVOLVER to accurately read ODs of the cells growing inside.

  • While not completely essential with running chemostats, good OD calibrations are essential for turbidostats to give accurate results.

circle-info

For ePACE in the min-eVOLVER, consider running calibration of the lagoon vial with 10mL volume for more accurate readings.

hashtag
Procedure

circle-exclamation

Make sure you have your on! This will drastically alter calibrations if you leave it off.

  1. Set the min-eVOLVER to the temperature your experiment will be at

    1. Open your temperature calibration file

    2. Change the temperature in the "Set to ( C )" field for each vial

circle-info

After changing which standards are being read, wait for the server to cycle a couple of times before recording values. Values are averaged and the values from the previous two OD standards could still be in the mix.

  1. Copy and paste the Standard (OD600) and Median Values for each vial into od_data.xlsx

    1. Do not include empty cells or change the formatting of od_data.xlsx

  1. Copy and paste the values output from sigmoid_fit.py in evolver-min/evolver/calibrations.json for the correct vial and correct min-eVOLVER

  1. Replace the values after "coefficients" (shown below)

    1. To avoid confusion, replace everything until the "raw"

Calibrate temperature before OD
20mL pipette or a small graduated cylinder
  • 200mL cells at OD600 > 2

  • Fill eVOLVER vials with 15-20mL of water, put in stir bars, and place in aluminum sleeves.
  • Turn on the min-eVOLVER and start the server as in setup.

  • In the dpu virtual environment, send the following temperature command to the min-eVOLVER using send_command.py:

    1. python3 send_command.py <port_number> temp 31000

  • Wait for the temperature to equilibrate (using a digital temperate probe)

  • Copy and paste the values under "Copy + Paste" in evolver-min/evolver/calibrations.json for the correct min-eVOLVER
    1. Replace the values and comma after "coefficients" (shown below)

    2. WARNING: do not alter the format of the calibrations.json file. Doing this, (accidentally adding an extra square bracket or comma for example) could easily give errors during experiments.

  • Fill the pump lines by sending the following pump command to the min-eVOLVER using send_command.py:

    1. python3 send_command.py <port_number> pump 30,30,30,30,300,300

  • Send the command:

    1. python3 send_command.py <port_number> pump 20,20,20,20,0,0

  • Measure the resulting water output (either using a 20mL autopipette or using a small graduated cylinder)

  • Input the values into the excel spreadsheet

  • If you see significant variability, make sure all inputs are in water and try again

  • Make sure that the tubing is still full (send another command if not)

  • Send the command:

    1. python3 send_command.py <port_number> pump 0,0,0,0,40,40

  • Measure the resulting water output (using a 1mL pipette)

  • Input the values into the excel spreadsheet (in mL)

  • Copy and paste the values under "Copy + Paste" in evolver-min/evolver/calibrations.json for the correct min-eVOLVER

    1. Replace the values after "coefficients" (shown below)

  • Copy and paste the command next to "Temperature command:" field. (Change to target your min-eVOLVER's port)

  • Follow the OD calibration tutorial for the main eVOLVER until it asks to begin calibration via GUI

    1. We will use this to make 8 standards, rather than 16

    2. This will be less vials to deal with

  • Heat OD standards to temperature

    1. Ideally, the vials will be stirring and continuously at the correct temperature

      1. Stirring because cells will settle otherwise

      2. At temperature because it effects the OD sensor

    2. However, the min-eVOLVER only has 2 vials, so we must find a way to make sure the vials are at temperature before reading the OD values

    3. We can either do this by

      1. Waiting for vials to come to temperature in the min-eVOLVER vials (slow)

      2. Keeping vials in an incubator until ready for reading (faster)

  • While OD standards are heating

    1. Make a copy of od_calibration.xlsx with the date

    2. Input the optical density of your standards into the Standard (OD600) cells

  • Make sure the od_led is set to 4095

    1. Either check the server cycling log or send the command:

      1. python3 send_command.py <port_number> od_led 4095

  • Record 3 server values for each OD standard

    1. Cycle through the standards in an orderly fashion

    2. For example:

      1. Label the vials 1 - 8

      2. Start with vial 1 in smart sleeve 1 and vial 2 in smart sleeve 2

      3. Then rotate so that vial 8 is in sleeve 1 and vial 1 is in sleeve 2

      4. Repeat for all standards

  • If you only have one min-eVOLVER you are calibrating, clear the rest of the rows of data to avoid confusion.

  • In a terminal in the dpu environment, install pandas using the command

    1. pip install pandas

  • Run the following script for fitting a sigmoid function to the curve:

    1. python3 sigmoid_fit.py

  • Evaluate the resulting curve fit in the window that pops up

  • forumarrow-up-right
    setup
    2 Probe Fisherbrand Traceable Hi-Accuracy Refrigerator Thermometerarrow-up-right
    growth curve
    vial cover
    Highlighted are the OD sensor values for the first and second vials respectively on a min-eVOLVER.
    Fitting curves to OD calibration data for two min-eVOLVERs. While there is some noise, standards generally follow the sigmoid function.

    OD Calibration via Growth Curve

    circle-exclamation

    You need to have finished before doing this step.

    hashtag
    Overview

    Make sure cells are suspended before reading values either through keeping in a shaking incubator or through pipetting or swirling

    circle-exclamation

    For running ePACE, this calibration is required because S2060 cells have significantly different scattering properties while growing vs during stationary phase.

    This alternative method of calibrating OD is to be used if experimental raw OD values repeatably follow a different function than calibration OD values. This means that the OD calibration cannot be fixed despite recalibration and attempting to get better OD blanks.

    hashtag
    Similarity to Experimental Conditions

    Using this protocol, we can get significantly closer to actual experimental conditions in our OD calibration compared to the normal calibration where we use cells in stationary phase resuspended in 1X PBS.

    We also turn off stirring for OD to get more stable OD readings. This is especially important in ePACE where the lagoon is only 10mL and thus the liquid line is very close to the OD sensor level.

    circle-info

    Consider reusing the same vial assembly between experiments to have the OD calibration conditions line up perfectly with the experimental conditions.

    hashtag
    Protocol

    1. Prepare actively growing cells of the type you want to calibrate

      1. If cells are in stationary phase when you start this protocol, dilute at least 1:100 and grow for several hours before using for inoculation

      2. This way your cells will be as close as possible to experimental physiology during calibration

    2. Load up the stir off for OD read conf.yml file

      1. If the server is running, stop it via Ctrl+C

      2. Overwrite the conf.yml file in the folder /evolver/evolver/ with the stir stop for OD conf.yml

    3. Start the

    4. Check that the min-eVOLVER is stirring and turning off during OD readings

    5. Set temperature to experimental temperature using and your

      1. A calibrated temperature command is in your calibration file temperature_calibration.xlsx

      2. Change the temperature in the "Set to ( C )" field for each vial

    6. Assemble two vials and place them inside of the Smart Sleeves

      1. Vials should mimic the experiment as closely as possible

      2. Use stir bars, caps, septa and needles if you will use them in your experiment

    7. [Optional] Hook up influx and efflux lines to vials for easy volume control

      1. Using ,

      2. Fill lines with bleach

    8. Fill vials with the media you will use for experimentation to the fluid levels you will use during experimentation

      1. For ePACE:

        1. Reservoir (left) vial = 30 mL

    9. Allow vials to come to temperature (wait at least 20 minutes)

      1. Temperature affects OD readings

    10. While vials are heating

      1. Make a copy of od_calibration_growth_curve.xlsx

        1. Rename with the date and type of calibration

    11. Make sure the od_led is set to 4095

      1. Either check the server cycling log or send the command:

        1. python3 send_command.py <port_number> od_led 4095

    12. Record a 'blank' value for media without cells using your external OD reader

      1. Record next to the cell MEDIA BLANK: in the upper left of the spreadsheet

    circle-info

    If using a 96-well plate reader, always use 300uL of sample in the wells to best mimic the optical path length of a cuvette reader.

    1. After temperature equilibrates, record 3 server values for the media without cells

    Highlighted are the OD sensor values for the first and second vials respectively on a min-eVOLVER.
    1. Inoculate with growing cells to a low OD - aim for OD < 0.05

    2. As cells grow, in 30 minute intervals:

      1. Record sets of 3 raw OD values from the min-eVOLVER server

      2. Simultaneously, sample the OD in vial using your external OD reader and record in the External OD column

        1. For plate readers, 300uL of sample should be used

        2. Samples above OD600 about 0.6 should be diluted before reading

        3. Alter dilution factor in the spreadsheet to account for any dilutions you did

      3. Collect OD values to at least OD600 of 1.0

    3. Copy and paste the Standard (OD600) and Median Values for each vial into od_data.xlsx

      1. Do not include empty cells or change the formatting of od_data.xlsx

    4. In a terminal in the dpu environment, install pandas using the command

      1. pip install pandas

    5. Run the following script for fitting a sigmoid function to the curve:

      1. python3 sigmoid_fit.py

    6. Evaluate the resulting curve fit in the window that pops up

    Fitting curves to OD calibration data for two min-eVOLVERs. While there is some noise, standards generally follow the sigmoid function.
    1. Copy and paste the values output from sigmoid_fit.py in evolver-min/evolver/calibrations.json for the correct vial and correct min-eVOLVER

    1. Replace the values after "coefficients" (shown below)

      1. To avoid confusion, replace everything until the "raw"

    temperature calibration

    min-eVOLVER

    hashtag
    Overview

    The min-eVOLVER is a minimal, mini version of the main eVOLVER. It runs in the same software ecosystem with minimal changes to the code. However, the min-eVOLVER controls two eVOLVER Smart Sleeves and six pumps, making it simpler, smaller, and less costly.

    circle-exclamation

    Currently the min-eVOLVER does not use the eVOLVER GUI. All experiments must be started with the command line. Sending commands without an experiment is done through send_command.py.

    hashtag
    Questions or Comments?

    If you have questions not answered by the wiki please ask in the relevant min-eVOLVER category on the forumarrow-up-right.

    min-eVOLVER set up for a basic turbidostat on both vials.
    Location here: /evolver/evolver/alternate_conf_files/stir_off_for_od_read/conf.yml
  • Edit the port and serial_port variables to the correct values for this min-eVOLVER

  • Copy and paste the command next to "Temperature command:" field. (Change to target your min-eVOLVER's port)

    For ePACE guide see here
    Wait 30 minutes for sterilization
  • Flush bleach 3 times through with media

  • Hook up lines to vial cap - for ePACE guide see here

  • Lagoon (right) vial = 10 mL
  • Other experiments: most likely 25 mL in both vials

  • For example: od_calibration_growth_curve_250101.xlsx

  • Input the optical density of your standards into the Standard (OD600) cells

  • Replace any volume you remove via sampling, either through pumping or manually pipetting back in. This is especially important for the 10mL lagoon used in ePACE.
    If you only have one min-eVOLVER you are calibrating, clear the rest of the rows of data to avoid confusion.
    server
    send_command.py
    temperature calibration spreadsheet
    send_command.py

    min-eVOLVER Construction

    hashtag
    Purchasing a Unit

    min-eVOLVERs may not be purchased as a product at this time. Instead min-eVOLVER parts must be acquired individually and assembled.

    min-eVOLVER parts laid out

    hashtag
    Requirements for Construction

    1. Soldering iron + solder - pumps will need to be soldered in place

    2. Ability to through-hole solder

      1. Can be self-taught quickly through YouTube videos

    hashtag
    Questions About min-eVOLVER Construction or Hardware?

    Ask questions on the forum .

    Parts

    hashtag
    Parts Spreadsheet

    Below is a spreadsheet containing all parts required to make a min-eVOLVER.

    circle-exclamation
    1. Read the notes below the spreadsheet as well.

    2. Don't miss the "Consumables / General" tab. These items also need to be acquired before running experiments.

    hashtag
    min-eVOLVER PCB

    If you are making a min-eVOLVER Control Board PCB from scratch you have two options (as of 11/20/2024):

    1. [Recommended] Order an assembled PCB from (guide below) or another manufacturer

    2. Buy the parts needed from Digikey, order the from or another manufacturer, and solder the board yourself

      1. NOT recommended for anyone not already familiar with surface mount soldering.

    hashtag
    Ordering an Assembled min-eVOLVER PCB from PCBway

    1. Make an account on .

    2. On the homepage, scroll down and click on PCB assembly

    1. Choose the following:

      1. Turnkey, Single pieces, Both sides, fill out the quantity you want, select No "Select PCBway's PCB Order #", uncheck PCB Specifications, and click the green 'Calculate' button.

    1. Download the following files from folder, upload to PCBway, and click "Submit the File Now":

      1. Gerber files:

      2. Parts List (BOM):

    1. Wait for PCBway to review your order (1-2 business days) before paying

    hashtag
    Pump PCB

    Should be ordered from or another manufacturer. You can find the .zip of the gerber files . Assembly is not needed.

    hashtag
    min-eVOLVER Case

    Options:

    1. We use to manufacture the cases

      1. Request a quote for the number of cases you require by emailing Jenn Hurd (jhurd@protocase.com)

      2. Mention you want to order the previously ordered name and number below:

    hashtag
    12V Power Supply

    Several 12V power supplies were tested and were selected for reliability and low noise. While most 12V power supplies should work well in the short term, long term usage may vary. Use a different power supply at your own risk.

    hashtag
    Vial Cover

    NOT AN OPTIONAL COMPONENT - Protects OD photodiodes from environmental light, which will completely change your OD calibrations. Also protects smart sleeves from spills and splashes.

    3D print the latest vial cover to allow for more consistent OD readings. Choose the cheapest black FDM printing on hubs.com, shapeways.com, or a local 3D printing shop and give them the .stl file in the github repository.

    hashtag
    eVOLVER Smart Sleeves

    May be purchased from Fynch Bio. If interested in making your own see the main and follow assembly guide. This is not recommended for its added complication (you will need to machine the aluminum tube for example), but will save money.

    hashtag
    Consumables / General

    Listed in the "Consumables / General" sheet of the above spreadsheet

    • Anything not listed as (Optional) is required for a full experiment.

    • You need a thermometer for calibrating temperature - we suggest one.

    • If you plan to run multiple min-eVOLVERs from a computer, you will need to have a USB port available for each one. You can use a USB splitter dongle to accomplish this. Example .

    Software Installation and Startup

    hashtag
    Questions?

    Ask questions about this guide on the forum herearrow-up-right.

    circle-info

    As with the main eVOLVER, you should have a dedicated computer to run min-eVOLVER. We recommend Macs for their stability and ease software of installation.

    hashtag
    Software Installation

    1. Download files from GitHub repositories for the (experiment code) and (communicator with min-eVOLVER).

    1. Follow the dpu installation .

      1. We will use the virtual environment made here to run the experiment

      2. Note: as of now, there is no GUI integration. Command line only.

    circle-info

    If you are setting up more than one min-eVOLVER, simply make an additional folder and label it something like evolver-min2. No need to make an additional virtual environment. Any time you need to start a server just use the one you made in the first server folder.

    hashtag
    Server Startup

    circle-info

    Optional: for more information about the eVOLVER server you can check .

    circle-info

    If using more than one min-eVOLVER, check the at the bottom of this page

    1. Plug the min-eVOLVER in to your computer using micro-USB and THEN plug it in to the 12V DC power supply.

    circle-info

    Plugging in the 12V first may make the server not able to connect properly.

    circle-exclamation

    Whenever possible, avoid plugging / unplugging the min-eVOLVER micro-USB, which is fragile. Instead, leave the micro-USB plugged in and plug / unplug the regular USB to your computer.

    1. Make sure that you are in the server virtual environment

    2. This means navigating to the server folder in a command line window and inputting commands:

      1. Mac OS:

    circle-info

    Hereafter, only the Mac OS command will be given. Windows users, swap python3 with py.

    1. This will tell you the list of min-eVOLVERs plugged in to the computer

    2. Exit from the server log using control + C

    3. Copy the full port address into the serial_port variable in the conf.yml

    circle-exclamation

    Be careful to not alter the conf.yml file structure, only the variables (after the ":"). Changing the file structure in the wrong way will result in the server failing to run.

    1. Start the server using python3 evolver.py

    2. Observe the server for expected behavior

      1. The server cycles once every 20 seconds

    circle-info

    If you want to know more about the server code or how commands work click .

    hashtag
    Multiple min-eVOLVERs

    You can connect multiple min-eVOLVERs to one computer, as long as you have enough USB ports!

    1. Make a duplicate min-eVOLVER server code file with a new number ie evolver-min2

    2. Plug in the new min-eVOLVER and follow the Server Startup guide

      1. The new min-eVOLVER will have a different serial_port

    circle-exclamation

    Make sure you don't swap your min-eVOLVERs USB ports without meaning to!

    • Calibration files are for a specific min-eVOLVER

    hashtag
    Test min-eV Hardware

    hashtag
    Startup

    1. Plug in the micro-USB and then the 12V power supply

    2. Start the server

    3. In another terminal window, enter the dpu virtual environment

    hashtag
    Familiarize yourself with and make sure you can:

    1. Send a pump command to all pumps to make sure they actuate

    2. Send a command to start and stop stirring

    3. Turn temperature off

    hashtag
    test_hardware.py

    1. Run a full hardware test using test_hardware.py

    2. Use the command: python3 test_hardware.py

    1. Check that all pumps actuate individually

    2. Check that stirring turns off and on

    3. Check that OD sensing works as expected (values decrease with OD LED on)

    Construction Protocol

    It may be helpful to have the parts page open as well, so you can identify what you need for each step.

    hashtag
    Make Ribbon Cables

    (A) Ribbon cable connector placed at 5" with both knobs on the same side (arrows). (B) Align the ribbon cable connector with the end of the cable. (C) Connector is placed in center of clamp. (D) Completed ribbon cable after connector is crimped on.
    1. Measure ribbon cables and mark length (figure above A)

      1. 5" ribbon cable for pump board to min-eVOLVER PCB connection

      2. Two 4" ribbon cables for smart sleeve PCB to min-eVOLVER PCB connection

    2. Cut ribbon cables to size using scissors or razor.

    3. Open the connector and align to the end of the ribbon cable (figure above B)

      1. The connectors should both have the knob on the same side (figure above A, red arrows)

      2. You can apply pressure to the connector so that it stays in place as you work with it

    4. Crimp on ribbon cable connectors (one on each side of cable)

      1. Be careful not to break the connectors, they're fragile!

      2. The easiest way crimp these connectors is to use a clamp or vice (figure above C), unless you have a specialized tool

    hashtag
    Prepare case

    1. Unscrew the 3 screws on the top of the case (figure below, left)

    2. Unscrew the 2 screws on the bottom (figure below, right) and unscrew the right middle rubber foot (yellow arrow)

    hashtag
    Construct Pump Board

    Solder 2x8 ribbon cable connector into pump PCB, screw pumps into front of case, and solder pumps into pump PCB.

    Use the below video:

    hashtag
    Construct min-eVOLVER PCB

    circle-info

    Surface mount soldering of the min-eVOLVER PCB is outside of the scope of this guide. It is assumed that you have an already assembled min-eVOLVER PCB.

    hashtag
    Solder SAMD21 Arduino

    1. Place the 2x12-pin header on a workbench with the flat (non conical) side of the pins up (figure below A). Place the SAMD21 board on top of it

      1. You can also carefully plug the SAMD21 into a breadboard if you want to avoid it moving

    2. Carefully solder the SAMD21 board pins.

    hashtag
    Assemble min-eVOLVER PCB

    1. Press the SAMD21 board into the min-eVOLVER PCB until you feel a click and the SAMD21 sits mostly flush

      1. Micro-USB port should be on edge of board

      2. Carefully align the pins with the sockets

    hashtag
    OD 90 vs OD 135

    1. OD90 = OD LED and photodiode at 90 degrees from eachother

    2. OD135 = OD LED and photodiode at 135 degrees from eachother

    3. By default, we choose to use OD90 for our vials, which is typically better at measuring higher ODs > 0.4 and is what most people want

    hashtag
    Assemble min-eVOLVER PCB and pumps with the case

    1. Place min-eVOLVER PCB on standoffs. Screw 1/4" screws into the front left and back right corners (figure A below)

    2. Plug the 5" ribbon cable in to the pumps and to the ribbon cable port to the left of the SAMD21 (figure B below)

    3. Close the case and replace the 5 screws and rubber foot that you had removed previously (figure C below)

    hashtag
    Construct eVOLVER smart sleeves and screw in to case

    1. If your smart sleeves came disassembled:

      1. See general smart sleeve construction guide

      2. Firmly push the OD LED and photodiodes in to the smart sleeve

    hashtag
    Flash the min-eVOLVER with Arduino code

    1. Plug the min-eVOLVER into your computer via the micro-USB cable

      1. Do not plug in the 12V power supply

    2. Download the min-eVOLVER Arduino

    Screw drivers

    1. Phillips #1 (short handle)

    2. Flat head #1.5 or smaller

  • Ideally, some kind of clamp, vice grip, etc.

    1. For making ribbon cables to connect the electronics

    2. If nothing else, a hammer or pair of pliers will suffice

  • herearrow-up-right

    An interactive bill of materials (for part placement) can be found herearrow-up-right. Download it and open it into your browser.

    Centroid File: PCBWAY-min-eV-positions-centroid.csvarrow-up-right

    Boston University min-eV Case Rev2.1 T120324039-205634-1

  • For other manufacturers, give them the .x_t, .easm, and .step files found herearrow-up-right

    1. Request sheet metal construction out of 18 gauge steel, ideally a powder coated exterior

  • PCBWayarrow-up-right
    PCBarrow-up-right
    PCBWayarrow-up-right
    PCBWayarrow-up-right
    thisarrow-up-right
    min-eV-gerbers_240731.ziparrow-up-right
    BOM_PCBWay.xlsxarrow-up-right
    PCBWayarrow-up-right
    herearrow-up-right
    Protocasearrow-up-right
    parts sheet
    this
    thisarrow-up-right
    herearrow-up-right
    The parts necessary for the min-eVOLVER main unit. Use the spreadsheet above to discern what each item is.

    Create a server virtual environment

    1. In the command line still, open a new tab or window

    2. If necessary, deactivate the dpu virtual environment with the command below.

      1. deactivate

    3. Navigate to the server directory evolver-min

    4. Make a server virtual environment

      1. To avoid confusion with the dpu environment, call your server virtual environment server-env

      Mac:

      python3.9 -m venv server-env

    5. Use poetry to install all necessary dependencies.

    source server-env/bin/activate
  • On Windows PowerShell:

    server-env\Scripts\Activate.ps1

  • Navigate to the /evolver/ folder inside the evolver-min server code

  • Attempt to run the server using the following command:

    1. Mac OS: python3 evolver.py

    2. Windows Powershell: py evolver.py

  • file for the server
    1. On Mac OS for example: serial_port: /dev/cu.usbmodem1301

    If the server is not connected to the min-eVOLVER, commands will fail

    because it is plugged in to a different USB port
  • You need to define a different port number (try 5556) in the conf.yml file

  • Make sure you're in the right server code folder when starting the new server

  • Use a different command line window for each min-eVOLVER server

  • serial_port numbers on your computer are linked to a specific USB port, NOT to a specific min-eVOLVER
  • So for example:

    • min-eVOLVER 1 with serial_port: /dev/cu.usbmodem1201

    • min-eVOLVER 2 with serial_port: /dev/cu.usbmodem1301

    • Plugging min-eVOLVER 2 into /dev/cu.usbmodem1201 will mean that running the min-eVOLVER 1 server will load calibrations for the wrong min-eVOLVER and vice versa

  • Navigate to the /dpu/experiment/ folder

    Check the server log as commands go in, these should be received and become the new values in the server cycle

    Look at the "Data from min-eVOLVER" for the below values

  • Example values with OD LED OFF: 'od_90': ['65208', '65190']

  • Example values with OD LED ON: 'od_90': ['62515', '59678']

  • Check to see that the temperature values decreased towards [25000,25000] over time as the script is running

    1. Example start values: 'temp': ['35514', '35440']

    2. Example end values: 'temp': ['30618', '31029']

  • dpuarrow-up-right
    serverarrow-up-right
    guide
    here
    note
    here
    send_command.py
    Make sure you are on the 'min' branch (upper left) and click the code button to download the .zip file for the code
    An example min-eVOLVER server readout.
    An example data output from the min-eVOLVER, soon after it has been turned on. This same data can be found continuously in the server window.

    Place the connector in the center of the clamp (making sure it remains in the right location)

  • Tighten clamp until sides of connector are flush and it is full closed (figure above D)

  • You can also use pliers, but this is more annoying / prone to breaking the connectors

  • Avoid adding too much solder so that it globs onto the small electronic components!

  • Start with the four corners to lock it flat in place on the header

  • Solder all pins

    1. If you want to be extra careful, only solder half the pins on a side before switching to the other side (to avoid overheating the board)

  • Make sure that each pin is individual and no solder has reached the electronic components on the board surface

  • [Recommended] Strengthen SAMD21 Board USB

    1. The micro-USB port on the SAMD21 easily pops off when you move the ribbon cable

    2. You will have a useless board and it will be necessary to get a new one

    3. Therefore, you should add to the perimeter of the connector in the (locations shown in the figure below C)

    4. Follow directions on the epoxy label for use

    5. Use gloves when working with epoxy!

    6. A weigh boat and pipette tip work for mixing and application

    7. Important - Avoid putting epoxy into the holes in the micro-USB connector

    8. Otherwise, be generous with the epoxy, it's ok to get it on the electronics

  • Slide the shorting jumpers onto the right two pins for each vial (see figure above D)

    You can also place the jumper across the left two pins for each vial, meaning you will register OD135.

  • You will need to make different OD calibrations for OD135 and OD90

  • Do not use the acrylic base plate (clear plastic below the computer fan)

  • If your smart sleeves came assembled:

    1. Unscrew them enough to remove the acrylic base plate. Keep the fan spacer on (figure A below)

    2. We will also not use the acrylic base plate and instead directly screw our smart sleeves to the case

  • Screw the smart sleeves into the min-eVOLVER (figure B below)

    1. It can be easier to tighten each screw a little at a time to avoid misalignment

    2. Do not over tighten screws, go until smart sleeves are firmly in place

  • Plug 3.5" ribbon cables into back of smart sleeves and to the min-eVOLVER (figure C below)

  • Place vial cover over vials (figure D below)

  • Follow the Arduino Software Installation guide

  • Upload the min-eVOLVER Arduino code onto the device

  • here
    codearrow-up-right
    (Left) Remove 3 screws from the top of the case. (Right) Unscrew the 2 screws on the bottom and twist off the right middle rubber foot (yellow arrow).
    (A) The SAMD21 board and the 2x12-pin header with flat side of the 24-pins up. (B) SAMD21 board partially soldered, starting from the pins in the corners. (C) Locations for epoxy (cyan) avoiding openings in the micro-USB connector. (D) Placing the jumpers on the right two selector pins for each vial. (E) The assembled min-eVOLVER PCB.
    (A) min-eVOLVER on standoffs inside case and screwed down with 1/4" screws. (B) Demonstrating how the ribbon cable connecting pumps and min-eVOLVER PCB should be plugged in. (C) Assembled min-eVOLVER PCB, pumps, and case.
    (A) Screws unscrewed enough to remove the base plate, which is sitting next to the vial. Fan spacer on the bottom is left on. (B) Smart sleeves are screwed in to the case. (C) Smart sleeves are connected to the case via 3.5" ribbon cables. (D) Vial cover is placed over vials.

    Troubleshooting

    hashtag
    Server Troubleshooting

    hashtag
    My min-eVOLVER is plugged in but I can't connect to it via the server code

    • If the server code says that the expected min-eVOLVER port is plugged in, check that the conf.yml file has the correct port address in it (as detailed in the ).

    • As a last resort, the Arduino

    hashtag
    The server is cycling (every ~20 seconds there are new values) but all commands are erroring

    • This happens when the micro-USB is unplugged and replugged in, but the power supply is not

    • Quit the server (ctrl+C), unplug the min-eVOLVER from power and micro-USB, plug the micro-USB back in, then the power supply, and restart the server

    • As a last resort, the Arduino

    hashtag
    Correct 'serial_port' but Server is Not Starting

    I have found this happens when the Arduino IDE program (used for putting min-eVOLVER code on the control board) Serial Monitor is open and connected to the SAMD21. Close the Serial Monitor and you will be able to start the server.

    hashtag
    Re-Upload the Arduino Code

    Rarely, the Arduino that runs the min-eVOLVER needs to be uploaded with its software again. Follow the Arduino Software Installation and upload the min-eVOLVER Arduino onto the device.

    hashtag
    Experiment Troubleshooting

    hashtag
    Disconnecting During an Experiment

    The most common reason for this is the computer is falling asleep. Make sure your computer is set to not fall asleep.

    circle-info

    If your computer is managed by an IT department, they will sometimes control these settings remotely. Therefore, you will set your computer to never sleep, but will come back with the setting changed. In this case, contact your IT department.

    On Mac: Alternatively, you can type the command caffeinate into a terminal window and your computer will never sleep

    hashtag
    Parameters

    hashtag
    OD

    OD is one of the most useful and most challenging aspects of eVOLVER. However the min-eVOLVER OD system is nearly the same as the main eVOLVER. Check the main OD troubleshooting for potential causes and fixes.

    ePACE with min-eVOLVER

    hashtag
    Overview

    This page only details differences from the general min-eVOLVER experimental protocol. You are also expected to have an understanding of PACE and how it is normally run before doing ePACE.

    circle-info
    • ePACE described initially in.

    • For general PACE methods see .

    circle-exclamation

    For running ePACE, OD calibration via is required because S2060 cells have significantly different scattering properties while growing vs during stationary phase.

    hashtag
    Implementing Controlled Host Cell Density in Reservoirs

    circle-info

    This section constitutes changes from .

    hashtag
    Problem: PACE host cells overgrow

    • In previous PACE experiments, host cells would increase growth rate as the experiment wore on

    • This caused problems with phage replication in the lagoon and the selection plasmid breaking

    • Solution: controlling host cell density in cell reservoirs

    hashtag
    Implementing Controlled Host Cell Density in Reservoirs

    • We control cell density in eVOLVER by running a turbidostat, which checks cell density and dilutes the culture if it is over a threshold.

    • In PACE we remove volume from the cell reservoir and transfer it to the lagoon

      • This changes our turbidostat's volume

    hashtag
    Chemostat and Turbidostat on the Same Vial

    • We implement a "hybrid" function

    • The "hybrid" function uses both a turbidostat and a chemostat on the host cell reservoir

    • Turbidostat for keeping the cells from overgrowing

    Experiment Setup

    hashtag
    Vial Setup

    circle-info

    Levels of liquid in the vials are set by the height of the efflux needle.

    Needles used were all 16ga

    Reservoir volume = 30 mL

    • Efflux needle = 3" needle in the tallest vial cap port

    • Media in = 2" needle in the shortest port

    • Vial to Vial = 3" needle in the second tallest port

    Lagoon volume = 10 mL

    • Efflux needle = 4" needle in the second tallest vial cap port

    • Vial to Vial = 3" needle in the lowest port

    • Inducer = 4" needle in the tallest port or 2" needle in the second lowest

    circle-info

    To have high accuracy when using the low volume pumps it is important to avoid individual drops. Therefore we want needles to abut inside of the vials to get a constant stream of fluid when pumping.

    hashtag
    Fluidic Lines

    Hook up pump lines in the configuration shown below

    hashtag
    Alter Settings in custom_script.py

    1. Copy the whole ePACE template folder (/dpu/experiment/epace-template/)

    2. Rename the copied folder to your experiment name

    3. Change the EVOLVER_PORT to your eVOLVER's port

    hashtag
    lower_thresh and upper thresh

    • The lower and upper OD threshold of the turbidostat that is running on the reservoir vial

    • Format: [vial 0, vial 1]

    hashtag
    start_time

    • chemostats will not pump until this amount of hours has elapsed

    • Useful to allow cells in reservoir to grow up before starting experiment

    hashtag
    rate_config

    • Format: rate_config = [reservoir, lagoon]

    • In vial volumes per hour (V/h)

    hashtag
    For the Reservoir

    • Replaces volume in turbidostat that is removed via vial to vial

    • Must be greater than the volume you are taking out

    • Turbidostat controls will separately preventing reservoir from increasing in OD too much

    hashtag
    For the Lagoon

    • Set based off of phage replication rate

    hashtag
    Example Settings:

    1. If you have a 30mL reservoir and 10mL lagoon

    2. Setting to rate_config = [1, 1]

      1. 30mL media into reservoir and 10mL from reservoir into lagoon per hour

    hashtag
    Inducer

    inducer_on

    • Turn inducer off to start (inducer_on = False)

    • Wait for host cells to grow up before starting induction (inducer_on = True) and inoculating with phage

    inducer_concentration

    • Times greater (X) the concentration of your inducer in its bottle compared to its final concentration in the lagoon

    • Format [pump 5, pump 6]

    hashtag
    For example:

    1. Your arabinose stock is 1 M

    2. The final lagoon concentration you want is 10 mM

    3. Therefore 1000 mM / 10 mM = 100 X your final concentration

    hashtag
    Optional Settings

    You do not need to alter these settings

    hashtag
    Swapping Lagoon and Reservoir Vials

    If you do want to alter these variables, you also need to swap the vial locations in the turbidostat and chemostat settings of:

    • lower_thresh and upper thresh

    • rate_config

    hashtag
    reservoir_vial

    • Vial number of host cell reservoir

    • It is a turbidostat and a chemostat. Read why .

    hashtag
    lagoon_vial

    • Vial number of lagoon

    • Only a chemostat, can have up to two inducers

    Starting an Experiment

    circle-exclamation

    You should have completed both setup and calibrations before proceeding to an experiment.

    circle-info

    Highly recommended:

    1. Read the main pages for helpful information not listed here and an example experimental workflow.

    2. Run an experiment with water before doing so with cells, especially if you change the code

    hashtag
    Questions?

    Ask about experiments in the relevant category on the .

    hashtag
    Setup

    circle-info

    You will have one command line window for each server and each experiment running. It can also be helpful to have a separate window for send_commands.py

    For example for two min-eVOLVER experiments:

    • 2 server windows (server environment)

      1. Use send_command.py to fill the vials to appropriate volumes

    circle-exclamation

    Do not inoculate cells until after starting the experiment if you want accurate readings. There is innate variability in the OD of the vials (among other things) and we will blank to your vials during experiment start.

    1. Use send_command.py to set to correct temperature

      1. A calibrated temperature command is in your calibration file temperature_calibration.xlsx

    hashtag
    Running the Experiment

    circle-exclamation

    Make sure that your eVOLVER computer is set to never sleep. If your computer falls asleep while you're running an experiment, you will not be collecting data during that time. See more info .

    In a separate window from your server command line, follow the command line start .

    1. If running more than one min-eVOLVER at a time: you need a separate experiment folder and command line window for each min-eVOLVER (and different port number)

    2. Start the experiment using the command:

      1. python3 eVOLVER.py -i localhost:<your_min-eV_port>

    hashtag
    Ending an Experiment

    1. the experiment

    2. Data is in the

    send_command.py

    hashtag
    About

    Used to send arbitrary commands to a server outside of both the GUI and an experiment.

    Useful for:

    1. Controlling the

    2. Sending custom commands if you have

    3. Sending pump commands greater than 20 seconds if you are using the slow (~1mL/min) pumps or using

    hashtag
    Usage

    circle-exclamation

    You must

    1. Start the before using send_command.py, otherwise commands will not go through.

    hashtag
    Send a Command

    The <port> variable tells the program which eVOLVER to connect to

    1. This is designated in the conf.yml file of the eVOLVER under 'port'

    2. It is arbitrary, but we can choose something like 5555

    hashtag
    Commands in the Server Log

    When you send a command, you should see it come up in the window you're running the server in. See for more information about the eVOLVER server and commands.

    hashtag
    Annotated Server Log as a Command Comes in

    hashtag
    Examples

    hashtag
    To set a parameter on all vials to one value: python3 send_command.py

    hashtag
    To run specific pumps (where s is a number of seconds):

    python3 send_command.py 5555 pump s,s,s,s,s,s

    For example:

    python3 send_command.py 5555 pump 0,0,0,0,5,5

    hashtag
    To set a non-pump parameter on specific vials:

    python3 send_command.py <port> <parameter> <list_of_values>

    For example:

    python3 send_command.py 5555 temp 30000,31000

    Fluidics Setup

    hashtag
    Info

    More about pumps here.

    More about tubing and connectors here.

    hashtag
    Protocol

    hashtag

    hashtag

    hashtag
    Fit tubing to your application

    hashtag
    General Notes

    1. If you are doing ePACE in the min-eVOLVER, check the experiment for fluidic routing

    2. Make sure it's easy to get both tube ends into a beaker for sterilization

    3. Alternatively you can connect an additional line to short tubing for easy sterilization

    hashtag
    To-Vial Tubing Method (Right Port of All Pumps)

    1. Start with tubing that is longer than you think you will need - you can trim it later easily

    2. Put eVOLVER vials with caps in the smart sleeves

    3. Estimate the tubing lengths for the to-vial pump tubing

    hashtag
    Efflux (Pumps 1 + 2 Right Port)

    1. Use clear blue 1/16" ID tubing

    2. Can be relatively short because it connects just to the vial

    hashtag
    Waste (Pumps 1 + 2 Left Port)

    1. Use red 1/16" ID tubing

    2. Should reach from left port of bottom pumps into waste carboy

    hashtag
    Media influx + Inducers (Pumps 3 - 6)

    1. Use clear 1/16" ID tubing

    2. Left pump port should be long enough to reach media / inducers easily

    3. Right pump port can be relatively short because it connects just to the vial

    Reusing vial assembly between experiments

    hashtag
    Overview

    Advantages:

    • Saves time from assembling, autoclaving, and setting up new vials

    Avoids vial to vial variation

    • Using the same vial in your OD calibration and all experiments makes OD more accurate

    hashtag
    Questions

    Do you sterilize the septa before each needle insertion?

    hashtag
    Materials

    • Vials set up for ePACE

      • Including septa

    • 20% bleach in an eVOLVER bottle

    • Sterile DI water (or Milli Q water) in an eVOLVER bottle

    • 4 inch needle

    • 50mL syringe

    hashtag
    Protocol

    hashtag
    Considerations

    1. Be cautious about over filling

    2. Stir should be on to properly mix liquids

      1. Stir pausing is fine

    3. Number of seconds pumped in pump commands are for a 30mL reservoir and 10mL lagoon. If you change these volumes, make sure to define your own number of seconds pumped.

    4. As always, any spills on the min-eVOLVER should be immediately cleaned

      1. If you think something got on an electronic part, unplug the min-eVOLVER, wipe, and allow to dry

    hashtag
    Sterilization

    circle-info

    20% bleach is used because otherwise it would require a lot more volume to be pumped before bleach concentration was high enough

    1. Hook up 20% bleach bottle to influx

    2. Dilute cultures with bleach - run fast pumps for 80 seconds and slow pumps for 300 seconds

      1. python3 send_command.py 5555 pump 80,80,80,80,300,300

    3. Fill both reservoir and lagoon with bleach over efflux line

      1. Remove vials from Smart Sleeves to keep an eye on fluid levels

      2. python3 send_command.py 5555 pump 0,0,20,15,0,0

    4. Check fluid levels

    5. Ensure all tubing is filled with bleach

    6. Sterilize at least 30 minutes

    7. Do not allow bleach to sit in vials for more than a day

      1. Use the below protocol to replace bleach with sterile DI water

    hashtag
    Remove Bleach

    1. Unhook tubing from bleach bottle

    2. Clear bleach from tubing and pump bleach to efflux line in vials

      1. python3 send_command.py 5555 pump 20,40,20,20,300,300

    3. Remove bleach from vials

      1. Insert a 4 inch needle and 50mL syringe through the sampling port

      2. Try and get almost all of the bleach

      3. Avoid scratching your vial with the needle as this can change the OD calibration

    4. Hook up sterile DI water bottle to influx

    5. Fill both reservoir and lagoon with sterile DI water over efflux line

      1. python3 send_command.py 5555 pump 0,0,70,60,0,0

      2. Remove vials from Smart Sleeves to keep an eye on fluid levels

    6. Dilute residual bleach

      1. python3 send_command.py 5555 pump 80,80,80,80,300,300

    7. Vials can now be safely stored for more than one day without bleach corrosion

    hashtag
    Prep Vials for Experiment

    1. Day of the experiment, sterilize with bleach again via the above protocol

    2. Sterilize septa at sampling port

      1. Using a pipette, place a single drop of bleach on the septa through the sampling port and allow to sterilize during vial bleaching before experiment

      2. Avoid adding too much bleach as it will run down the sides of the vial and change the OD calibration

    3. Flush vial with sterile media using the Remove Bleach protocol

    4. Follow experiment setup

    The amount we dilute will therefore be incorrect (adding 5mL of media to 30mL decreases OD less than adding 5mL of media to 20mL)

  • We rely on host cells to get to a threshold cell density before we dilute

  • They may not reach this threshold before we remove more volume

  • This causes a feedback loop of little volume being added and more being taken out

  • Therefore our turbidostat will get lower and lower volume and eventually break

  • Solution: put in the amount of volume we take out of the cell reservoir

  • Chemostat for keeping volume constant
    Huang, Heins et al. 2022 Nature Biotecharrow-up-right
    Miller, Wang 2020 Nature Protocolsarrow-up-right
    growth curve
    Huang, Heins et al. 2022 Nature Biotecharrow-up-right
    setup
    reupload
    codearrow-up-right
    reupload
    codearrow-up-right
    guide
    codearrow-up-right
    page
    An example error thrown when the server is running but isn't getting responses from the min-eVOLVER.

    Alter USER DEFINED VARIABLES using the guide below:

    Do not set too high or your cells will be unable to grow fast enough and wash out

    Setting to rate_config = [0.4, 1.2]

    1. If we set lagoon rate to 1.2 V/h, we should not set reservoir rate to lower than 0.4 V/h to avoid draining the reservoir

    2. 1.2 V/h * 10mL = 12mL/h into lagoon

    3. 0.4 V/h * 30mL = 12mLh into reservoir

    If you are not using another inducer,
    inducer_concentration
    = [100, 0]
    here
    Vials set up for reservoir (left) and lagoon (right).
    ePACE user defined variables as of 2023-11-20

    Instead of the GUI, use send_command.py

  • The slow pumps (pink) will need to be run for >200 seconds to fully flush the lines

  • 2 experiment windows (dpu environment)

  • 1send_commands.py window (dpu environment)

  • Temperature affects OD readings and we need a good initial OD to act as a "blank"
  • Allow min-eVOLVER to come to temperature

  • python3 eVOLVER.py -i localhost:5555

    Experiment
    forumarrow-up-right
    Prepare vials
    Start the server
    Sterilize the fluidic lines
    Load the vials
    here
    guide
    Clean up
    data files
    An example fluidics layout for basic chemostat or turbidostat. If necessary, inducer can be programmed to be controlled via the low flow-rate pumps (not shown).
    Vials set up for a basic chemostat or turbidostat.

    Feel free to modify any tubing colors, pump functions (requires some coding), or anything else, so that it makes sense to you

    Plug in 1/16" male connector to luer lock on vial cap (or end of needle if you are using those style caps)

  • Put tubing onto the connector barb

  • Estimate tubing length so that it is comfortable to move the vial in and out of the smart sleeves with the tube attached to the cap (right figure below)

  • Make media bottles with connectors
    Set up the waste carboy
    page
    (Left) Numbered pumps with the tubing required for a basic turbidostat. (Right) Tubing is short, but still has enough length to take out the vial while still connected.
    source server-env/bin/activate

    Windows PowerShell:

    py -3.9 -m venv server-env

    server-env\Scripts\Activate.ps1

    In another terminal window, enter into the dpu virtual environment and navigate to the folder send_command.py is in: /dpu/experiment/
    min-eVOLVER
    added an experimental parameterarrow-up-right
    IPPs
    server
    here
    poetry install
    python3 send_command.py <port> <parameter> <value>
    Connected dpu as server    # Connection to the send_command.py script
    Received COMMAND           # Command received the send_command.py script
    stiri,0,0,_!               # Stir command, each vial is turned off
    Disconnected dpu as Server
    stire,0,0,end              # Response from the min-eVOLVER board. It got the command 
    stira,,,_!                 # The server tells the min-eV board it can run the command
    For example, to turn stirring ON:
    python3 send_command.py 5555 stir 11
    
    Stirring OFF:
    python3 send_command.py 5555 stir 0
    
    Temperature OFF:
    python3 send_command.py 5555 temp 64000
    epoxyarrow-up-right