Using EchoProto Templates - Loop_Assembly Example¶
BiomationScripter Templates can be used to help quickly and easily generate automation protocols for common experiments or procedures. Shown here is an example of how the EchoProto.Templates.Loop_Assembly Template can be used to generate an automation protocol to prepare Loop assembly reactions using the Echo.
See the documentation for a full details about the Loop_Assembly Template
Setting up¶
The first step is to import the EchoProto.Templates module, along with the BMS module so that we have access to any generic tools that may be required.
import BiomationScripter as BMS
from BiomationScripter.EchoProto.Templates import Loop_Assembly
Next, we need to define the general parameters and inputs required for any Echo Template (see here).
For the source plates, we'll import some layouts which have already been defined. For more information on creating/importing BMS.Labware_Layout objects, see here and here.
Protocol_Name = "Merged Example Loop Assembly"
Metadata = {
"Author": "First Last",
"Author Email": "author@email.com",
"User": "Your Name",
"User Email": "user@email.com",
"Source": "BiomationScripter v0.2.0.dev",
"Robot": "Echo525"
}
Merge_Picklists = True # This merges source plates with the same TYPE into one picklist
Picklist_Save_Directory = "../../../../data/"
Source_Plate_Directory = "../../../../data/"
Source_Plates = [
BMS.Import_Labware_Layout("Example DNA Stocks", path = Source_Plate_Directory),
BMS.Import_Labware_Layout("Example Plasmid Stocks", path = Source_Plate_Directory),
BMS.Import_Labware_Layout("Water and Buffer Plate", path = Source_Plate_Directory),
BMS.Import_Labware_Layout("Reagents", path = Source_Plate_Directory),
]
Assembly_Plate_Layout = BMS.Labware_Layout("Assembly Plate", "384 OptiAmp Plate")
Assembly_Plate_Layout.define_format(16,24)
Assembly_Plate_Layout.set_available_wells()
The full list of arguments, with descriptors, can be found here.
Final_Volume = 5 # uL
Backbone_to_Part_Ratios = ["1:1", "1:3", "2:1"]
Repeats = 1
Enzyme = "BsaI" # For level 1 assemblies
Buffer = "T4 Ligase Buffer"
The next step is to define the DNA assemblies, using the BiomationScripter.Assembly class.
Promoters = [
"J23100",
"J23119",
"J23101",
"J23102",
"J23103",
"J23104",
"J23105",
"J23106",
"J23107",
"J23108",
"J23109",
"J23110",
"J23111",
"J23112",
"J23113",
"J23114",
"J23115",
"J23116",
"J23117",
"J23118"
]
RBSs = [
"B0034",
"B0030",
"B0031",
"B0032"
]
Assemblies = []
for promoter in Promoters:
for RBS in RBSs:
Assemblies.append(
BMS.Assembly(
Name = "{}-{}-GFP".format(promoter, RBS),
Backbone = "pOdd1",
Parts = [promoter, RBS, "GFP", "B0015"]
)
)
for Assembly in Assemblies:
print(Assembly.name, Assembly.parts)
J23100-B0034-GFP ['J23100', 'B0034', 'GFP', 'B0015'] J23100-B0030-GFP ['J23100', 'B0030', 'GFP', 'B0015'] J23100-B0031-GFP ['J23100', 'B0031', 'GFP', 'B0015'] J23100-B0032-GFP ['J23100', 'B0032', 'GFP', 'B0015'] J23119-B0034-GFP ['J23119', 'B0034', 'GFP', 'B0015'] J23119-B0030-GFP ['J23119', 'B0030', 'GFP', 'B0015'] J23119-B0031-GFP ['J23119', 'B0031', 'GFP', 'B0015'] J23119-B0032-GFP ['J23119', 'B0032', 'GFP', 'B0015'] J23101-B0034-GFP ['J23101', 'B0034', 'GFP', 'B0015'] J23101-B0030-GFP ['J23101', 'B0030', 'GFP', 'B0015'] J23101-B0031-GFP ['J23101', 'B0031', 'GFP', 'B0015'] J23101-B0032-GFP ['J23101', 'B0032', 'GFP', 'B0015'] J23102-B0034-GFP ['J23102', 'B0034', 'GFP', 'B0015'] J23102-B0030-GFP ['J23102', 'B0030', 'GFP', 'B0015'] J23102-B0031-GFP ['J23102', 'B0031', 'GFP', 'B0015'] J23102-B0032-GFP ['J23102', 'B0032', 'GFP', 'B0015'] J23103-B0034-GFP ['J23103', 'B0034', 'GFP', 'B0015'] J23103-B0030-GFP ['J23103', 'B0030', 'GFP', 'B0015'] J23103-B0031-GFP ['J23103', 'B0031', 'GFP', 'B0015'] J23103-B0032-GFP ['J23103', 'B0032', 'GFP', 'B0015'] J23104-B0034-GFP ['J23104', 'B0034', 'GFP', 'B0015'] J23104-B0030-GFP ['J23104', 'B0030', 'GFP', 'B0015'] J23104-B0031-GFP ['J23104', 'B0031', 'GFP', 'B0015'] J23104-B0032-GFP ['J23104', 'B0032', 'GFP', 'B0015'] J23105-B0034-GFP ['J23105', 'B0034', 'GFP', 'B0015'] J23105-B0030-GFP ['J23105', 'B0030', 'GFP', 'B0015'] J23105-B0031-GFP ['J23105', 'B0031', 'GFP', 'B0015'] J23105-B0032-GFP ['J23105', 'B0032', 'GFP', 'B0015'] J23106-B0034-GFP ['J23106', 'B0034', 'GFP', 'B0015'] J23106-B0030-GFP ['J23106', 'B0030', 'GFP', 'B0015'] J23106-B0031-GFP ['J23106', 'B0031', 'GFP', 'B0015'] J23106-B0032-GFP ['J23106', 'B0032', 'GFP', 'B0015'] J23107-B0034-GFP ['J23107', 'B0034', 'GFP', 'B0015'] J23107-B0030-GFP ['J23107', 'B0030', 'GFP', 'B0015'] J23107-B0031-GFP ['J23107', 'B0031', 'GFP', 'B0015'] J23107-B0032-GFP ['J23107', 'B0032', 'GFP', 'B0015'] J23108-B0034-GFP ['J23108', 'B0034', 'GFP', 'B0015'] J23108-B0030-GFP ['J23108', 'B0030', 'GFP', 'B0015'] J23108-B0031-GFP ['J23108', 'B0031', 'GFP', 'B0015'] J23108-B0032-GFP ['J23108', 'B0032', 'GFP', 'B0015'] J23109-B0034-GFP ['J23109', 'B0034', 'GFP', 'B0015'] J23109-B0030-GFP ['J23109', 'B0030', 'GFP', 'B0015'] J23109-B0031-GFP ['J23109', 'B0031', 'GFP', 'B0015'] J23109-B0032-GFP ['J23109', 'B0032', 'GFP', 'B0015'] J23110-B0034-GFP ['J23110', 'B0034', 'GFP', 'B0015'] J23110-B0030-GFP ['J23110', 'B0030', 'GFP', 'B0015'] J23110-B0031-GFP ['J23110', 'B0031', 'GFP', 'B0015'] J23110-B0032-GFP ['J23110', 'B0032', 'GFP', 'B0015'] J23111-B0034-GFP ['J23111', 'B0034', 'GFP', 'B0015'] J23111-B0030-GFP ['J23111', 'B0030', 'GFP', 'B0015'] J23111-B0031-GFP ['J23111', 'B0031', 'GFP', 'B0015'] J23111-B0032-GFP ['J23111', 'B0032', 'GFP', 'B0015'] J23112-B0034-GFP ['J23112', 'B0034', 'GFP', 'B0015'] J23112-B0030-GFP ['J23112', 'B0030', 'GFP', 'B0015'] J23112-B0031-GFP ['J23112', 'B0031', 'GFP', 'B0015'] J23112-B0032-GFP ['J23112', 'B0032', 'GFP', 'B0015'] J23113-B0034-GFP ['J23113', 'B0034', 'GFP', 'B0015'] J23113-B0030-GFP ['J23113', 'B0030', 'GFP', 'B0015'] J23113-B0031-GFP ['J23113', 'B0031', 'GFP', 'B0015'] J23113-B0032-GFP ['J23113', 'B0032', 'GFP', 'B0015'] J23114-B0034-GFP ['J23114', 'B0034', 'GFP', 'B0015'] J23114-B0030-GFP ['J23114', 'B0030', 'GFP', 'B0015'] J23114-B0031-GFP ['J23114', 'B0031', 'GFP', 'B0015'] J23114-B0032-GFP ['J23114', 'B0032', 'GFP', 'B0015'] J23115-B0034-GFP ['J23115', 'B0034', 'GFP', 'B0015'] J23115-B0030-GFP ['J23115', 'B0030', 'GFP', 'B0015'] J23115-B0031-GFP ['J23115', 'B0031', 'GFP', 'B0015'] J23115-B0032-GFP ['J23115', 'B0032', 'GFP', 'B0015'] J23116-B0034-GFP ['J23116', 'B0034', 'GFP', 'B0015'] J23116-B0030-GFP ['J23116', 'B0030', 'GFP', 'B0015'] J23116-B0031-GFP ['J23116', 'B0031', 'GFP', 'B0015'] J23116-B0032-GFP ['J23116', 'B0032', 'GFP', 'B0015'] J23117-B0034-GFP ['J23117', 'B0034', 'GFP', 'B0015'] J23117-B0030-GFP ['J23117', 'B0030', 'GFP', 'B0015'] J23117-B0031-GFP ['J23117', 'B0031', 'GFP', 'B0015'] J23117-B0032-GFP ['J23117', 'B0032', 'GFP', 'B0015'] J23118-B0034-GFP ['J23118', 'B0034', 'GFP', 'B0015'] J23118-B0030-GFP ['J23118', 'B0030', 'GFP', 'B0015'] J23118-B0031-GFP ['J23118', 'B0031', 'GFP', 'B0015'] J23118-B0032-GFP ['J23118', 'B0032', 'GFP', 'B0015']
The final step is to create the Template, and call the run method on it
Loop_Protocol = Loop_Assembly.Template(
Enzyme=Enzyme,
Buffer=Buffer,
Volume=Final_Volume,
Assemblies=Assemblies,
Backbone_to_Part=Backbone_to_Part_Ratios,
Repeats=Repeats,
Name=Protocol_Name,
Source_Plates=Source_Plates,
Destination_Plate_Layout=Assembly_Plate_Layout,
Picklist_Save_Directory=Picklist_Save_Directory,
Metadata=Metadata,
Merge=Merge_Picklists
)
Loop_Protocol.run()
..\..\..\..\Resources\data\Merged Example Loop Assembly-384PP.csv ..\..\..\..\Resources\data\Merged Example Loop Assembly-384LDV-(Reagents).csv ..\..\..\..\Resources\data\Merged Example Loop Assembly-6RES-(Water and Buffer Plate).csv