-
Notifications
You must be signed in to change notification settings - Fork 0
/
DETECTR_COVID-19_PART1.py
89 lines (68 loc) · 3.95 KB
/
DETECTR_COVID-19_PART1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from opentrons import protocol_api
metadata = {
'protocolName': 'DETECTR COVID-19 Assay Part 1',
'author': 'Tim S Dobbs',
'source': 'Mammoth Biosciences',
'link': 'https://mammoth.bio/wp-content/uploads/2020/03/Mammoth-Biosciences-A-protocol-for-rapid-detection-of-SARS-CoV-2-using-CRISPR-diagnostics-DETECTR.pdf',
'description':
"""
Part 1 of an implementation of the Mammoth Biosciences DETECTR assay
to detect COVID-19 on the Opentrons OT2. This file is Part 1 - Prep
of LbCas12a RNP complex. This material is used to report RNA present
in the test sample, and can be prepped up to 24 hours before running
the assay, as long as the sample is kept at 4 degrees C.
Uses P10 pipette
Labware Placement:
Opentrons Temperature Module: Slot 5
Empty 96-well plate: In Temp Module
Opentrons 24-slot Eppendorf tuberack for 2ml tubes: Slot 8
10ul pipette tiprack: Slot 9
Reagents are all in 2ml Eppendorf tubes in tuberack. Positions:
10X NEBuffer 2.1: A1
LbCas12a: B1
Reporter substrate: C1
Nuclease-free water: D1
N-gene gRNA: A2 #Note gRNA gets its own column
E-gene gRNA: B2
RNase P gRNA: C2
""",
'apiLevel': '2.0'
}
def run(protocol: protocol_api.ProtocolContext):
temp_module = protocol.load_module('Temperature Module', 5)
p10rack = protocol.load_labware('opentrons_96_tiprack_10ul', 9)
reagents = protocol.load_labware('opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap', 8)
prep_plate = temp_module.load_labware('nest_96_wellplate_200ul_flat')
# Using 10ul pipette for precision
p10 = protocol.load_instrument('p10_single', 'left', tip_racks = [p10rack])
base_recipe = { # reagent name: [postion on tuberack, uls to each sample]
'10X_NEBuffer_21': ['A1', 2],
'LbCas12a': ['B1', 1],
'reporter': ['C1', 1], #TODO Need correct volume
'water': ['D1', 15.75]
}
gRNA_uls_to_pipette = 1.25
gRNA_recipe = {# reagent name: [postion on tuberack, uls to each sample]
'N-gene_gRNA': ['A2', gRNA_uls_to_pipette],
'E-gene_gRNA': ['B2', gRNA_uls_to_pipette],
'RNase_P_gRNA': ['C2', gRNA_uls_to_pipette]
}
prep_plate_wells = ['A1','A2','A3'] #1st: N-gene wells, 2nd: E-gene, 3rd: RNase P
prep_plate_locations = [prep_plate.wells(well) for well in prep_plate_wells]
reporter_recipe = base_recipe['reporter'] #move reporter to be used later
# print(prep_plate_locations)
#Begin Procedure ---------------------------------------------------------
for reagent in base_recipe: #TODO Don't need for-loop, can do with .distribute only
p10.distribute(base_recipe[reagent][1], #volume
reagents.wells(base_recipe[reagent][0]), #source location
prep_plate_locations) #dest location
for group, gRNA in enumerate(gRNA_recipe):
p10.transfer(gRNA_recipe[gRNA][1], #volume
reagents.wells(gRNA_recipe[gRNA][0]), #source location
prep_plate_locations[group], #dest location
mix_after=(2,10)) #ensure good mixing
temp_module.set_temperature(37) #robot pauses until temperature is reached
protocol.delay(minutes=30)
temp_module.set_temperature(4)
# Add reporter substrate to final concentration of 500nM
#p10.distribute(reporter_recipe[1], reporter_recipe[0], prep_plate_locations)