Enzyme selection for DNA verification and identification
Project description
BandWitch
Bandwitch (full documentation here) is a Python library for the planning and analysis of restriction experiments in DNA assembly operations. Bandwitch implements method to select the best enzyme(s) to validate or identify DNA assemblies. It also provides report generation methods to automatically validate/identify assemblies from experimental data.
You can try BandWitch’s enzyme suggestion feature in this web demo, and the sequence validation (from AATI fragment analyzer files) in this other demo
Installation
You can install DnaCauldron through PIP
sudo pip install bandwitch
On Ubuntu at least, you may need to install libblas first:
sudo apt-get install libblas-dev liblapack-dev
Alternatively, you can unzip the sources in a folder and type
sudo python setup.py install
Enzyme selection with BandWitch
In the following examples, we assume that we have a set of 12 constructs which we will need to either validate (i.e. we digest these constructs and compare each pattern with the expected pattern for that construct) or identify (i.e. we will digest an a-priori unknown construct and use the migration patterns to un-ambiguously identify each construct among the 12 possible candidates).
For validation purposes, the difficulty is to find a digestion that will produce harmonious patterns for all the constructs at once: well-spaced bands, and not too many or too few of them. For identification purposes, the difficulty is to find a digestion giving very distant patterns for each construct in the set of candidates.
Every time when the problem cannot be solved with a single digestion, BandWitch can propose 2 or 3 digestions which collectively solve the problem.
Important: when providing BandWitch with a record, make sure to set the linearity/circularity with record.linear=True/False.
Here is the code to select enzymes that will produce nice patterns for all constructs, for validation:
from bandwitch import IdealDigestionsProblem, LADDERS, load_genbank
# DEFINE THE SEQUENCES AND THE ENZYME SET
enzymes = ["EcoRI", "BamHI", "XhoI", "EcoRV", "SpeI", "XbaI",
"NotI", "SacI", "SmaI", "HindIII", "PstI"]
sequences = [
load_genbank(genbank_file_path, name=f, linear=False)
for genbank_file_path in some_list_of_files)
]
# SELECT THE BEST SINGLE DIGESTION WITH AT MOST ENZYMES
problem = IdealDigestionsProblem(enzymes=enzymes,
ladder=LADDERS['100_to_4k'],
sequences=sequences,
max_enzymes_per_digestion=2)
score, selected_digestions = problem.select_digestions(max_digestions=1)
# PLOT THE BAND PATTERNS PRODUCED BY THE SELECTED DIGESTION
problem.plot_digestions(
digestions=selected_digestions,
patterns_props={'label_fontdict': {'rotation': 35}},
target_file="ideal_digestions.png"
)
Result:
To select enzymes that will produce different patterns for each construct, for identification:
from bandwitch import (SeparatingDigestionsProblem, list_common_enzymes,
LADDERS, load_genbank)
# DEFINE SEQUENCES AND ENZYME SET (6-CUTTERS WITH >3 COMMERCIAL PROVIDERS)
enzymes = list_common_enzymes(site_length=(6,), min_suppliers=3)
sequences = [
load_genbank(genbank_file_path, name=f)
for genbank_file_path in some_list_of_files)
]
# SELECT THE BEST DIGESTION PAIRS (AT MOST 1 ENZYME PER DIGESTION)
problem = SeparatingDigestionsProblem(enzymes=enzymes,
ladder=LADDERS['100_to_4k'],
sequences=sequences,
max_enzymes_per_digestion=1)
score, selected_digestions = problem.select_digestions(max_digestions=2)
# GENERATE A FIGURE OF THE BAND PATTERNS
problem.plot_digestions(
selected_digestions,
patterns_props={'label_fontdict': {'rotation': 35}},
target_file="separating_digestions.png"
)
problem.plot_distances_map(digestions=selected_digestions,
target_file="separating_digestions_distances.png")
Result:
Usage: Construct validation or identification from experimental data
This part is still under construction.
Bandwitch can process output files from an automated fragment analyzer and produce informative reports as illustrated below:
Contribute
BandWitch is an open-source library originally written at the Edinburgh Genome Foundry by Zulko. It is released on Github under the MIT licence (¢ Edinburgh Genome Foundry), everyone is welcome to contribute.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file bandwitch-0.1.1.tar.gz
.
File metadata
- Download URL: bandwitch-0.1.1.tar.gz
- Upload date:
- Size: 36.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b0dcb43711c76eb468b5b7fb8d60c584ffd1850060342a4fef500f455e1858e |
|
MD5 | 2221385f5afce51aefbe4501ea29b9f1 |
|
BLAKE2b-256 | 5c6399fa7cf66bb41a8e015be7f9a7026a41a862ae7ec1a41cc97629d8cfbdea |