Jan 16, 2024

Public workspaceOT-2 Counter-Selection V.3

  • 1Centro de Biotecnología y Genómica de Plantas, Universidad Politécnica de Madrid (UPM)-Instituto Nacional de Investigación y Tecnología Agraria y Alimentaria (INIA/CSIC), Madrid, Spain
  • Ángel Goñi-Moreno: angel.goni@upm.es
Open access
Protocol CitationAna Mariya Anhel, Lorea Alejaldre, Ángel Goñi-Moreno 2024. OT-2 Counter-Selection. protocols.io https://dx.doi.org/10.17504/protocols.io.5qpvor5xdv4o/v3Version created by Ana Mariya Anhel
License: This is an open access protocol distributed under the terms of the Creative Commons Attribution License,  which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited
Protocol status: Working
We use this protocol and it's working
Created: January 16, 2024
Last Modified: January 16, 2024
Protocol Integer ID: 93580
Funders Acknowledgement:
Comunidad de Madrid
Grant ID: Y2020/TCS-6555,2019-T1/BIO-14053
MCIN/AEI
Grant ID: CEX2020-000999-S,PID2020-117205GA-I00
ERC
Grant ID: 101044360
Abstract
This protocol is meant to select the samples from one or more source plate(s) that has 2 different selecting conditions: one condition gives higher values and the other lower values. From these selected samples this protocol create final plates with the samples alone or mixed with different reactive(s).
The instructions for running this protocol are a python script for an Opentrons 2 robot and a excel file with several variables making the protocol modular to reactives, volumes of transfer, type of plates, etc.

In our lab we are selecting samples by their after night OD in 2 different antibiotics and create PCR plates (with water) and 2 stock plates (with glycerol), but it can be used with other selection characteristics such as expression of GFP and with other types of reactives.

This protocol description corresponds to the entry LAP-ColonyCounterSelection-OT2-1.1.0 of the LAP repository
Guidelines
This protocol was developed with python 3.7.1, OT App Software Version 6.3.1 and API level version 2.14 in a Linux 4.14.74 system (these are the OT-2 specifications). In the script several packages are used:  pandas (0.25.3), openpyxl (3.1.2), math, random and numpy (1.15.1)

It has been tested with cultures from Pseudomonas putida KT2440 as part of a counter-selection step in the High-throughput workflow for the genotypic characterization of transposon library variants.
30% glycerol and water have been successfully dispensed using this protocol.

The maximum number of 96-well plates per run given 1 source plates, 1 pipette and replacement of the tiprack set as True is 8 final plates (using 1 tip rack and 1 tube rack for falcons tubes).
Materials
Software

  • Python 3.7.1
  • opentrons software version 6.3.1
  • python packages: pandas (0.25.3), openpyxl (3.1.2), numpy(1.15.1), math, random
  • OT-App
  • Excel


OT-2 Labware

  • Opentrons Tip racks
Equipment
Opentrons 96 Tip Rack 300 µL
NAME
Tip rack
TYPE
Opentrons
BRAND
-
SKU
LINK

Equipment
Opentrons 96 Filter Tip Rack 20 µL
NAME
Tip rack
TYPE
Opentrons
BRAND
-
SKU
LINK

  • 96-well plates
Equipment
96-well plates, flat bottom, non treated
NAME
Cell culture plates
TYPE
VWR
BRAND
734-2781
SKU
LINK

  • Opentrons Falcon Tube Rack
Equipment
Opentrons 15 Tube Rack with Falcon 15 mL Conical
NAME
OT Tube Rack
TYPE
Opentrons
BRAND
-
SKU
LINK

  • 15mL Falcon tubes


Equipment
Equipment
OT-2
NAME
Liquid handler
TYPE
Opentrons
BRAND
OT-2
SKU

Equipment
HEPA Module
NAME
Opentrons
BRAND
OT-2-HEPA
SKU
LINK

Equipment
Single Channel Electronic Pipette (GEN2) 300uL
NAME
Opentrons Pipette
TYPE
Opentrons
BRAND
-
SKU
LINK

Safety warnings
Attention
It is important to use HEPA module to work in sterility
Before start
Note that this protocol needs 2 values to do a selection for each source plate

Changes respective to previous version:

  1. The final given maps of the selected samples is no longer a CSV for each source plate but an XLSX final file with all the map(s) where each source plate map is 1 sheet of that file
  2. Add variable in Sheet 'General Variables' called 'Name Final File Maps' that is going to establish the name of the final map
  3. Name variable 'Final Map Name' in sheet 'PerPlateVariables' is going to define the name of the sheet in the final map(s) excel file
  4. Names of the columns in 'PerPlateVariables' are used now as the name of the source plates for both final layout and identifiers in final maps
  5. The identifiers in final map(s) of selected colonies is now [Position of the sample in source plate] [Name of the column] instead of [Position of the sample in source plate] from source Plate [number of the plate]
  6. Changes in names of labware in final layout shown in the OT-App
Files Preparation
Files Preparation
Preparing Customized Template

Preparing the template (a .xlsx) with the specific variables for each experiment.

Here we attach a template of the variable file with several sheets and a PDF file explaining each variable:

  1. GeneralVariables: variables related mainly to the labware that is going to be used
  2. PipetteVariables: variables related to the pipettes that are going to be used
  3. PerPlateVariables: variables related to the specifications of each source plate
  4. Sheet(s) for comparable values (OD, fluorescence, etc): values that will be compared against the threshold established in the PerPlateVariables sheet -> Not in the template but should be present in the final file


Download Template-VariablesCounterSelection.xlsxTemplate-VariablesCounterSelection.xlsx
Download CounterSelectionInstructionsv110.pdfCounterSelectionInstructionsv110.pdf

Fill the template with the corresponding values
Store it with the name VariablesCounterSelection.xlsx

Note
The file should be spelt exactly VariablesCounterSelection.xlsx or the Python script won't work correctly


Transferring file to Robot

Transfer the VariablesCounterSelection.xlsx to the directory /data/user_storage of the OT robot
that we are going to use to perform the protocol.

Note
Before transferring any file to the OT, we need to know the IP of the robot.

This can be obtained in the Networking section of the Device that we will use.
To obtain this info, go in OT-App -> Devices -> Chosen Robot (three dots) -> Robot Settings -> Networking

In this tab, you can see 2 types of IP; one is shown if both the robot and you are connected to the same Wifi, and the other is shown if the computer and the robot are connected via USB. Both connections can be used for this step

Note
To connect to the robot an OT-key should have been previously generated, and it is done with the ssh-keygen command and transferring the public key to the OT.

For more information about how to generate and set the connection between your computer and the Opentrons robot, visit https://support.opentrons.com/s/article/Setting-up-SSH-access-to-your-OT-2

Here, we present a summary of how to transfer the files in 3 Operative Systems: Windows, MacOS and Linux


MacOS/Linux
We will use the command line with scp to transfer the file VariablesCounterSelection.xlsx to the OT system.

We need to perform the following command
Command
File passing from linux (our computer) to linux (OT raspberry)
scp -i [ot_key] [file] root@[IP_OT]:/data/user_storage

Note
You can face difficulties transferring files in MacOS Ventura (13) and Sonoma (14). These problems can be solved by adding the argument -O (uppercase o) to the command
Command
Transferring files to OT (MacOS 13 and 14)
scp -Oi [ot_keypath] [file path]  root@[OP_robot]:/data/user_storage



Windows
There are several ways to send files from a Windows to a Linux (for example, with a virtual machine or Windows Powershell in the latest versions of Windows).


Go to File -> Site Manager -> New Site -> Change Protocol to SFTP. Then, introduce in Host the OT IP, change the Logon Type to key file, change User to root and give the directory where the OT key is. It should look something like this

Example of setting the FileZilla to transfer files from Windows (our computer) to Linux (OT)
Then press Connect, and we will have a connection between our computer and the robot.

After this connection, we should be able to move the file VariablesCounterSelection.xlsx (in our computer) to the directory /data/user_storage in the robot.

This method can be used as well in some Linux and MacOS

Note
Take into account that the IP of the robot could change, so it is possible that it will be necessary to change the host in these connections from time to time.


Adding the custom labware

There is only a need to do this step when labware that you are using is not OT official or is not included in the OT app

Optional
Critical
Creation of .json file

The description file can be obtained by describing the labware dimensions at https://labware.opentrons.com/create/
Uploading file to the OT App

In the OT app, we need to perform the following route: Labware -> Import -> Choose File -> Select file we have created in step 3.1

Expected result
After uploading the labware you should be able to see the new labware in the Labware tab of the OT App, all custom labware can be found more easily in the category Custom Labware

Transfer labware files to robot

If you are using the entry LAP-ColonyCounterSelection-OT2-1.1.0 and custom labware, an additional step is needed, which is transferring a folder with the custom labware.

We need to create for our custom labware a folder with the API name containing the description file (.json) called 1.json and then transfer that folder to the robot's folder /data/labware/v2/custom_definitions/custom_beta in a similar way as in the Step 2 but with the difference that is a directory that needs to be transferred and not a file.
Command
Transferring the custom labware to OT (Linux)
scp -i [ot_key] -r [directory_custom_labware] root@[IP_OT]:/data/labware/v2/custom_definitions/custom_beta

Note
We do not need to execute this part every time the protocol is used, only when that labware is not included in the OT official labware and these directories are not in the robot.

Optional
Prepare Robot OS
Prepare Robot OS
Install needed packages

This script needs the package openpyxl, which is not installed by default in the OT-2 robots

Note
This step is only needed if the package is not installed in the robot, not in every run of the protocol.

If the package is not installed, an error will appear when running the script in the robot. This error will appear while simulating the script in the app, but you can ignore it.

Optional
Critical
Connect to the robot

Go togo to step #2 to find the IP of the robot in which you want to run the script

To connect to the robot, you can do it via ssh with the following command
Command
Connect to Linux based OT via ssh
ssh -i [path ot_key] root@[Robot_IP]
In Windows, you can do this command in Windows Powershell


Expected result
If the connection has been successful you should obtain a screen similar to the following image

Drawing obtained when entering an OT-2 system

Install the package

Once inside the robot's system, you need to run the following command
Command
Install openpyxl package (Linux 4.14.74-v7)
pip install openpyxl

Note
For more information about installing packages in the opentrons robots, check the following Opentrons page: https://support.opentrons.com/s/article/Using-Python-packages-in-Python-API-protocols

Running Protocol
Running Protocol
Load script in OT-App

Now that we have transferred the variable files to the robot, we can load the script and run it in the selected robot

Note
This whole step has been developed with version 6.3.1 of the OT-App and it has been tested up until the version 7.0.2

Indications may vary from version to version of the opentrons App and the version of the script.

Software
Opentrons App
NAME
Windows >=10, Mac >=10 , Ubuntu >=12.04
OS
Opentrons
DEVELOPER

Load the script in the OT App

Protocols -> Import -> Drag Python script

Note
The last script version can be found at https://github.com/BiocomputationLab/LAPrepository/tree/main/LAPEntries (the name of this file is the user's choice). The name of the directory should be LAP-ColonyCounterSelection-OT2 followed by the version.

As well we can find the latest version of the script at https://www.laprepo.cbgp.upm.es/repository/ with the same name as in GitHub

Software
LAP Repository
NAME
https://biocomputationlab.com/
DEVELOPER
SOURCE LINK

Note
The App with version 6.3.1 analyzes your protocol before setting a robot to run, so the labware will not be shown before assigning the protocol to a specific robot when you import it into the App

Select Robot to Perform Script

Click in the protocol -> Start setup -> Choose the OT where the file VariablesCounterSelection.xlsx is -> Proceed To Setup

After clicking on Proceed to Setup, you should obtain the labware positions in the Labware tab and the reagents, with their corresponding volume, in the Liquids tab.

In case the protocol with the set variables cannot run, an error will occur during the run. A lot of errors are contemplated already and have a specific message that gives a hint of what could have gone wrong.

Expected result
A labware setup should look like the following image, where you can find the initial and final plates, the Falcon labware to store the reagents and the corresponding tips

Labware Set-up example of Counter Selection Protocol


Expected result
A liquid setup should look like the following image, where you can find the samples in the initial plates and the reagents in the Falcon labware

Liquid Set-up Example of Counter Selection Protocol


Note
The volume of the initial samples is established to be 90% of the max volume of the well, but it is only a recommendation, just make sure that there is enough volume to transfer to all the final plates.

On the other hand, the volume of the reagents is exactly what is needed, so it is suggested to pour always more to take into account the error of pipetting

Note
It is recommended that you perform a labware position check.

You can do it with test plates after loading the script but before cleaning the surface. That way, you reduce the probability of contamination (using the test plates and labware) and pipetting errors (position check).

Run Protocol in OT
Make sure the needed calibrations are done

Pipettes, tip racks and tip length calibrations need to be done for the items used in this run
Labware position check is performed (if needed)
Optional
Clean the surface of the robot with 70% ethanol to clean and disinfect the surfaces

Note
Check the Opentrons page https://support.opentrons.com/s/article/Cleaning-your-OT-2? for more information about cleaning the OT-2 robot with the proper materials


Set the labware and reagents as shown in the OT-App
Start Run

The procedure that the robot is going to do is mainly divided into 4 parts:

  1. Select colonies that comply with the selected parameters (threshold)
  2. Distribute reagents to respective plates (if set in the input file)
  3. Distribute to all plates the selected samples
  4. Generate identity maps (to be exported in thefollowing steps)

Expected result
Several plates, with different reagents but the same samples in the same order, in addition to a file with all the map(s) (XLSX file) located in the folder /data/user_storage that will give the position in these plates with their identifiers (location in the source plate)

This set of results will be given for each source plate the user has provided

After-Running
After-Running
Retrieve labware from the OT
Import map(s) from robot


There will be as many maps as source plates with the following structure of names: [NameFinalFile Maps].xlsx

To retrieve them, we can Go togo to step #2 and reproduce it by transferring the files from the robot to the computer.

All of the maps will be in the directory /data/user_storage

Expected result
The map(s) contains the identity (position in original plate) of the samples selected in the places that they have been placed/distributed being the name of the column as the name of the plate


Example
Example
1h 53m
We want to select the samples that have an OD600nm higher than 0.5 in the Antibiotic Transposition genome file and have an OD600nm lower than 0.5 in the Antibiotic ampicillin plasmid file in one of the source plates and the same selection in the second one but with the value 0.6

After selecting the samples, we want to transfer those samples to final plates that will have different media

We will use a computer with a Windows 10 system
Excel template that we can find Go togo to step #1 filled and saved with the name VariablesCounterSelection.xlsx

Download VariablesCounterSelection.xlsxVariablesCounterSelection.xlsx
10m
Upload custom labware to app

We are using a custom labware called vwrblueprintdepth105_96_wellplate_390ul that has been created with the labware creator that opentrons offers (https://labware.opentrons.com/create/)

Download vwrblueprintdepth105_96_wellplate_390ul.jsonvwrblueprintdepth105_96_wellplate_390ul.json11KB

Upload it to the labware and make sure it is loaded in the app

List of custom labware recorded in the Opentrons App
2m
Export the variable file to the /data/user_storage folder in the robot

command line window with scp commands to transfer the variables .xlsx from our computer to the OT-2

2m
Because we are using version 1.0.0 of the script in this example, we will transfer the directory of the labware as well (here we have attached a zip, but it is the folder that must be transferred, not the zip)

Download vwrblueprintdepth105_96_wellplate_390ul.zipvwrblueprintdepth105_96_wellplate_390ul.zip1KB
Command
Transferring the used custom labware to OT (Linux)
scp -i [ot_key] -r vwrblueprintdepth105_96_wellplate_390ul root@[IP_OT]:/data/labware/v2/custom_definitions/custom_beta

1m
Import the script that we have downloaded from the step Go togo to step #5 (I named it ColonyScreeninv_v110-Example.py) to the OT-App

Download ColonyScreeninv_v110-Example.pyColonyScreeninv_v110-Example.py

Result of importing the Python script in the OT-App

As we can see, we have an error, but that is programmed because the script is meant to work in the robot but not in your computer

30s
Run the protocol in the robot that we have transferred the Excel file

ColonyScreeninv_v110-Example.py -> Start setup -> Select robot in which we are going to run the protocol

If we do not have any errors, the output should look similar to the following pictures

Labware and liquid set-up layout

Volumes of the needed liquids to perform the protocol

1m
Turn the HEPA filter module
30s
Optional
Clean platform of the robot that we are going to perform the protocol
2m
Prepare all reagents and labware in the places the App is showing and taking into account the notes in step Go togo to step #5.2 Notes

5m
Start run

Final layout of source and final plates in the run
Example of the content of A1 in the labware Selected Samples from Plate 'Plate 1' with Medium3 Slot 4


Expected result

Final layout of source and final plates in the run

Example of the content of A1 in the labware Selected Samples from 'Library ABC' with Medium3 Slot 4

Here, we will obtain the mix between the volume of media and the samples set in the variable file in the final plates. These positions are seen in the image by the grey wells, and we can see the info of the plate and the media in the name of the labware.

1h 22m
Retrieve labwares from the OT
5m
Retrieve the final maps, in this case, they will be in a file called final_maps_CS_Example.xlsx, of the IDs of the samples that fulfilled the requisites that have the names set in the variable file by us. This file will have 2 sheets, one per source plate, called mapSelectedColoniesABC and mapSelectedColoniesDEF for the columns Library ABC and Library DEF, respectively.

command line windows with the transfer command of the samples map from the OT to our computer

2m
Protocol references
pBLAM1-x: standardized transposon tools for high-throughput screening (Synthetic Biology) https://doi.org/10.1093/synbio/ysad012

The Laboratory Automation Protocol (LAP) Format and Repository: A Platform for Enhancing Workflow Efficiency in Synthetic Biology (ACS Synth. Biol.) https://doi.org/10.1021/acssynbio.3c00397