Skip to content

Edinburgh-Genome-Foundry/genedom

Repository files navigation

logo

GitHub CI build status https://coveralls.io/repos/github/Edinburgh-Genome-Foundry/genedom/badge.svg?branch=master

Genedom is a Python package for managing the domestication of genetic parts, which means modifying their sequences to make them compatible with a given genetic assembly standard. Genedom binds together a sequence optimizer, information on the genetic standard, and a reporting routine to automate the domestication of large batches in an easy and human-friendly way.

schema

Features include:

  • User-defined part domesticators with extra nucleotides optionally added to both ends, hard constraints on the sequence (such as enforcing absence of a restriction site) and optimization objectives (such as codon optimization).
  • Built-in pre-defined domesticators for popular genetic assembly standards (well, only EMMA at the moment).
  • Generation of barcodes that can be added to the sequence (but won't be in final constructs). This allows easy verification of a sequence file or a DNA sample (e.g. in case of label mix-up).
  • Routine for batch-domesticating sequences with report generation, including reports on each sequence optimization, spreadsheets of parts, ready-to-order FASTA and Genbank files of the parts, and a summary report to quickly verify everything, with a list of every domesticator used, for traceability.

An example summary report:

report

You can also use Genedom online via EGF's Domesticate Part Batches web app.

Usage examples

Simple domestication of one part

from genedom import (GoldenGateDomesticator, random_dna_sequence,
                     write_record)
sequence = random_dna_sequence(2000, seed=123)
domesticator = GoldenGateDomesticator("ATTC", "ATCG", enzyme='BsmBI')
domestication_results = domesticator.domesticate(sequence, edit=True)
print (domestication_results.summary())
write_record(domestication_results.record_after, 'domesticated.gb')

Generating a collection of 20bp barcodes

(see docs for more options)

from genedom import BarcodesCollection

barcodes_collection = BarcodesCollection.from_specs(
    n_barcodes=96, barcode_length=20,
    forbidden_enzymes=('BsaI', 'BsmBI', 'BbsI'))

barcodes_collection.to_fasta('example_barcodes_collection.fa')

Domesticating a batch of parts with PDF report

from genedom import BUILTIN_STANDARDS, load_record, batch_domestication

records = [
    load_record(filepath, name=filename)
    for filepath in records_filepaths
]
barcodes_collection = BarcodesCollection.from_specs(n_barcodes=10)
batch_domestication(records, 'domestication_report.zip',
                    barcodes=barcodes,  # optional
                    standard=BUILTIN_STANDARDS.EMMA)

Installation

You can install Genedom through PIP:

pip install genedom

Alternatively, you can unzip the sources in a folder and type:

python setup.py install

License = MIT

Genedom is a free/libre and open-source software released on Github under the MIT license (Copyright 2018 Edinburgh Genome Foundry, University of Edinburgh). It was originally written by Zulko and is currently being developed by Peter Vegh. Everyone is welcome to contribute!