Feb 2022 - DNA-BOT has now been updated to produce scripts that run on the Opentrons OT2 in APIv2. It also incorporates options for different hardware configurations by producing multiple scripts for each of the 4 steps. The Thermocycler module can now be optionally used in the step 1 clip reactions as well as the step 4 transformations. In addition, different labware inputs are available through the Graphical User Interface (GUI) or Command Line Interface (CLI).
This work was originally published in OUP Synthetic Biology
Users looking to implement the DNA-BOT workflow are encouraged to consult the instructions. If you are looking to contribute to this project, please raise an issue or pull request. Otherwise, feel free to reach out to geoffbaldwin.
dnabot can be run in 2 modes:
- with a graphical interface: see
Running the dnabot app
section in instructions. dnabot was developed using Python v3.7. Refer to requirements.txt. - without a graphical interface: you need to specify all settings through the command line, you can see the instructions in the sections below.
conda create --name <myenv>
conda activate <myenv>
conda install -c conda-forge -c brsynth dnabot
<myenv>
has to be replaced by whatever meaningful name that will pleased the user.
conda activate <myenv>
python -m dnabot.dnabot_app --help
python -m dnabot.dnabot_app
conda activate <myenv>
python -m dnabot.dnabot_app nogui --help
python -m dnabot.dnabot_app nogui \
--construct_path /path/to/constructs.csv \
--source_paths /path/to/linker_parts_coord.csv /path/to/user_parts_coord.csv \
--output_dir /path/to/output/dir
usage: dnabot_app.py [-h] [--default_settings_file DEFAULT_SETTINGS_FILE] {nogui} ...
DNA assembly using BASIC on OpenTrons.
positional arguments:
{nogui} Optional, switch to define settings from the terminal instead of the graphical interface. Type "python dnabot_app.py
nogui -h" for more info.
optional arguments:
-h, --help show this help message and exit
--default_settings_file DEFAULT_SETTINGS_FILE
Optional, file providing labware IDs and parameter to be used. Default:
/Users/tduigou/code/dnabot/dnabot/default_settings.yaml.
usage: dnabot_app.py nogui [-h] --construct_path CONSTRUCT_PATH --source_paths SOURCE_PATHS [SOURCE_PATHS ...]
[--etoh_well ETOH_WELL] [--soc_column SOC_COLUMN] [--output_dir OUTPUT_DIR]
[--template_dir TEMPLATE_DIR]
optional arguments:
-h, --help show this help message and exit
--construct_path CONSTRUCT_PATH
File listing constructs to be implemented.
--source_paths SOURCE_PATHS [SOURCE_PATHS ...]
File(s) listing parts to be used in constructs.
--etoh_well ETOH_WELL
Coordinates of the well plate providing ethanol for the purification step. Default: A11
--soc_column SOC_COLUMN
Coordinate of the column plate providing SOC media for the transformation step. Default: 1
--output_dir OUTPUT_DIR
Output directory. Default: same directory than the one containing the 'construct_path' file
--template_dir TEMPLATE_DIR
Template directory. Default: 'template_ot2_scripts' located next to the present script.
Use the --default_settings_file
argument to set different default values. This option is
available either using the GUI or the CLI interface.
conda activate <myenv>
python -m dnabot.dnabot_app --default_settings_file /path/to/custom/default_settings.yaml.
The default settings file should follow the structure below (yaml file). The
labware IDs to be used can be updated with the labwares
section, while the
parameters for the seperation step are listed in the parameters
section.
labwares:
# Pipettes #############################################
# Opentrons P20 Single-Channel Electronic Pipette
p20_single:
id: p20_single_gen2
# Opentrons P300 8-Channel Electronic Pipette
p300_multi:
id: p300_multi_gen2
# Modules ###############################################
# Opentrons magnetic module (step: purification)
mag_deck:
id: magdeck
# id: magnetic module gen2 # BRS
# Tip racks #############################################
# Opentrons 20μL tips rack
96_tiprack_20ul:
id: opentrons_96_tiprack_20ul
# id: tipone_3dprinted_96_tiprack_20ul # BRS
# Opentrons 300μL tips rack
96_tiprack_300ul:
id: opentrons_96_tiprack_300ul
# id: tipone_yellow_3dprinted_96_tiprack_300ul # BRS
# Plates ################################################
# Opentrons 4-in-1 tubes rack for 1.5 ml eppendorf tubes (steps: clip, assembly, transformation)
24_tuberack_1500ul:
id: e14151500starlab_24_tuberack_1500ul
# id: opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap # BRS
# Clip reaction source plate (steps: clip)
clip_source_plate:
id: 4ti0960rig_96_wellplate_200ul
# id: green_96_wellplate_200ul_pcr # BRS (transparent)
# Clip reaction plate (steps: clip, purif, assembly)
clip_plate:
id: 4ti0960rig_96_wellplate_200ul
# id: black_96_wellplate_200ul_pcr # BRS (black)
# Mix plate (step: purification)
mix_plate:
id: 4ti0960rig_96_wellplate_200ul
# id: black_96_wellplate_200ul_pcr # BRS (black)
# Final assembly plate (steps: assembly, transformation)
final_assembly_plate:
id: 4ti0960rig_96_wellplate_200ul
# id: black_96_wellplate_200ul_pcr # BRS (black)
# Transformation plate with thermocycler (step: transformation)
transfo_plate:
id: 4ti0960rig_96_wellplate_200ul
# id: black_96_wellplate_200ul_pcr # BRS (black)
# Transformation plate without thermocycler (step: transformation)
transfo_plate_wo_thermo:
id: 4ti0960rig_96_wellplate_200ul
# id: green_96_wellplate_200ul_pcr # BRS (transparent)
# Agar plate (transformation step)
agar_plate:
id: 4ti0960rig_96_wellplate_200ul
# id: thermoomnitrayfor96spots_96_wellplate_50ul # BRS
# Reservoir plate 21 mL 12 channels (step: purification)
12_reservoir_21000ul:
id: 4ti0131_12_reservoir_21000ul
# id: citadel_12_wellplate_22000ul # BRS
# 96 deep well plate 2 mL wells (steps; purification, transormation)
96_deepwellplate_2ml:
id: 4ti0136_96_wellplate_2200ul
# id: transparent_96_wellplate_2ml_deep # BRS
# Corning 12 Well Plate 6.9 mL Flat (step: transformation)
12_corning_wellplate:
id: corning_12_wellplate_6.9ml_flat
# id: sarstedtcplatte_12_wellplate_6640ul # BRS
parameters:
# Clip reaction step ####################################
# Keep the thermocycler lid closed at 4°C at the end of execution?
# 1 for yes, 0 for no
clip_keep_thermo_lid_closed:
value: 0
# Purification step #####################################
# Magnetic module height (mm) - purification step
purif_magdeck_height:
value: 20
# value: 10.8 # BRS
# Washing time (min) - purification step
purif_wash_time:
value: 0.5
# Bead ratio - purification step
purif_bead_ratio:
value: 1.8
# Incubation time (min) - purification step
purif_incubation_time:
value: 5
# Settling time (min) - purification step
purif_settling_time:
value: 2
# value: 6 # BRS
# Drying time (min) - purification step
purif_drying_time:
value: 5
# value: 15 # BRS
# Elution time (min) - purif step
purif_elution_time:
value: 2
# value: 5 # BRS
# Transformation step ###################################
# Incubation temperature
transfo_incubation_temp:
value: 4
# value: 8 # BRS
# Incubation time (min)
transfo_incubation_time:
value: 20
# value: 30 # BRS
After a git clone:
conda env create -f environment.yaml -n <dev_env>
conda develop -n <dev_env> .
You may be prompted to install conda-build
in your base environment (conda install conda-build
).
The default conda environment name will be dnabot-dev
if not specified by -n <dev-env>
.
Test your installation with:
conda activate <dev_env>
python -m dnabot.dnabot_app nogui --help
python -m pytest tests
To uninstall:
conda deactivate
conda env remove -n <dev_env>
You need to install pytest if it's not done yet (conda install pytest
).
conda install pytest
python -m pytest tests
The update of DNABOT to APIv2 and improvements to the front end involved the work of several people:
- Thomas Duigou - tduigou
- Geoff Baldwin - geoffbaldwin
- Gizem Buldum - gizembuldum
Initial work revising the template scripts to run in Opentrons APIv2 was done by a team of Masters students from the MRes in Systems and Synthetic Biology at Imperial College London, thanks to:
- Xin Luo
- Ruihan Bai
- Zhenhua Wu
- Lianne Wu
- Ting An Lee
- Xiangming Xu
The original code for DNABOT produced OT2 scripts that ran in APIv1 and was authored by:
- Matthew C Haines - hainesm6
This project is licensed under the MIT License - see the LICENSE file for details
- Marko Storch for all his help with instructions and DNA-BOT manuscript.
- Geoff Baldwin for all his help with the DNA-BOT manuscript.