Translate DNA sequences to protein sequences using different genetic codes and translation tables
Project description
Genetic Codes
A Python and C library with no external dependencies for translating DNA sequences into protein sequences using different translation tables (aka genetic codes).
The NCBI Genetic Codes are central to working with alternate genetic codes. This Python tool kit includes a library that exposes the genetic codes so you can query a codon and get its variants or query a code and get its table. We also provide fast mechanisms to translate DNA sequences into protein sequences using the translation table of your choice.
Installation
You can install pygenetic_code
with pip.
pip install pygenetic_code
pygenetic_code --version
A conda installation is in the works!
Usage
There is a command line application, Python example code, and a library that you can use. The command line application and examples show you how to use the library.
Example code
These examples show you how to incorporate pygenetic_code
into your own Python code.
We have a very simple translate function that you can use if you want to translate one (or more) ORFs. The signature is
translate(dna_sequence, translation_table)
and we have a simple example that translates a sequence:
python examples/translate_a_sequence.py
We can also translate DNA sequences in all six reading frames, and here is an example that reads a fasta file and translates all six frames using the bacterial genetic code (translation table 11):
python examples/translate_sequence_in_all_frames.py -f tests/JQ995537.fna -t 11
or an alternate genetic code (translation table 15):
python examples/translate_sequence_in_all_frames.py -f tests/JQ995537.fna -t 15
Or you can translate the E. coli K-12 sequence, and so you can identify all the ORFs in that genome:
python examples/translate_sequence_in_all_frames.py -f tests/U00096.3.fna.gz -t 11
(yes, you can use gzip files without decompressing them).
This will take about 0.1 seconds to do the actual translation, but starting python and all the other overheads make it almost 3/4 second to run.
You can also look at the effect of translation tables on the same sequences by running
python examples/average_translation_length.py -f tests/JQ995537.fna # for crassphage
python examples/average_translation_length.py -f tests/U00096.3.fna.gz # for E. coli K-12
We recommend using our easy Python wrappers to access the translate functions
from pygenetic_code import translate, six_frame_translation
But you can also access our C library directly, using the PyGeneticCode
module (see below)
Command line applications
pygenetic_code
translates DNA sequences either in one reading frame or in all six reading frames using the translation table of your choice.
To translate a sequence in the current reading frame, you can use
pygenetic_code --translate
First, make sure you have a DNA sequence. We provide a few in tests/ including a very short sequence, crAssphage, and [E. coli])(tests/U00096.3.fna.gz).
Library
Using the C library directly in Python
You can import the C library by importing PyGeneticCode.
There are two main methods that you can call:
The first function just returns the translation of your DNA sequence in 5' -> 3' format, so for example, this is the method you might use to translate an ORF.
PyGeneticCode.translate(DNA_sequence, translation_table)
(See examples/translate_a_sequence.py for an example.
The second method returns all the 6 frame translations.
PyGeneticCode.translate_six_frames(DNA_sequence, translation_table, verbose)
(See examples/translate_sequence_in_all_frames.py for an example invocation.)
The DNA sequence is the DNA sequence you want to translate. The translation table must be one of the valid translation tables (see pygenetic_code/genetic_code.translation_tables for the valid tables).
Translate a codon
Another way to access the code in your python application is to access the translate_codon()
function, that has this signature:
amino_acid = translate_codon(codon, translation_table=1, one_letter=False)
The codon
is the codon that you want to translate as either an RNA (e.g. AUG
) or DNA (e.g. ATG
) sequence. The translation_table
is your required translation table (see the NCBI website for valid tables), and one_letter
is whether to return a three letter amino acid code (e.g. Met
or Ter
) or a one letter amino acid code (e.g. M
or *
).
The library provides other ways to access the genetic codes, and those are exemplified in the pytest
files in tests/
Viewing translation tables
You can print the translation tables using the pygenetic_code
command. There are currently a couple of options:
json
prints the table in machine readable json format.difference
prints a.tsv
file with the the difference from the standard (translation table 1) codemaxdifference
prints a.tsv
file with the difference from the most common amino acid. The main difference is thatTGA
is more frequently tryptophan than a stop.
Citing
Please cite this repository as:
Edwards, Robert A. 2023. pygenetic_code. https://github.com/linsalrob/genetic_codes. DOI: 10.5281/zenodo.10453453
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pygenetic_code-0.20.0.tar.gz
.
File metadata
- Download URL: pygenetic_code-0.20.0.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d4773e4e8a8b994e604b986ce831b12bbf68b41780e24377bfc14639e017423 |
|
MD5 | 124f202ee8466d976bfc66ae1ad7c30e |
|
BLAKE2b-256 | b66f034dc48dd7768cb5aecabb4c2b68e5ff48d7fea6ee3fc51fed7a068e7c11 |
File details
Details for the file pygenetic_code-0.20.0-cp312-cp312-manylinux_2_35_x86_64.whl
.
File metadata
- Download URL: pygenetic_code-0.20.0-cp312-cp312-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 25.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4998e98cc9fe27d2baf43900961d236754ac9cfaf532fc216f7ee00ac978007c |
|
MD5 | 87650f3d04db107475ba7a71984a3dea |
|
BLAKE2b-256 | 3f2f785e03d0bdd6b68b73979678af82750864ef1985ebaedff32718b0b63afa |