DNA Cauldron Documentation¶
DNA Cauldron is a Python library to simulate restriction-based assembly operations. Provided the sequences of genetic parts and receptor vectors, DNA Cauldron will compute the assembli(es) that could result from the mix.
DNA Cauldron was written for Synthetic Biology applications - typically, to predict and validate batches of parts-based assemblies. It is simple to use, plays well with BioPython, can import and export Genbank (it conserves all features), and provides advanced methods such as connector part auto-selection, backbone selection for linear parts, methods to select constructs subsets when dealing with large combinatorial assemblies.
Try it online ! Use this web service to predict the outcome of a batch of (possibly combinatorial) Type 2S assemblies.
You can install DNA Cauldron through PIP
sudo pip install dnacauldron
Alternatively, you can unzip the sources in a folder and type
sudo python setup.py install
To assemble several parts and a receptor plasmid into a single construct, use single_assembly. The parts can be provided either as paths to genbank files or as Biopython records. DNA Cauldron returns a Biopython record of the final assembly, and (optionally) writes it to a Genbank file.
from dnacauldron.utils import single_assembly final_construct = single_assembly( parts_filenames=["partA.gb", "partB.gb", "partC.gb", "partD.gb"], receptor="receptor.gb", # Receptor plasmid for the final assembly outfile="final_construct.gb", # Name of the output enzyme="BsmBI" # enzyme used for the assembly )
The following example imports parts from Genbank files and outputs all possible outcomes of BsmBI-based Golden-Gate assembly as new genbank files 001.gb, 002.gb, etc. We ignore the final assemblies containing a BsmBI site as these are unstable.
from Bio import SeqIO # for exporting to Genbank from dnacauldron import (RestrictionLigationMix, NoRestrictionSiteFilter, load_genbank) enzyme = "BsmBI" filters = [NoRestrictionSiteFilter(enzyme)] parts_files = ["partA.gb", "partA2.gb", "partB.gb", "partB2.gb", "partC.gb", "receptor.gb"] parts = [load_genbank(filename, linear=False) for filename in parts_files] mix = RestrictionLigationMix(parts, enzyme) assemblies = mix.compute_circular_assemblies(seqrecord_filters=filters) for i, assembly in enumerate(assemblies): SeqIO.write(assembly, os.path.join("..", "%03d.gb" % i), "genbank")
Full Assembly report¶
DNA Cauldron also implements routine to generate reports on the assemblies, featuring the resulting constructs (in genbank and PDF format) as well as figures for verifying that the parts assembled as expected and help troubleshoot if necessary.
The following code produces a structured directory with various reports:
import dnacauldron as dc parts = [ dc.load_genbank("partA.gb", linear=False, name="PartA"), dc.load_genbank("partB.gb", linear=False, name="PartB"), dc.load_genbank("receptor.gb", linear=False, name="Receptor"), ] dc.full_assembly_report(parts, target="./my_report", enzyme="BsmBI", max_assemblies=40, fragments_filters='auto', assemblies_prefix='asm')
How it works¶
DNA Cauldron simulates enzyme digestions and computes sticky ends, then generates a graph of the fragments that bind together, and explores circular paths in this graph (which correspond to circular constructs), an idea also used in PyDNA and first described in Pereira et al. Bioinf. 2015 . DNA Cauldron adds methods to deal with combinatorial assemblies, selecting constructs based on a marker, etc.
DNA Cauldron is an open-source library originally written at the Edinburgh Genome Foundry by Zulko and is released on Github under the MIT licence (¢ Edinburgh Genome Foundry), everyone is welcome to contribute.Tweet