Unverified Commit 591b3e30 authored by Jeroen F.J. Laros's avatar Jeroen F.J. Laros
Browse files

Package rename.

parent d60c01b3
*.egg-info
*.pyc
.cache/
.tox/
build/
dist/
docs/Makefile
docs/_build/
examples/.ipynb_checkpoints/
mutalyzer_backtranslate.egg-info
......@@ -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
API documentation
=================
Main library
------------
.. automodule:: mutalyzer_backtranslate.backtranslate
:members:
Utils
-----
.. automodule:: mutalyzer_backtranslate.util
:members:
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'
......@@ -8,4 +8,5 @@
install
usage
library
api
credits
......@@ -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
......@@ -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', '*')
>>>
......
......@@ -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": "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\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": "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\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAOo0lEQVR4nO3df6zd9V3H8edLOqcMIpDeVdY2XrJUTLe4Qm4QxRgUtzFYVpYYAlFWJ6b7AxQMyVJm4vYPpokbc4uK6QbSZcgkG4RGcFLrkmXJfnBBxq8OaUYZrYXeOQXiks2yt3+cb91Ze27vj3PuPZcPz0dyc7/nc77nnnd/3Ge//fZ7TlNVSJLa8lPjHkCSNHrGXZIaZNwlqUHGXZIaZNwlqUGrxj0AwOrVq2tycnLcY0jSq8pDDz303aqaGHTfioj75OQk09PT4x5Dkl5Vkjw7232elpGkBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBs0Z9yTrk3wpyZNJnkhyXbf+kSQHkzzSfVzS95gbk+xL8lSSdy7lD0CSdLz5vIjpCHBDVT2c5FTgoSS7u/s+XlUf7d85yUbgCuAtwJuAf0nyi1X1yigHlyTNbs64V9Uh4FC3/XKSvcDaEzxkM/C5qvoB8EySfcB5wFdHMO9xJrfdN/TX2L/90hFMIkkrx4LOuSeZBM4Bvt4tXZvk0SS3JTm9W1sLPNf3sAMM+MMgydYk00mmZ2ZmFjy4JGl28457klOALwDXV9VLwC3Am4FN9I7sP7aQJ66qHVU1VVVTExMD3/dGkrRI84p7ktfRC/sdVXU3QFW9UFWvVNWPgE/RO/UCcBBY3/fwdd2aJGmZzOdqmQC3Anur6ua+9TP7dnsv8Hi3vQu4Isnrk5wFbAC+MbqRJUlzmc/VMhcAVwGPJXmkW/sQcGWSTUAB+4EPAFTVE0nuAp6kd6XNNV4pI0nLaz5Xy3wFyIC77j/BY24CbhpiLknSEHyFqiQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoPmjHuS9Um+lOTJJE8kua5bPyPJ7iRPd59P79aT5JNJ9iV5NMm5S/2DkCT9pPkcuR8BbqiqjcD5wDVJNgLbgD1VtQHY090GeBewofvYCtwy8qklSSc0Z9yr6lBVPdxtvwzsBdYCm4Gd3W47gcu67c3AZ6rna8BpSc4c+eSSpFkt6Jx7kkngHODrwJqqOtTd9TywptteCzzX97AD3dqxX2trkukk0zMzMwscW5J0IvOOe5JTgC8A11fVS/33VVUBtZAnrqodVTVVVVMTExMLeagkaQ7zinuS19EL+x1VdXe3/MLR0y3d58Pd+kFgfd/D13VrkqRlMp+rZQLcCuytqpv77toFbOm2twD39q2/r7tq5nzgxb7TN5KkZbBqHvtcAFwFPJbkkW7tQ8B24K4kVwPPApd3990PXALsA74PvH+kE0uS5jRn3KvqK0BmufuiAfsXcM2Qc0mShuArVCWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWpQcZdkho0Z9yT3JbkcJLH+9Y+kuRgkke6j0v67rsxyb4kTyV551INLkma3XyO3G8HLh6w/vGq2tR93A+QZCNwBfCW7jF/k+SkUQ0rSZqfOeNeVV8GvjfPr7cZ+FxV/aCqngH2AecNMZ8kaRGGOed+bZJHu9M2p3dra4Hn+vY50K1JkpbRYuN+C/BmYBNwCPjYQr9Akq1JppNMz8zMLHIMSdIgi4p7Vb1QVa9U1Y+AT/HjUy8HgfV9u67r1gZ9jR1VNVVVUxMTE4sZQ5I0i0XFPcmZfTffCxy9kmYXcEWS1yc5C9gAfGO4ESVJC7Vqrh2S3AlcCKxOcgD4MHBhkk1AAfuBDwBU1RNJ7gKeBI4A11TVK0szuiRpNnPGvaquHLB86wn2vwm4aZihJEnD8RWqktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktSgOd9b5rVoctt9Qz1+//ZLRzSJJC2OR+6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNmjPuSW5LcjjJ431rZyTZneTp7vPp3XqSfDLJviSPJjl3KYeXJA02nyP324GLj1nbBuypqg3Anu42wLuADd3HVuCW0YwpSVqIOeNeVV8GvnfM8mZgZ7e9E7isb/0z1fM14LQkZ45qWEnS/Cz2nPuaqjrUbT8PrOm21wLP9e13oFuTJC2jof9BtaoKqIU+LsnWJNNJpmdmZoYdQ5LUZ7Fxf+Ho6Zbu8+Fu/SCwvm+/dd3acapqR1VNVdXUxMTEIseQJA2y2LjvArZ021uAe/vW39ddNXM+8GLf6RtJ0jJZNdcOSe4ELgRWJzkAfBjYDtyV5GrgWeDybvf7gUuAfcD3gfcvwcySpDnMGfequnKWuy4asG8B1ww7lCRpOL5CVZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIatGqYByfZD7wMvAIcqaqpJGcA/wBMAvuBy6vqv4YbU5K0EKM4cv/NqtpUVVPd7W3AnqraAOzpbkuSltFSnJbZDOzstncCly3Bc0iSTmDYuBfwQJKHkmzt1tZU1aFu+3lgzaAHJtmaZDrJ9MzMzJBjSJL6DXXOHfj1qjqY5I3A7iTf6r+zqipJDXpgVe0AdgBMTU0N3EeStDhDHblX1cHu82HgHuA84IUkZwJ0nw8PO6QkaWEWHfckb0hy6tFt4B3A48AuYEu32xbg3mGHlCQtzDCnZdYA9yQ5+nX+vqq+mORB4K4kVwPPApcPP6YkaSEWHfeq+jbwtgHr/wlcNMxQkqTh+ApVSWqQcZekBhl3SWqQcZekBhl3SWqQcZekBg379gOap8lt9w31+P3bLx3RJJJeCzxyl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapD/Qbb+n/+Jt9QOj9wlqUHGXZIa5GkZSSvSsKcJ4bV9qtAjd0lq0JIduSe5GPgEcBLw6aravlTPpZXJIy9pfJYk7klOAv4aeDtwAHgwya6qenIpnu+1yHBK47eSvw+X6sj9PGBfVX0bIMnngM2AcddQvFxTmp9U1ei/aPI7wMVV9Yfd7auAX6mqa/v22Qps7W6eDTw18kF+bDXw3SX8+qPgjKPhjKPhjKOzlHP+QlVNDLpjbFfLVNUOYMdyPFeS6aqaWo7nWixnHA1nHA1nHJ1xzblUV8scBNb33V7XrUmSlsFSxf1BYEOSs5L8NHAFsGuJnkuSdIwlOS1TVUeSXAv8M71LIW+rqieW4rnmaVlO/wzJGUfDGUfDGUdnLHMuyT+oSpLGy1eoSlKDjLskNajpuCe5OMlTSfYl2TbueY6VZH2SLyV5MskTSa4b90yzSXJSkn9L8o/jnmU2SU5L8vkk30qyN8mvjnumYyX5k+7X+vEkdyb5mRUw021JDid5vG/tjCS7kzzdfT59Bc74F92v9aNJ7kly2kqbse++G5JUktXLNU+zce97C4R3ARuBK5NsHO9UxzkC3FBVG4HzgWtW4IxHXQfsHfcQc/gE8MWq+iXgbayweZOsBf4YmKqqt9K72OCK8U4FwO3AxcesbQP2VNUGYE93e5xu5/gZdwNvrapfBv4duHG5hzrG7Rw/I0nWA+8AvrOcwzQbd/reAqGqfggcfQuEFaOqDlXVw932y/RitHa8Ux0vyTrgUuDT455lNkl+DvgN4FaAqvphVf33eKcaaBXws0lWAScD/zHmeaiqLwPfO2Z5M7Cz294JXLasQx1j0IxV9UBVHelufo3e62nGZpafR4CPAx8ElvXqlZbjvhZ4ru/2AVZgOI9KMgmcA3x9vJMM9Jf0fnP+aNyDnMBZwAzwd93po08necO4h+pXVQeBj9I7gjsEvFhVD4x3qlmtqapD3fbzwJpxDjMPfwD807iHOFaSzcDBqvrmcj93y3F/1UhyCvAF4Pqqemnc8/RL8m7gcFU9NO5Z5rAKOBe4parOAf6H8Z9K+AndeevN9P4gehPwhiS/N96p5la966VX7DXTSf6U3inOO8Y9S78kJwMfAv5sHM/fctxfFW+BkOR19MJ+R1XdPe55BrgAeE+S/fRObf1Wks+Od6SBDgAHquro33w+Ty/2K8lvA89U1UxV/S9wN/BrY55pNi8kOROg+3x4zPMMlOT3gXcDv1sr70U7b6b3B/k3u++fdcDDSX5+OZ685biv+LdASBJ654j3VtXN455nkKq6sarWVdUkvZ/Df62qFXe0WVXPA88lObtbuoiV9xbT3wHOT3Jy92t/ESvsH3377AK2dNtbgHvHOMtA3X8I9EHgPVX1/XHPc6yqeqyq3lhVk933zwHg3O736pJrNu7dP7QcfQuEvcBdY34LhEEuAK6idzT8SPdxybiHehX7I+COJI8Cm4A/H/M8P6H7W8XngYeBx+h9/439JfRJ7gS+Cpyd5ECSq4HtwNuTPE3vbxxj/Z/UZpnxr4BTgd3d987frsAZxzfPyvubjCRpWM0euUvSa5lxl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJatD/AT89wfiOemvIAAAAAElFTkSuQmCC\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.
......
......@@ -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)
......
[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 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):
......
......@@ -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):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment