Source code for moclo.kits.ig

# coding: utf-8
"""An implementation of the Icon Genetics ToolKit for the Python MoClo library.

References:
    1. `Weber, E., Engler, C., Gruetzner, R., Werner, S., Marillonnet, S. (2011).
       A Modular Cloning System for Standardized Assembly of Multigene Constructs.
       PLOS ONE, 6(2), e16765.
       <https://doi.org/10.1371/journal.pone.0016765>`_
    2. `Werner, S., Engler, C., Weber, E., Gruetzner, R., & Marillonnet, S. (2012).
       Fast track assembly of multigene constructs using Golden Gate cloning
       and the MoClo system. Bioengineered, 3(1), 38–43.
       <https://doi.org/10.4161/bbug.3.1.18223>`_
"""
from __future__ import absolute_import
from __future__ import unicode_literals

from Bio.Restriction import BsaI, BpiI

from ..core import parts, modules, vectors

__author__ = "Martin Larralde <martin.larralde@ens-paris-saclay.fr>"
__version__ = (
    __import__("pkg_resources")
    .resource_string(__name__, "ig.version")
    .strip()
    .decode("ascii")
)


# VECTORS ####################################################################


[docs]class IGEntryVector(vectors.EntryVector): """An Icon Genetics entry vector. References: *Weber et al.*, Figure 2A. """ cutter = BpiI
[docs] @classmethod def structure(cls): return ( "GGTCTC" # BsaI "N" "(NNNN)" # Downstream overhang "(NN" "GTCTTC" # BpiI "N*" # Placeholder sequence "GAAGAC" # BpiI "NN)" "(NNNN)" # Upstream overhang "N" "GAGACC" # BsaI )
[docs]class IGCassetteVector(vectors.CassetteVector): """An Icon Genetics cassette vector. References: *Weber et al.*, Figure 4A. """ cutter = BsaI
[docs] @classmethod def structure(cls): # noqa: D105 return ( "GAAGAC" # BpiI "NN" "NNNN" # Cassette upstream overhang "(NNNN)" # Cassette vector downstream overhang "(N" "GAGACC" # BsaI "N*" # Placeholder sequence "GGTCTC" # BsaI "N)" "(NNNN)" # Cassette vector upstream overhang "NNNN" # Cassette downstream overhang "NN" "GTCTTC" # BbsI )
class IGSingleCassetteVector(vectors.CassetteVector): """An Icon Genetics single cassette vector. These plasmids allow obtaining plasmids ready for plant transformation containing only a single transcription unit, assembled directly from entries, without using an intermediate *E. coli* plasmid. Danger: The resulting plasmid will not be a valid `IGCassette`! References: `AddGene MoClo <https://www.addgene.org/cloning/moclo/marillonnet/>`_ construct reference. """ cutter = BsaI
[docs]class IGDeviceVector(vectors.DeviceVector): """An Icon Genetics device vector. References: *Weber et al.*, Figure 4A. """ cutter = BpiI
# MODULES ####################################################################
[docs]class IGProduct(modules.Product): """An Icon Genetics MoClo product. """ cutter = BpiI
[docs]class IGEntry(modules.Entry): """An Icon Genetics MoClo entry. """ cutter = BsaI
[docs]class IGCassette(modules.Cassette): """An Icon Genetics MoClo cassette. """ cutter = BpiI
# PARTS ###################################################################### # Abstract ################################################################### class IGPart(parts.AbstractPart): """An Icon Genetics MoClo standard part. A part is a plasmid with standardized flanking overhang sequences that allows immediate type recognition. """ cutter = BsaI signature = NotImplemented # Level 0 ####################################################################
[docs]class IGPromoter(IGPart, IGEntry): """An Icon Genetics promoter part. """ signature = ("GGAG", "TACT")
[docs]class IGUntranslatedRegion(IGPart, IGEntry): """An Icon Genetics 5' UTR part. """ signature = ("TACT", "AATG")
[docs]class IGSignalPeptide(IGPart, IGEntry): """An Icon Genetics signal peptide part. """ signature = ("AATG", "AGGT")
[docs]class IGCodingSequence(IGPart, IGEntry): """An Icon Genetics CDS part. """ signature = ("AGGT", "GCTT")
[docs]class IGTerminator(IGPart, IGEntry): """An Icon Genetics terminator part. """ signature = ("GCTT", "CGCT")
# Level 0 ####################################################################
[docs]class IGEndLinker(IGPart, IGCassette): """An Icon Genetic end linker part. References: *Weber et al.*, Figure 5. """ signature = ("NNNN", "GGGA")
# Level M ####################################################################
[docs]class IGLevelMEndLinker(IGPart, IGCassette): signature = ("NNNN", "GGGA") # FIXME: add prefix BsaI
[docs] @classmethod def structure(cls): return super(IGLevelMEndLinker, cls).structure()
[docs]class IGLevelMVector(IGPart, IGDeviceVector): cutter = BpiI signature = ("GGGA", "NNNN") # FIXME: add prefix BsaI
[docs] @classmethod def structure(cls): return super(IGLevelMVector, cls).structure()
# Level P ####################################################################
[docs]class IGLevelPEndLinker(IGPart, IGEntry): # FIXME: hierarchy ? cutter = BsaI signature = ("NNNN", "GGGA") # FIXME: add prefix BpiI
[docs] @classmethod def structure(cls): return super(IGLevelPEndLinker, cls).structure()
[docs]class IGLevelPVector(IGPart, IGCassetteVector): # FIXME: hierarchy ? cutter = BsaI signature = ("GGGA", "NNNN") # FIXME: add prefix BpiI
[docs] @classmethod def structure(cls): return super(IGLevelPVector, cls).structure()