Source code for dnachisel.biotools.enzymes_operations
"""Methods for enzymes operations."""
from .sequences_operations import all_iupac_variants
from Bio import Restriction
[docs]def list_common_enzymes(
site_length=(6,), opt_temp=(37,), min_suppliers=1, site_unlike=()
):
"""Return a list of enzyme names with the given constraints.
Parameters
----------
site_length
List of accepted site lengths (6, 4, ...)
opt_temp
List of accepted optimal temperatures for the enzyme
min_suppliers
Minimal number registered suppliers in the Biopython data. A minimum
of 3 known suppliers returns the most common enzymes.
site_unlike
List of (ambiguous or unambiguous) DNA sequences that should NOT be
recognized by the selected enzymes.
"""
site_unlike = set(
[
variant
for enzyme in site_unlike
for variant in all_iupac_variants(
Restriction.__dict__[enzyme].site
)
]
)
def is_valid(enzyme_name):
enzyme = Restriction.__dict__[enzyme_name]
return (
len(enzyme.site) in site_length
and enzyme.opt_temp in opt_temp
and len(enzyme.supplier_list()) >= min_suppliers
and len(
set(all_iupac_variants(enzyme.site)).intersection(site_unlike)
)
== 0
)
return [
enzyme_name
for enzyme_name in Restriction.AllEnzymes.elements()
if is_valid(enzyme_name)
]