Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Mirrors
backtranslate
Commits
645d598f
Commit
645d598f
authored
Sep 09, 2015
by
Jeroen F.J. Laros
Browse files
Documentation, implemented improvable substitution detection.
parent
802cbc89
Changes
4
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
645d598f
...
...
@@ -3,12 +3,34 @@ This library provides functions for back translation from amino acids to
nucleotides.
from backtranslate.backtranslate import (
reverse_translation_table, one_subst
, subst_to_var
)
reverse_translation_table, one_subst)
# First create the reverse translation table for the organism of interest.
back_table = reverse_translation_table(1)
# Find all substitutions that transform the codon 'TTG' into a stop codon.
substitutions = one_subst(back_table, 'TGG', '*')
Sometimes we do not have access to the DNA sequence so we have to find
possible substitutions from the amino acids directly.
from backtranslate.backtranslate import (
reverse_translation_table, one_subst_without_dna)
# Find all substitutions that transform a Tryptophan into a stop codon.
substitutions = one_subst_without_dna(back_table, 'W', '*')
To find out which substitution predictions can be improved by adding codon
information, use the following function.
from backtranslate.backtranslate import improvable_substitutions
improvable_substitutions(back_table)
To get substitutions in a readable format, we can use the following:
from backtranslate.backtranslate import subst_to_var
# Transform the substitutions to HGVS.
variants = subst_to_var('TGG', substitutions, 12)
# Print the variants in human readable format.
...
...
backtranslate/backtranslate.py
View file @
645d598f
...
...
@@ -17,6 +17,19 @@ def _three_to_one():
return
protein_letters_3to1
def
_compare_dict
(
d1
,
d2
):
"""
"""
if
len
(
d1
)
!=
len
(
d2
):
return
False
for
item
in
d1
:
if
d1
[
item
]
!=
d2
[
item
]:
return
False
return
True
def
reverse_translation_table
(
table_id
=
1
):
"""
Calculate a reverse translation table.
...
...
@@ -108,4 +121,31 @@ def subst_to_var(reference_codon, substitutions, offset=0):
return
variants
def
improvable_substitutions
(
back_table
):
"""
Calculate all pairs of amino acid substututions that can be improved by
looking at the underlying codon.
:arg dict back_table: Reverse translation table.
:returns list: List of improvable substitutions.
"""
substitutions
=
set
()
for
reference_amino_acid
in
back_table
:
for
sample_amino_acid
in
back_table
:
substitutions_without_dna
=
one_subst_without_dna
(
back_table
,
reference_amino_acid
,
sample_amino_acid
)
for
codon
in
back_table
[
reference_amino_acid
]:
substitutions_with_dna
=
one_subst
(
back_table
,
codon
,
sample_amino_acid
)
if
(
substitutions_with_dna
and
not
_compare_dict
(
substitutions_without_dna
,
substitutions_with_dna
)
and
reference_amino_acid
!=
sample_amino_acid
):
substitutions
.
add
(
(
reference_amino_acid
,
sample_amino_acid
))
return
substitutions
protein_letters_3to1
=
_three_to_one
()
heatmap.ipynb
0 → 100644
View file @
645d598f
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from backtranslate.backtranslate import *"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"back_table = reverse_translation_table(1)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 43
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"table = []\n",
"\n",
"for i in back_table:\n",
" table.append([])\n",
" for j in back_table:\n",
" s = one_subst_without_dna(back_table, i, j)\n",
" table[-1].append(int(sum(map(len, s.values()))))\n",
"\n",
"for i in table:\n",
" print i"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[4, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0]\n",
"[0, 2, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1]\n",
"[1, 0, 2, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]\n",
"[1, 0, 2, 2, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1]\n",
"[1, 1, 1, 1, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0]\n",
"[0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 1]\n",
"[0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 1, 2, 1, 0, 0, 1, 1, 1, 0, 1, 0]\n",
"[0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 1, 2, 1, 0, 1, 0, 0, 0, 1]\n",
"[0, 0, 1, 0, 0, 0, 1, 0, 2, 1, 1, 0, 2, 1, 0, 0, 1, 1, 0, 0, 0]\n",
"[0, 2, 1, 0, 1, 0, 0, 0, 1, 4, 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 2]\n",
"[0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 1, 0]\n",
"[0, 0, 0, 0, 0, 3, 1, 1, 0, 2, 1, 6, 0, 1, 1, 1, 1, 0, 1, 1, 0]\n",
"[0, 0, 0, 1, 0, 0, 1, 1, 2, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1]\n",
"[0, 0, 1, 0, 0, 0, 0, 2, 1, 1, 0, 1, 0, 2, 1, 0, 1, 0, 0, 0, 0]\n",
"[1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 4, 1, 1, 1, 0, 0, 0]\n",
"[1, 2, 0, 0, 1, 1, 1, 0, 0, 2, 0, 1, 1, 0, 1, 4, 3, 2, 1, 0, 1]\n",
"[0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, 6, 1, 1, 0, 0]\n",
"[1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 4, 0, 0, 0]\n",
"[0, 2, 0, 0, 1, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0]\n",
"[1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 4, 0]\n",
"[0, 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 2]\n"
]
}
],
"prompt_number": 44
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"imshow(table, interpolation='nearest', shape=(500, 500))\n",
"xticks(range(21), back_table.keys())\n",
"yticks(arange(21), back_table.keys());"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x7f048cc1bc50>"
]
}
],
"prompt_number": 72
}
],
"metadata": {}
}
]
}
\ No newline at end of file
misc/test.py
deleted
100644 → 0
View file @
802cbc89
#!/usr/bin/env python
from
backtranslate.backtranslate
import
(
reverse_translation_table
,
one_subst_without_dna
,
one_subst
)
back_table
=
reverse_translation_table
(
1
)
result
=
set
()
for
aa1
in
back_table
:
for
aa2
in
back_table
:
p
=
one_subst_without_dna
(
back_table
,
aa1
,
aa2
)
for
codon
in
back_table
[
aa1
]:
q
=
one_subst
(
back_table
,
codon
,
aa2
)
#print aa1, aa2, p, codon, q,
if
q
and
str
(
p
)
!=
str
(
q
)
and
aa1
!=
aa2
:
#print '<--',
result
.
add
((
aa1
,
aa2
))
#print
print
result
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment