TITLE: OT-2 Counter-Selection
AUTHORS: Ana Mariya Anhel, Lorea Alejaldre, Ángel Goñi-Moreno

[DESCRIPTION]
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.0.0 of the LAP repository

[BEFORE_START]
Note that this protocol needs 2 values to do a selection for each source plate

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

[STEPS]
SECTION: Files Preparation
1. 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:

GeneralVariables: variables related mainly to the labware that is going to be used
PipetteVariables: variables related to the pipettes that are going to be used
PerPlateVariables: variables related to the specifications of each source plate
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

  
 
SECTION: Running Protocol
None. Setting Labware
SECTION: After-Running
7. Retrieve labware from the OT
SECTION: Example
9. 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
SECTION: Files Preparation
1.1. Fill the template with the corresponding values
SECTION: Files Preparation
1.2. Store it with the name VariablesCounterSelection.xlsx

 


SECTION: Files Preparation
2. 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.

 

 

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
 

 


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

Here, we will use FileZilla (https://filezilla-project.org/download.php?type=client).

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

 
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

 


SECTION: Files Preparation
3. 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

SECTION: Files Preparation
3.1. Creation of .json file

The description file can be obtained by describing the labware dimensions at https://labware.opentrons.com/create/
SECTION: Files Preparation
3.2. 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

 

SECTION: Running Protocol
5. 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

 

 

SECTION: Running Protocol
6. Run Protocol in OT
SECTION: After-Running
8. Import map(s) from robot


There will be as many maps as source plates with the following structure of names: [FinalMapName].csv

To retrieve them, we can   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

 


SECTION: Running Protocol
5.1. Load the script in the OT App

Protocols -> Import -> Drag Python script

 

 

 

SECTION: Running Protocol
5.2. 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.

 

 

 

 

SECTION: Running Protocol
6.1. 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
SECTION: Running Protocol
6.2. Labware position check is performed (if needed)
SECTION: Running Protocol
6.5. Start Run

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

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

 

SECTION: Example
9.1. Excel template that we can find    filled and saved with the name VariablesCounterSelection.xlsx

  

SECTION: Example
9.3. Export the variable file to the /data/user_storage folder  in the robot

 
SECTION: Example
9.5. Import the script that we have downloaded from the step    (I named it ColonyScreening-Example.py) to 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

SECTION: Example
9.10. Start run

 

SECTION: Example
9.11. Retrieve labwares from the OT
SECTION: Example
9.12. Retrieve the final maps, in this case, they will be called mapSelectedColoniesPlate1 and mapSelectedColoniesPlate2, of the IDs of the samples that fulfilled the requisites that have the names set in the variable file by us
 
 
  
  

SECTION: Running Protocol
6.3. Clean the surface of the robot with 70% ethanol to clean and disinfect the surfaces

 


SECTION: Example
9.2. 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/)

  

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

 
SECTION: Example
9.6. Run the protocol in the robot that we have transferred the Excel file

ColonyScreening-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
 
 
 
SECTION: Example
9.9. Prepare all reagents and labware in the places the App is showing and taking into account the notes in step   

SECTION: Example
9.7. Turn the HEPA filter module
SECTION: Example
9.8. Clean platform of the robot that we are going to perform the protocol
SECTION: Running Protocol
6.4. Set the labware and reagents as shown in the OT-App
SECTION: Prepare Robot OS
4. Install needed packages

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

 

SECTION: Prepare Robot OS
4.1. Connect to the robot

   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
 
In Windows, you can do this command in Windows Powershell


 

SECTION: Prepare Robot OS
4.2. Install the package

Once inside the robot's system, you need to run the following command
 

 

SECTION: Files Preparation
3.3. Transfer labware files to robot

If you are using the entry LAP-ColonyCounterSelection-OT2-1.0.0 or 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.
 

 

SECTION: Example
9.4. 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)