Skip to content
GitLab
Menu
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
591b3e30
Unverified
Commit
591b3e30
authored
Jun 19, 2020
by
Jeroen F.J. Laros
Browse files
Package rename.
parent
d60c01b3
Changes
15
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
591b3e30
*.egg-info
*.pyc
.cache/
.tox/
build/
dist/
docs/Makefile
docs/_build/
examples/.ipynb_checkpoints/
mutalyzer_backtranslate.egg-info
README.rst
View file @
591b3e30
...
...
@@ -5,14 +5,14 @@ Back translation
:target: https://github.com/mutalyzer/backtranslate/graphs/commit-activity
.. image:: https://travis-ci.org/mutalyzer/backtranslate.svg?branch=master
:target: https://travis-ci.org/mutalyzer/backtranslate
.. image:: https://readthedocs.org/projects/
simplerpc
/badge/?version=latest
:target: https://backtranslate.readthedocs.io/en/latest
.. image:: https://readthedocs.org/projects/
mutalyzer-backtranslate
/badge/?version=latest
:target: https://
mutalyzer-
backtranslate.readthedocs.io/en/latest
.. image:: https://img.shields.io/github/release-date/mutalyzer/backtranslate.svg
:target: https://github.com/mutalyzer/backtranslate/releases
.. image:: https://img.shields.io/github/release/mutalyzer/backtranslate.svg
:target: https://github.com/mutalyzer/backtranslate/releases
.. image:: https://img.shields.io/pypi/v/backtranslate.svg
:target: https://pypi.org/project/backtranslate/
.. image:: https://img.shields.io/pypi/v/
mutalyzer-
backtranslate.svg
:target: https://pypi.org/project/
mutalyzer-
backtranslate/
.. image:: https://img.shields.io/github/languages/code-size/mutalyzer/backtranslate.svg
:target: https://github.com/mutalyzer/backtranslate
.. image:: https://img.shields.io/github/languages/count/mutalyzer/backtranslate.svg
...
...
@@ -30,4 +30,4 @@ nucleotides.
Please see ReadTheDocs_ for the latest documentation.
.. _ReadTheDocs: https://backtranslate.readthedocs.io
.. _ReadTheDocs: https://
mutalyzer-
backtranslate.readthedocs.io
docs/api.rst
0 → 100644
View file @
591b3e30
API documentation
=================
Main library
------------
.. automodule:: mutalyzer_backtranslate.backtranslate
:members:
Utils
-----
.. automodule:: mutalyzer_backtranslate.util
:members:
docs/conf.py
0 → 100644
View file @
591b3e30
import
os
import
subprocess
import
sys
subprocess
.
call
(
'pip install ..'
,
shell
=
True
)
from
mutalyzer_backtranslate
import
_get_metadata
author
=
_get_metadata
(
'Author'
)
copyright
=
_get_metadata
(
'Author'
)
project
=
_get_metadata
(
'Name'
)
release
=
_get_metadata
(
'Version'
)
autoclass_content
=
'both'
extensions
=
[
'sphinx.ext.autodoc'
]
master_doc
=
'index'
docs/index.rst
View file @
591b3e30
...
...
@@ -8,4 +8,5 @@
install
usage
library
api
credits
docs/install.rst
View file @
591b3e30
...
...
@@ -5,7 +5,7 @@ The software is distributed via PyPI_, it can be installed with ``pip``:
::
pip install backtranslate
pip install
mutalyzer-
backtranslate
From source
...
...
@@ -21,5 +21,5 @@ the following commands.
pip install .
.. _PyPI: https://pypi.org/project/backtranslate/
.. _PyPI: https://pypi.org/project/
mutalyzer-
backtranslate/
.. _GitHub: https://github.com/mutalyzer/backtranslate
docs/library.rst
View file @
591b3e30
...
...
@@ -6,7 +6,7 @@ nucleotides.
.. code:: python
>>> from backtranslate import BackTranslate
>>> from
mutalyzer_
backtranslate import BackTranslate
>>>
>>> # Create a class instance, optionally giving the translation table id.
>>> bt = BackTranslate()
...
...
@@ -41,7 +41,7 @@ To get substitutions in a readable format, we can use the following:
.. code:: python
>>> from backtranslate.util import subst_to_cds
>>> from
mutalyzer_
backtranslate.util import subst_to_cds
>>>
>>> substitutions = bt.without_dna('W', '*')
>>>
...
...
examples/heatmap.ipynb
View file @
591b3e30
...
...
@@ -10,9 +10,7 @@
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"metadata": {},
"outputs": [
{
"name": "stdout",
...
...
@@ -29,15 +27,13 @@
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"metadata": {},
"outputs": [],
"source": [
"from collections import defaultdict\n",
"\n",
"from backtranslate import BackTranslate\n",
"from backtranslate.util import protein_letters"
"from
mutalyzer_
backtranslate import BackTranslate\n",
"from
mutalyzer_
backtranslate.util import protein_letters"
]
},
{
...
...
@@ -50,9 +46,7 @@
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"metadata": {},
"outputs": [],
"source": [
"bt = BackTranslate()"
...
...
@@ -67,10 +61,8 @@
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"table = []\n",
...
...
@@ -90,14 +82,12 @@
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAASgAAAD8CAYAAADE3zmUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAD
h0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAcnUlEQVR4nO3df9AcVZ3v8feHRIGIghB+KD91zeIuiFzIFWFXUeJeg3AF7mW9yYLKXm5RbgmIwCLq3mu8VbtarvgTdqksICKYoCg/tBBhFQqUgJtgIAkoQX4ZkCUhtWqUXwnf/aN7cJjMPM/pfrpnuofPq2oqT/ecOX1mnsn36T79PecoIjAza6ItRt0AM7NBHKDMrLEcoMyssRygzKyxHKDMrLEcoMyssRygzKxSki6S9LiklX2eO0NSSJqZUpcDlJlV7WJgbu9OSbsD/w14OLUiBygzq1RE3Ays7/PU54GzgOTs8OlVNWqQ7afNjF1fstek5Vbum17ntI3l2zPIpsRPIvXYqfWNo1F+RnV8N1KN9He+bNm6iNix7Mvnam6sY13aoVi2Cniqa9fCiFg40WskHQU8EhF3SkpuV+0f6a4v2Ysrd186ablZkxd53rb9YvMUrd++2mOn1jeORvkZ1fHdSDXS37n00FRevo51LCXtP6HQUxExO7VuSTOAj5Fd3hVS+BJP0tF5J9fri77WzJorlPYo4Y+A1wB3SnoQ2A24Q9Iuk72wTB/UfOBH+b9mNiae2yLtUVRErIiInSJir4jYC1gDHBARj0322kKHk7QN8OfAicC84k01syYKqjuDkrQIWALsLWmNpBPLtqtoH9RRwHURca+kJyQdGBHLyh7czBqi/OXbZiJiwqur/CwqSdETtvnA4vznxQy4zJN0kqSlkpau37S24CHMbBRq7IMqLfkMStL2wGHAGyQFMA0ISX8bPbPe5bccFwK8YavZnhHPrAWGHXxSFDmDOhb4WkTsmXd27Q48ALylnqaZ2TA18QyqSICaD1zZs+9b+G6eWeuF6ruLNxXJl3gR8fY++7402etW7puWhPm6+1JbAve9Lr1squ1HmOA3bqpOWCzyu0ktW8d3KPU7XOTzSX4/6VUO1MRLvBfxgAwz6+YAZWaN1cQAVWaoyy6SFkv6haRlkq6V9Md1NM7MhqPKRM0qFTqDUjYM+UrgqxExL9/3RmBn4N7qm2dmQ6Hhd4CnKHqJ93bg2Yg4v7MjIu6stklmNgpNvMQrGqD2BSYd2iLpJOAkAPbYo3irzGyoOpd4TVPLSV1ELIyI2RExmx1Lz6FlZkPUxD6oogFqFXBgHQ0xsxFKDE5ND1A/BLbML+EAkLSfJA93MWu51geofFDwMcA78jSDVcCngEknnjKz5gpaPtSlIyIeBd6TWn7axrR5oosMPUgdUjBrdXqd3zs8rVzq0IMiwzPaMH/5KN9PkfpGOcwm9TtcR51VaGInuTPJzazSCeuqVGQ+qE3ACuAlwEbgEuDzEfFcTW0zsyFqdYACnoyI/QEk7QR8HXgF8Ik6GmZmw9XEAFWqyysiHidLxDxZRVbhM7NGamoneenDRcT9ZNP+7tT7XPec5PGE5yQ3a7wxyYNK0p1Jrh2cSW7WBmMVoCS9FtgEPF5dc8xsVCpcF+8iSY9LWtm17x8l/UzSXZKulLRdSptKBShJOwLnA+f2ruhiZu1T8XxQFwNze/bdAOwbEfuRTc300ZSKitzF21rScv6QZvA14HMFXm9mDVbhwp03S9qrZ9/1XZu3ka0SNakiiyZMSy1bt9QM8dWz6m3HROrIDk/NQK7j2OP2fkapjkUTprzmR7EJ62ZK6l4KZWG+Fmaq/w1cnlLQmeRmBhQ6g1oXEbPLHEPSx8muwC5LKV84QHVllHcsjohPF63HzJpjGBPWSToBOBKYk9p3XeYM6vmMcjMbH3UGKElzgbOAQyPi96mva+A06WY2dBUmakpaBCwB9pa0RtKJwLnAy4EbJC2XdP6EleTKnEF17uZ1fCoikjq8zKy5KryLN7/P7gvL1FXLJV73oglb7OZFE8yarjMWr2k81MXMgGYOdXGagZm1f8K6Lr19UNdFxNlVNcjMRmMsAlSTMsrNrDpjEaCK2jQ9LbW/yETyqQscFJG6EEMdk9hXPeTjuEvTj33Z8ellq/ZiHT7TxAU1mtpJ7j4oMxufPqg+Q12OjogHK2uRmY3EWAQoPNTFbCyNS4AyszEzjMHCZUw1zeCBiDimt0B3Jjl7OJPcrA3GJUBNeomXT161EECzZ3tKYLOmKzZh3dD4Es/MgPE5gzKzMTNOfVBmNobGIkBFxDZFyk/bCNtOeUb3FyqSiZsqNUM8dSGG1IUdoPps4VFmh9chNcsf2pEh3tRFE8YiQJnZeGpigCrUby9pZ0lfl3S/pGWSlkjaLM3AzNqlMxYv5TFMyYeTJOAq4OaIeG1EHAjMA3arq3FmNjxtn7DuMOCZiHh+svOIeAj4cuWtMrPhGoM+qH2AO1IKek5ys/ZpYoAqfUUp6TxJd0r6t97nPCe5Wfs08RKvSIBaBRzQ2YiIDwJzAEcgs5arspNc0kWSHpe0smvf9pJukLQ6//eVKe0qEqB+CGwl6W+69s0o8Hoza6oKF+4ELgbm9uw7G/hBRMwCfpBvTyo5QOVrqR8NHCrpAUk/Ab4KfCS1DjNrrqoCVETczOa5o0eRxQvyf49OaVOhRM2I+BVZakGy1DnJixjlvNOpGeJFsp+rnue8jjmv68jeP+j2tHK3H5ReZ9W/81HOm17X8Qcp0L80U9LSru2F+QwmE9k5jx8AjwE7pxzImeRmVnSw8LqImF36WBEhKWkapgbOAGNmo1DzXbx/l/QqgPzfx1NeVHSoy4ae7RMknVukDjNrINU+1OUa4P35z+8Hrk55kc+gzAyo7gxK0iJgCbC3pDWSTgQ+DfyFpNXAO/LtSbkPyswqnbAuIuYPeGpO0bqKBqjuBRMAtic7dXsBL5pg1j5NHOpSNEC9YMEESScAm/Xme9EEs5YZg8HCZjbGHKDMrJE6Y/GaxgHKzMbjEq93wYSIuJhsYOBQjXL4QeqxiwxfOSVxyr/LjksrV2QoReqQnCLvJ/Uz+t7haeWKvJ86huSkSn3fo1zYYSKtD1BmNr7GLkBJ2lB0GSoza6axC1BmNh5C7iQ3swZ70ZxBOZPcrH2aGKBqOanrXjSBHT1luVkbNHHRBF/imVmlg4Wr5ABlZuORqGlm42vs7uI1PQeqqZPT96o6Q7xI1ndqnakLHEA9GeKpql4EYtRZ38ntnOJxfIlnZo3WxABV+KSue15ySe+SdK+kPattlpkNVbULd1am9BmUpDnAl4B3RsRD1TXJzEahiWdQpQKUpLcC/wK8KyJ+UW2TzGzYxmk+qC2Bq4C3RcTP+hVwJrlZ+zTxDKpMzHwWuBU4cVABZ5KbtUxD+6DKBKjngPcAb5L0sYrbY2YjUmWAkvRhSaskrZS0SNJWZdpU6qozIn4PHAEcly/KZ2YtV+HCnbsCpwKzI2JfYBowr0ybSt/Fi4j1kuYCN0taGxGbrY9nZu1QQ6LmdLJ1NJ8FZgCPlq2kkO7s8Yj4JfCaMgcehiJZwMddmlbusuPTytUxj3ZqhniRL9qs1WnlUrPDYbTzgledIZ46Z3uROot8L4eVSU6FE9ZFxCOSPgs8DDwJXB8R15epq4E3Fs1sFApc4s2UtLTrcVJ3PZJeCRxFdvLyauBlkhL/tL+Qh7qYGVDozHtdRGy2oniXdwAPRMRaAEnfBg4BEq9T/qDUGVT3cBcza79OH1RFd/EeBt4saYYkAXOAe8q0y2dQZgZU10keEbdLugK4A9gI/BRYWKYuBygzq3zCuoj4BPCJqdbjRRPMDGjmWDwvmmBmVfdBVcaXeGYGNHOwsAOUmTV20YSyl3gzJK3pepxeaavMbOjG5hIvIhrYnTY1qUNYUhUZzpA6nCJ12EPq8BUotsBCqqoXGqhj8Ys6Fk2oY4GFOn4//YzThHVmNoZae4knKSRd2rU9XdJaSd+tr2lmNjQNnbAu9Qzqd8C+kraOiCeBvwAeqa9ZZjZsrT2Dyl1LNkkdwHxgUfXNMbNRaeIZVJEAtRiYl0/duR8wcK1ZSSd1pmJg7dqpttHMatbURM3kABURdwF7kZ09XTtJWWeSm7VJPmFdymOYit7Fuwb4LPA2YIfKW2NmI9PEPqiiAeoi4D8iYoWkt9XQHjMbkdYHqIhYQ7bcuZmNkRoWTahEUoDqXiiha99NwE0VtydJHVnAVSuS/ZyaLXzQwNsSL1RkgYNURRYPqDr7uY5FBuo4dqo6MuOr0NoAZWZjbhwGC+cZ5ed0bZ8paUHlrTKzoWviXbyih3sa+B+SZtbRGDMbjdbnQeU2kk1+/uEa2mJmIzQOAQrgPOA4SdsOKuBMcrOWaehg4cIBKiJ+A1wCnDpBGWeSm7XMWASo3BeAE4GXVdgWMxuRzoR1VXWSS9pO0hWSfibpHkkHl2lXqQAVEeuBb5AFKTMbAxWfQX0RuC4iXg+8kZIrC0/lpuE5gO/mmY2DCvug8v7ptwIXAkTEMxHxH2WaVXSoyzZdP/87MKPMQc2seSrsX3oNsBb4iqQ3AsuAD0XE74pWVHsm+bSNsG1Cav+oJ6cfpdT3kzqEpY6hFEWGr6yelVYudejOuGnq97dAgJopaWnX9sKIWNi1PR04ADglIm6X9EXgbOD/Fm2Th7qYWdHBwusiYvYEz68B1kRE50/QFWQBqrDCfVCSNklaLmmlpG9K8mWeWdtVOGFdRDwG/FLS3vmuOcDdZZpVppP8yYjYPyL2BZ4BPlDmwGbWLBXfxTsFuEzSXcD+wD+UadNUL/FuIZuf3MxarsokzIhYDkx0GZikdJqBpOnA4cCKPs89P9QlnvBQF7OmG5fBwgBbS1oOLAUeJs916NY91EU7eKiLWRs0MUCVucR7MiL2r7wlZjY6DZ2wzmkGZgYMfzK6FA5QZtbuRRO69VtAYSKbpo8uc3aUk9MXyZKuI0N8lFLfex2LXzQ1S7us5M+ogmONRYAyszHU0D6ooosm7CbpakmrJd0v6VxJW9bVODMbnibexUsOUJIEfBu4KiJmAbOArYHP1NQ2MxuSqiesq0qRwx0GPBURXwGIiE1kiye8T1Khfikza5gxmJN8H7J5XZ6Xz0/+IPCCyTi8aIJZ+7Q9QCXzoglm7dP2AHU3cGD3DkmvAHYBfl5lo8xs+NoeoH4AzJD0PgBJ08jmJT83Ip6so3FmNhytHywcEQEcAxwraTXwBPBcRPx9XY0zsyGpcMK6KhVdNOGXwLsBJB0CLJJ0QETcMdWG1JH1XUdW8evuSyt3+0HpdY4yQ7yObO5UqXU+sUN6ncd/La3c996VVq7I+079bhSZ392Z5CVFxK3AnhW2xcxGqPUBStImsgnqpgMPAO8tu96VmTVHUwcLF72i7J6PfD3wwRraZGbD1tBEzakMFl6C5yM3GxtNnA+qVJPyFIM5wDUDnncmuVmLtD7NINeZj/wxYGfghn6FnElu1j7jEKA685HvCQj3QZmNh4b2QZW6xIuI3wOnAmfky0+ZWctVHaAkTZP0U0nfLdum0t1iEfFT4C5gftk6zKw5ajiD+hBwz1TaVChA9c5HHhH/PSISc3fNrKmqnrBO0m7AEcAFU2lX7Zdn0zbCtgl5+KNc4KDI8esYZlP1sev4LOsYjpN67NThKwALPplW7vY3p5WrY8GGRi5+UezsaKakpV3bCyNiYU+ZLwBnAS+fSrPcf2RmQKEAtS4iZg96UtKRwOMRsUzS26bSpsJ9UJI+LmmVpLskLZdUYFismTVVhX1Qfwa8W9KDwGLgMEmXlmlT0bF4BwNHAgdExNOSZgIvLXNgM2uOKsfiRcRHgY8C5GdQZ0bE8WXqKnqJ9yqy07un84asK3NQM2uecRgsfD2wu6R7Jf2TpEP7Feoe6hJPeKiLWePVNGFdRNwUEUeWbVbRNIMNZPOSnwSsBS6XdEKfcs8PddEOHupi1gZNzCQvfBcvXw/vJuAmSSuA9wMXV9ssMxumps4HVbSTfG+yechX57v2Bx6qvFVmNnStD1DANsCXJW0HbATuI7vcM7M2G8HlW4qiiyYsAw6poyFFJpKvQx3Z6VWrY4GDRmY190hd4ADSM8S/d3hauVmrJy/TMcqFJarQxAnrnEluZmPTB7UD2QKekK0ovInsbh7AmyLimQrbZmZD1PoAFRFPkHWMI2kBsCEiPltDu8xsmMahD8rMxteLJkBJOon87t4Wu+1RxyHMrGJNDFC19Ns7k9ysXaqesK4qvsQzM/dBmVmzOUCZWWONVYCKiAUVtqOQNmQ/jzKr+HX3VV/nKDPt65gXPDVDfPWs9GMXyTpvmrFI1DSz8dXEAJXcJy/pRknv7Nl3mqR/rr5ZZjZUNU1YN1VFDrcImNezb16+38xarokT1hUJUFcAR0h6KYCkvYBXA7dU3ywzG6ZOH1RrA1RErAd+AnQmqpgHfCMioo6GmdlwtTpA5bov8wZe3nnRBLOWSQxOTQ9QVwNzJB0AzMgnsNuMh7qYtU/bO8k7q7rcCFyEO8fNxkaVfVCSds/v+t+dr0L+obLtKpMHtQi4ks3v6JlZi1V4+bYROCMi7pD0cmCZpBsi4u6iFZVZduoqoIEpXWZWWoX9SxHxK+BX+c+/lXQPsCtQf4AqatP0tOEHRYZnjHKBhTqG2VQ9jKSOoSGjNMqhO6MevpL63gt8RAMVCFAzJS3t2l4YEQv7FczTkf4LcHuZNnmoi5kBhQLUuoiYPVkhSdsA3wJOi4jflGnTpJ3kkj4v6bSu7e9LuqBr+xxJp5c5uJk1Q9UT1kl6CVlwuiwivl22XSmH+zH5WniStgBmAvt0PX8IcGvZBphZA1SYByVJwIXAPRHxuak0KyVA3QocnP+8D7AS+K2kV0raEvgT4I6pNMLMRq/CRM0/A94LHCZpef4osPzqH0zaBxURj0raKGkPsrOlJWQ98gcDvwZW9K6H171oAnt40QSzNqjwLt6PqOhOf2qi5q1kwakToJZ0bf+4TwOfzyRnR2eSmzVd2wcLd/qh3kB2iXcb2RmU+5/MxkSbA9StwJHA+ojYlM9ssB1ZkHKAMmu7lk9Yt4Ls7t1tPft+HRHrKm+VmQ1dE8+gkhI1I2IT8IqefSdU2ZAiGc2p2dyjrLNIxvkoM8lTjfL9FBk50IYFNYpkxqdmsk81k9yLJphZozUxQBW6olTmR5IO79r3l5Kuq75pZjY0DZ2wrtAZVESEpA8A35R0Y/76fwDm1tE4MxueYXeApygz3cpKSd8BPgK8DLgkIn5RecvMbGjGrQ/qk2TDW54BNhvV7Exys/YZmwAVEb+TdDmwISKe7vP8QmAhgGbP9qovZk03gv6lFFO5i/dc/jCzMTBuAcrMxogDlJk1UmhM7uJ1RMSCCtthZiPmM6gJFBmikDr0oY7hGXUMs0mVeuw6Psu2vJ9Udbyf1CEso16IYZAmBqjCJ3X5dJ5IWtC9bWbt1vpM8txxkl4FbCXpLOBR4NJqm2Vmw9TURM3CZ1ARcSmwBvhb4OF828zarKFj8cpc4v0VsBvwj8Ae+baZtVwTJ6wrc4m3KB80vCAiPtOvD8pDXczaZ1wu8SL/d0H3dk8ZL5pg1iJtXzTBzMZZxX1QkuZK+rmk+ySdXbZZDlBmBlQXoCRNA84DDgf+FJgv6U/LtMkBysyASjvJ3wTcFxH354v6LgaOKtMm9elCqpSktcBDPbtnAqmrwaSWrbqcj93sOn3sF9ozIkp3+ObTds9MLL4V8FTX9sJ8iqVOXccCcyPi/+Tb7wUOioiTCzcsIob+AJZWXbbqcj52s+v0sZv7AI4FLujafi9wbpm6fIlnZlV7BNi9a3u3fF9hDlBmVrV/A2ZJeo2klwLzgGvKVDSq2QwWTl6kcNmqy/nYza7Tx26oiNgo6WTg+8A04KKIWFWmrto7yc3MyvIlnpk1lgOUmTXW0AOUpKMlhaTXT1JuF0mLJf1C0jJJ10r6454ymyQtl7RK0p2SzpDU9z11le08Bqbf9ym714ByO0v6uqT78zYukXRMn3IberZPkHTuBMffMOi5fmUkvUvSvZL2LFNf/vu4tGt7uqS1kr47oOw5XdtndiYvHFB357NcKembkmb0KbObpKslrc4/y3MlbZlQ33ckbTfBsT+efzfuyl9zUJ8yO3T9nh+T9EjX9ku7yt0o6Z09rz1N0j93bX9e0mld29+XdEHX9jmSTu/alqQfSTq8a99f5jlJve18cU4UOYIcicuBW4BPTlBGwBLgA1373gi8pafchq6fdwL+dVC93WUT2jhp2QFt3BM4ZbL6gBOYIC8k8fgb8n/nAPcBf1S2PmADsBzYOt8+PN/+bp+yTwEPADPz7TOBBSnHBi4DTu/zOf4E+Ot8expwIfDFhPq+Cnx8QLmD89/Plvn2TODVk3wOC4AzBzx3EvCVnn23AW/t2j4W+Eb+8xbAMmBJ1/NLgDf31LEvcA9Z8uM2wOp+v0vgeLI52D4NnAUcn/p9bvNjqGdQkrYB/hw4kezW4yBvB56NiPM7OyLizoi4ZdALIuJxsi/RyUP663IY8ExPGx+KiC8P4dgASHor8C/AkTH15eevBY7If54PLBpQbiPZnaQPlzjGLUDvLOiHAU9FxFcAImJTXvf78u/LRJYAuw547lXAusgXlo2IdRHxaIk2d1wBHNE5q8rPql9N9p46biULjAD7ACuB30p6ZX5G+CdkK3I/LyJWAt8BPgL8P+CSfr/LeJFOFDnsS7yjgOsi4l7gCUkHDii3L9lfn0Ii4n6yv8A79Xl6657Ltv81QVXdZa8cUGYfer5sifUtB/5/4usmsiVwFXB0RPysgvoWA/MkbQXsB9w+QdnzyKZ+3ja1cknTyc7MVvQ8tQ89v+uI+A3wIJsHs+76ppGdPQ7Kr7ke2D2/9P0nSYemtrWfiFhPdqbXuRybR3a2FF1lHgU2StoDOIQsgN5OFrRmAysiG5vW65PAX+V1f6bf8fUinShy2HlQ84Ev5j8vzrcLB6KSnoyI/WsoC4Ck88jODp+JiP86UX2STiD7wk7Fs2R/sU8EPjTFuoiIu/KzgvlkZ1MTlf2NpEuAU4EnJ6l66zwoQ3a2ceEUm9qpb1eyS6MbBrRxQ/4H8C1kZ+SXSzo7Ii6ewrEXkQWmq/N/T+xT5lay4HQI8Lm8nYcAvwZ+PKCtv5N0Odnl69ODjh0x8USR42hoZ1CStic7nb9A0oNkp6rvGfBBrwIGnV1NdIzXApuAx6fQ1FSrgAM6GxHxQbK/6MOaoe854D3AmyR9rKI6rwE+y+DLu25fIPsP+rJJyj0ZEfvnj1P6nEHcTc/vWtIrgF2Anw+qj6y/T8AHBx04IjZFxE0R8QngZOB/TtLWyVwNzJF0ADAjIvr9cf0xWUB6A9kl3m1kZ1CHkAWvQZ7LH311ztRigokix9EwL/GOBb4WEXtGxF4RsTtZZ+tb+pT9IbClsqmDAZC0n6R+ZTvP7wicT9b5PIxf3g/JVrb5m659m92hqlNE/J6s3+g4Sf3+mhd1EdlNht7LsH7HXg98g/5nEUX8AJgh6X3w/KXbOWS/x4FnZ/l7PxU4I798fAFJe0ua1bVrfzafVaOQiNgA3Ej2OQ0K4rcCRwLr8wC5HtiOLEhNFKCsj2EGqPlAb3/Ot/L9L5AHmGOAdyhLM1gFfAp4rKdop29nFdkdvOvJruf76e2D+vRU3kzexqOBQyU9IOknZHeVPjKVeku0Yz0wF/g7Se8eUGyGpDVdj9P7FYqINRHxpQKHP4f0KTr66vpdHytpNfAE8FxE/H3Ca38K3EWf7xDZHbGvSrpb0l1kE6ctmEpbc4vI7igPClAryD6T23r2/ToiUqdosZyHulijSDqE7D//MRGRehPCxpQDlJk1loe6mFljOUCZWWM5QJlZYzlAmVljOUCZWWM5QJlZY/0nGIrdqCHG+/IAAAAASUVORK5CYII=
\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
...
...
@@ -125,14 +115,12 @@
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX
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
\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX
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
\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
...
...
@@ -167,10 +155,8 @@
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
...
...
@@ -219,9 +205,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.
5
.3"
"version": "3.
7
.3"
}
},
"nbformat": 4,
"nbformat_minor":
0
"nbformat_minor":
1
}
%% Cell type:markdown id: tags:
# Back translation
%% Cell type:code id: tags:
```
python
%
pylab
inline
```
%%%% Output: stream
Populating the interactive namespace from numpy and matplotlib
%% Cell type:code id: tags:
```
python
from
collections
import
defaultdict
from
backtranslate
import
BackTranslate
from
backtranslate.util
import
protein_letters
from
mutalyzer_
backtranslate
import
BackTranslate
from
mutalyzer_
backtranslate.util
import
protein_letters
```
%% Cell type:markdown id: tags:
Create a reverse translation class instance.
%% Cell type:code id: tags:
```
python
bt
=
BackTranslate
()
```
%% Cell type:markdown id: tags:
For each pair of amino acids, calculate the number of one-nucleotide substitutions that transform one amino acid into the other.
%% Cell type:code id: tags:
```
python
table
=
[]
for
i
in
protein_letters
:
table
.
append
([])
for
j
in
protein_letters
:
s
=
bt
.
without_dna
(
i
,
j
)
table
[
-
1
].
append
(
int
(
sum
(
list
(
map
(
len
,
s
.
values
())))))
```
%% Cell type:markdown id: tags:
Visualise the resutling matrix.
%% Cell type:code id: tags:
```
python
imshow
(
table
,
interpolation
=
'nearest'
)
xticks
(
range
(
21
),
protein_letters
)
yticks
(
range
(
21
),
protein_letters
)
set_cmap
(
'cool'
)
colorbar
();
```
%%%% Output: display_data
[Hidden Image Output]
%% Cell type:markdown id: tags:
Visualise the distribution of values in the matrix.
%% Cell type:code id: tags:
```
python
d
=
defaultdict
(
int
)
for
row
in
table
:
for
element
in
row
:
d
[
element
]
+=
1
ind
=
sorted
(
d
.
keys
())
values
=
[]
for
i
in
ind
:
values
.
append
(
d
[
i
])
bar
(
ind
,
values
);
```
%%%% Output: display_data
[Hidden Image Output]
%% Cell type:markdown id: tags:
Print some summaries.
%% Cell type:code id: tags:
```
python
total
=
21
**
2
total_p
=
total
/
100
imperfect
=
sum
(
values
[
2
:])
print
(
'
\n
{} substitutions in total.'
.
format
(
total
))
print
(
'{:3} impossible substitutions ({:.2f}%).'
.
format
(
values
[
0
],
values
[
0
]
/
total_p
))
print
(
'{:3} perfect substitutions ({:.2f}%).'
.
format
(
values
[
1
],
values
[
1
]
/
total_p
))
print
(
'{:3} imperfect substitutions ({:.2f}%).'
.
format
(
imperfect
,
imperfect
/
total_p
))
possible
=
sum
(
values
[
1
:])
possible_p
=
possible
/
100
print
(
'
\n
{:3} possible substitutions, of which {:.2f}% is perfect and {:.2f}% is imperfect.'
.
format
(
possible
,
values
[
1
]
/
possible_p
,
imperfect
/
possible_p
))
```
%%%% Output: stream
441 substitutions in total.
252 impossible substitutions (57.14%).
130 perfect substitutions (29.48%).
59 imperfect substitutions (13.38%).
189 possible substitutions, of which 68.78% is perfect and 31.22% is imperfect.
...
...
backtranslate/__init__.py
→
mutalyzer_
backtranslate/__init__.py
View file @
591b3e30
File moved
backtranslate/backtranslate.py
→
mutalyzer_
backtranslate/backtranslate.py
View file @
591b3e30
...
...
@@ -43,8 +43,7 @@ def reverse_translation_table(table_id=1):
class
BackTranslate
(
object
):
"""Back translation."""
def
__init__
(
self
,
table_id
=
1
):
"""Initialise the class.
"""
:arg int table_id: Translation table id.
"""
self
.
_back_table
=
reverse_translation_table
(
table_id
)
...
...
backtranslate/cli.py
→
mutalyzer_
backtranslate/cli.py
View file @
591b3e30
File moved
backtranslate/util.py
→
mutalyzer_
backtranslate/util.py
View file @
591b3e30
File moved
setup.cfg
View file @
591b3e30
[metadata]
name = backtranslate
version = 0.1.
2
name =
mutalyzer_
backtranslate
version = 0.1.
3
description = Functions for reverse translation.
long_description = file: README.rst
author = LUMC, Jeroen F.J. Laros
...
...
@@ -28,4 +28,4 @@ tests_require =
[options.entry_points]
console_scripts =
backtranslate = backtranslate.cli:main
backtranslate =
mutalyzer_
backtranslate.cli:main
tests/test_backtranslate.py
View file @
591b3e30
"""Tests for the backtranslate
.backtranslate
module."""
from
backtranslate.backtranslate
import
BackTranslate
,
cmp_subst
"""Tests for the backtranslate module."""
from
mutalyzer_
backtranslate.backtranslate
import
BackTranslate
,
cmp_subst
class
TestParser
(
object
):
...
...
tests/test_cli.py
View file @
591b3e30
...
...
@@ -6,7 +6,7 @@ from io import StringIO
from
fake_open
import
md5_check
from
backtranslate
import
cli
from
mutalyzer_
backtranslate
import
cli
class
TestParser
(
object
):
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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