All pages
Powered by GitBook
1 of 15

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

min-eVOLVER Construction

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

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

  3. Screw drivers

    1. Phillips #1 (short handle)

    2. Flat head #1.5 or smaller

  4. 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

Questions About min-eVOLVER Construction or Hardware?

Ask questions on the forum here.

Construction Protocol

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

Make Ribbon Cables

  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

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

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

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

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)

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:

Construct min-eVOLVER PCB

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.

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.

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

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

    3. 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)

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

  3. [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

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

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

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

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

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

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)

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

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

  2. 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

  3. 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

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

  5. Place vial cover over vials (figure D below)

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

  3. Follow the Arduino Software Installation

  4. Upload the min-eVOLVER Arduino code onto the device

About

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.

Differences from Main eVOLVER

Software-Hardware Architecture

The software architecture of the min-eVOLVER is similar to the original eVOLVER, 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

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

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.

parts
epoxy
here
code
guide
(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.
(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.

Starting an Experiment

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

Highly recommended:

  1. Read the main Experiment 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

Questions?

Ask about experiments in the relevant category on the forum.

Setup

  1. Prepare vials

  2. Start the server

  3. Sterilize the fluidic lines

    1. Instead of the GUI, use send_command.py

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

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)

  • 2 experiment windows (dpu environment)

  • 1send_commands.py window (dpu environment)

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).
  1. Load the vials

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

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.

Vials set up for a basic chemostat or turbidostat.
  1. Use send_command.py to set to correct temperature

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

    2. Temperature affects OD readings and we need a good initial OD to act as a "blank"

  2. Allow min-eVOLVER to come to temperature

Running the Experiment

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 here.

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

  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>

    2. python3 eVOLVER.py -i localhost:5555

Ending an Experiment

  1. Clean up the experiment

  2. Data is in the data files

Fluidics Setup

Info

More about here.

More about tubing and connectors .

Protocol

Fit tubing to your application

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

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

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

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

    2. Put tubing onto the connector barb

    3. 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)

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

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

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

min-eVOLVER

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.

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 .

Questions or Comments?

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

Parts

Parts Spreadsheet

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

  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.

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.

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

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):

    3. Centroid File:

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

Pump PCB

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

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:

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

  2. For other manufacturers, give them the .x_t, .easm, and .step files found

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

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.

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.

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.

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 .

pumps
here
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.
send_command.py
forum
min-eVOLVER set up for a basic turbidostat on both vials.

ePACE with min-eVOLVER

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.

  • ePACE described initially in Huang, Heins et al. 2022 Nature Biotech.

  • For general PACE methods see Miller, Wang 2020 Nature Protocols.

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

Implementing Controlled Host Cell Density in Reservoirs

This section constitutes changes from Huang, Heins et al. 2022 Nature Biotech.

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

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

    • 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 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

  • Chemostat for keeping volume constant

PCBWay
PCB
PCBWay
here
PCBWay
this
min-eV-gerbers_240731.zip
BOM_PCBWay.xlsx
PCBWAY-min-eV-positions-centroid.csv
PCBWay
here
Protocase
here
parts sheet
this
this
here
The parts necessary for the min-eVOLVER main unit. Use the spreadsheet above to discern what each item is.

Software Installation and Startup

Questions?

Ask questions about this guide on the forum here.

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.

Software Installation

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

Make sure you are on the 'min' branch (upper left) and click the code button to download the .zip file for the code
  1. Follow the dpu installation guide.

    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.

  2. 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

      source server-env/bin/activate

      Windows PowerShell:

      py -3.9 -m venv server-env

      server-env\Scripts\Activate.ps1

    5. Use poetry to install all necessary dependencies.

      poetry install

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.

Server Startup

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

If using more than one min-eVOLVER, check the note 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.

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

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:

      source server-env/bin/activate

    2. On Windows PowerShell:

      server-env\Scripts\Activate.ps1

  3. Navigate to the /evolver/ folder inside the evolver-min server code

  4. Attempt to run the server using the following command:

    1. Mac OS: python3 evolver.py

    2. Windows Powershell: py evolver.py

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 file for the server

    1. On Mac OS for example: serial_port: /dev/cu.usbmodem1301

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

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

An example min-eVOLVER server readout.

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

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 because it is plugged in to a different USB port

    2. You need to define a different port number (try 5556) in the conf.yml file

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

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

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

  • Calibration files are for a specific min-eVOLVER

  • 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

Test min-eV Hardware

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

  4. Navigate to the /dpu/experiment/ folder

Familiarize yourself with send_command.py 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

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

test_hardware.py

  1. Run a full hardware test using test_hardware.py

  2. Use the command: python3 test_hardware.py

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.
  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)

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

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

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

  4. 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']

Troubleshooting

Server Troubleshooting

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 setup).

  • As a last resort, reupload the Arduino code

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

An example error thrown when the server is running but isn't getting responses from the min-eVOLVER.
  • 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, reupload the Arduino code

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.

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 guide and upload the min-eVOLVER Arduino code onto the device.

Experiment Troubleshooting

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.

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

Parameters

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 page for potential causes and fixes.

send_command.py

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

Usage

You must

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

  2. In another terminal window, enter into the dpu virtual environment and navigate to the folder send_command.py is in: /dpu/experiment/

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

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.

Annotated Server Log as a Command Comes in

Examples

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

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

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

Calibrations

Overview

  • 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)

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)

Questions?

Ask about calibrations in the relevant category on the .

Before Calibration

  1. Complete the page

  2. Gather materials (see below)

  3. Start cells for OD calibration the night before

  4. Calibrate temperature before OD

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)

Materials

  • Glass eVOLVER vials (6X)

  • eVOLVER vial caps (6X)

  • Temperature probe (we use a )

  • 20mL pipette or a small graduated cylinder

  • 200mL cells at OD600 > 2

Temperature Calibration

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

Procedure

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

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

  2. Fill eVOLVER vials with 15-20mL of water, put in stir bars, and place in aluminum sleeves.

  3. Turn on the min-eVOLVER and start the server as in .

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

    1. python3 send_command.py <port_number> temp 31000

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

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

  4. 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.

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

  3. Fill the pump lines by sending the following pump command to the min-eVOLVER using :

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

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

    2. Send the command:

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

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

    4. Input the values into the excel spreadsheet

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

  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

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

  3. Send the command:

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

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

  5. Input the values into the excel spreadsheet (in mL)

  6. 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)

OD Calibration [Not for ePACE]

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

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.

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

Procedure

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

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

  2. Follow the OD calibration 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

  3. 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)

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

  4. 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

  5. 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

  6. 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

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

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

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

    1. pip install pandas

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

    1. python3 sigmoid_fit.py

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

  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"

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
min-eVOLVER
added an experimental parameter
IPPs
server
here
Calibrations
forum
setup
2 Probe Fisherbrand Traceable Hi-Accuracy Refrigerator Thermometer
setup
send_command.py
send_command.py
growth curve
vial cover
tutorial
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.

Reusing vial assembly between experiments

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

Questions

Do you sterilize the septa before each needle insertion?

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

Protocol

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

Sterilization

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

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

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

Experiment Setup

Vial Setup

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

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.

Vials set up for reservoir (left) and lagoon (right).

Fluidic Lines

Hook up pump lines in the configuration shown below

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

  4. Alter USER DEFINED VARIABLES using the guide below:

ePACE user defined variables as of 2023-11-20

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]

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

rate_config

  • Format: rate_config = [reservoir, lagoon]

  • In vial volumes per hour (V/h)

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

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

For the Lagoon

  • Set based off of phage replication rate

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

  3. 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

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]

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

  4. If you are not using another inducer, inducer_concentration = [100, 0]

Optional Settings

You do not need to alter these settings

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

reservoir_vial

  • Vial number of host cell reservoir

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

lagoon_vial

  • Vial number of lagoon

  • Only a chemostat, can have up to two inducers

OD Calibration via Growth Curve

You need to have finished temperature calibration before doing this step.

Overview

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.

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.

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

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

      1. Location here: /evolver/evolver/alternate_conf_files/stir_off_for_od_read/conf.yml

    3. Edit the port and serial_port variables to the correct values for this min-eVOLVER

  3. Start the server

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

  5. Set temperature to experimental temperature using send_command.py and your temperature calibration spreadsheet

    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

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

  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

    3. For ePACE guide see here

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

    1. Using send_command.py,

    2. Fill lines with bleach

    3. Wait 30 minutes for sterilization

    4. Flush bleach 3 times through with media

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

  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

      2. Lagoon (right) vial = 10 mL

    2. Other experiments: most likely 25 mL in both vials

  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

      2. For example: od_calibration_growth_curve_250101.xlsx

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

  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

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

      4. 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.

    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

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

  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"