Spaces:
Runtime error
Runtime error
Add get_structure
Browse files- poetry.lock +83 -1
- protention/attention.py +34 -0
- pyproject.toml +2 -0
- tests/__init__.py +0 -0
- tests/test_attention.py +10 -0
poetry.lock
CHANGED
|
@@ -137,6 +137,17 @@ soupsieve = ">1.2"
|
|
| 137 |
html5lib = ["html5lib"]
|
| 138 |
lxml = ["lxml"]
|
| 139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
[[package]]
|
| 141 |
name = "bleach"
|
| 142 |
version = "6.0.0"
|
|
@@ -271,6 +282,17 @@ category = "main"
|
|
| 271 |
optional = false
|
| 272 |
python-versions = ">=3.6"
|
| 273 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
[[package]]
|
| 275 |
name = "executing"
|
| 276 |
version = "1.2.0"
|
|
@@ -347,6 +369,14 @@ docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo"
|
|
| 347 |
perf = ["ipython"]
|
| 348 |
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8", "importlib-resources (>=1.3)"]
|
| 349 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 350 |
[[package]]
|
| 351 |
name = "ipykernel"
|
| 352 |
version = "6.21.3"
|
|
@@ -971,6 +1001,18 @@ python-versions = ">=3.7"
|
|
| 971 |
docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)", "sphinx (>=6.1.3)"]
|
| 972 |
test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest (>=7.2.1)"]
|
| 973 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 974 |
[[package]]
|
| 975 |
name = "prometheus-client"
|
| 976 |
version = "0.16.0"
|
|
@@ -1104,6 +1146,26 @@ category = "main"
|
|
| 1104 |
optional = false
|
| 1105 |
python-versions = ">=3.7"
|
| 1106 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1107 |
[[package]]
|
| 1108 |
name = "python-dateutil"
|
| 1109 |
version = "2.8.2"
|
|
@@ -1389,6 +1451,14 @@ category = "main"
|
|
| 1389 |
optional = false
|
| 1390 |
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
| 1391 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1392 |
[[package]]
|
| 1393 |
name = "tomlkit"
|
| 1394 |
version = "0.11.6"
|
|
@@ -1569,7 +1639,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-co
|
|
| 1569 |
[metadata]
|
| 1570 |
lock-version = "1.1"
|
| 1571 |
python-versions = "^3.10"
|
| 1572 |
-
content-hash = "
|
| 1573 |
|
| 1574 |
[metadata.files]
|
| 1575 |
altair = []
|
|
@@ -1610,6 +1680,7 @@ backcall = [
|
|
| 1610 |
{file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
|
| 1611 |
]
|
| 1612 |
beautifulsoup4 = []
|
|
|
|
| 1613 |
bleach = []
|
| 1614 |
blinker = []
|
| 1615 |
cachetools = []
|
|
@@ -1633,6 +1704,7 @@ entrypoints = [
|
|
| 1633 |
{file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"},
|
| 1634 |
{file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"},
|
| 1635 |
]
|
|
|
|
| 1636 |
executing = []
|
| 1637 |
fastjsonschema = []
|
| 1638 |
fqdn = []
|
|
@@ -1640,6 +1712,7 @@ gitdb = []
|
|
| 1640 |
gitpython = []
|
| 1641 |
idna = []
|
| 1642 |
importlib-metadata = []
|
|
|
|
| 1643 |
ipykernel = []
|
| 1644 |
ipyspeck = []
|
| 1645 |
ipython = []
|
|
@@ -1694,6 +1767,10 @@ pickleshare = [
|
|
| 1694 |
]
|
| 1695 |
pillow = []
|
| 1696 |
platformdirs = []
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1697 |
prometheus-client = []
|
| 1698 |
prompt-toolkit = []
|
| 1699 |
protobuf = []
|
|
@@ -1716,6 +1793,7 @@ pydeck = []
|
|
| 1716 |
pygments = []
|
| 1717 |
pympler = []
|
| 1718 |
pyrsistent = []
|
|
|
|
| 1719 |
python-dateutil = [
|
| 1720 |
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
|
| 1721 |
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
|
|
@@ -1789,6 +1867,10 @@ toml = [
|
|
| 1789 |
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
|
| 1790 |
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
|
| 1791 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1792 |
tomlkit = []
|
| 1793 |
toolz = []
|
| 1794 |
tornado = []
|
|
|
|
| 137 |
html5lib = ["html5lib"]
|
| 138 |
lxml = ["lxml"]
|
| 139 |
|
| 140 |
+
[[package]]
|
| 141 |
+
name = "biopython"
|
| 142 |
+
version = "1.81"
|
| 143 |
+
description = "Freely available tools for computational molecular biology."
|
| 144 |
+
category = "main"
|
| 145 |
+
optional = false
|
| 146 |
+
python-versions = ">=3.7"
|
| 147 |
+
|
| 148 |
+
[package.dependencies]
|
| 149 |
+
numpy = "*"
|
| 150 |
+
|
| 151 |
[[package]]
|
| 152 |
name = "bleach"
|
| 153 |
version = "6.0.0"
|
|
|
|
| 282 |
optional = false
|
| 283 |
python-versions = ">=3.6"
|
| 284 |
|
| 285 |
+
[[package]]
|
| 286 |
+
name = "exceptiongroup"
|
| 287 |
+
version = "1.1.1"
|
| 288 |
+
description = "Backport of PEP 654 (exception groups)"
|
| 289 |
+
category = "dev"
|
| 290 |
+
optional = false
|
| 291 |
+
python-versions = ">=3.7"
|
| 292 |
+
|
| 293 |
+
[package.extras]
|
| 294 |
+
test = ["pytest (>=6)"]
|
| 295 |
+
|
| 296 |
[[package]]
|
| 297 |
name = "executing"
|
| 298 |
version = "1.2.0"
|
|
|
|
| 369 |
perf = ["ipython"]
|
| 370 |
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8", "importlib-resources (>=1.3)"]
|
| 371 |
|
| 372 |
+
[[package]]
|
| 373 |
+
name = "iniconfig"
|
| 374 |
+
version = "2.0.0"
|
| 375 |
+
description = "brain-dead simple config-ini parsing"
|
| 376 |
+
category = "dev"
|
| 377 |
+
optional = false
|
| 378 |
+
python-versions = ">=3.7"
|
| 379 |
+
|
| 380 |
[[package]]
|
| 381 |
name = "ipykernel"
|
| 382 |
version = "6.21.3"
|
|
|
|
| 1001 |
docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)", "sphinx (>=6.1.3)"]
|
| 1002 |
test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest (>=7.2.1)"]
|
| 1003 |
|
| 1004 |
+
[[package]]
|
| 1005 |
+
name = "pluggy"
|
| 1006 |
+
version = "1.0.0"
|
| 1007 |
+
description = "plugin and hook calling mechanisms for python"
|
| 1008 |
+
category = "dev"
|
| 1009 |
+
optional = false
|
| 1010 |
+
python-versions = ">=3.6"
|
| 1011 |
+
|
| 1012 |
+
[package.extras]
|
| 1013 |
+
dev = ["pre-commit", "tox"]
|
| 1014 |
+
testing = ["pytest", "pytest-benchmark"]
|
| 1015 |
+
|
| 1016 |
[[package]]
|
| 1017 |
name = "prometheus-client"
|
| 1018 |
version = "0.16.0"
|
|
|
|
| 1146 |
optional = false
|
| 1147 |
python-versions = ">=3.7"
|
| 1148 |
|
| 1149 |
+
[[package]]
|
| 1150 |
+
name = "pytest"
|
| 1151 |
+
version = "7.2.2"
|
| 1152 |
+
description = "pytest: simple powerful testing with Python"
|
| 1153 |
+
category = "dev"
|
| 1154 |
+
optional = false
|
| 1155 |
+
python-versions = ">=3.7"
|
| 1156 |
+
|
| 1157 |
+
[package.dependencies]
|
| 1158 |
+
attrs = ">=19.2.0"
|
| 1159 |
+
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
| 1160 |
+
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
|
| 1161 |
+
iniconfig = "*"
|
| 1162 |
+
packaging = "*"
|
| 1163 |
+
pluggy = ">=0.12,<2.0"
|
| 1164 |
+
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
|
| 1165 |
+
|
| 1166 |
+
[package.extras]
|
| 1167 |
+
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
|
| 1168 |
+
|
| 1169 |
[[package]]
|
| 1170 |
name = "python-dateutil"
|
| 1171 |
version = "2.8.2"
|
|
|
|
| 1451 |
optional = false
|
| 1452 |
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
| 1453 |
|
| 1454 |
+
[[package]]
|
| 1455 |
+
name = "tomli"
|
| 1456 |
+
version = "2.0.1"
|
| 1457 |
+
description = "A lil' TOML parser"
|
| 1458 |
+
category = "dev"
|
| 1459 |
+
optional = false
|
| 1460 |
+
python-versions = ">=3.7"
|
| 1461 |
+
|
| 1462 |
[[package]]
|
| 1463 |
name = "tomlkit"
|
| 1464 |
version = "0.11.6"
|
|
|
|
| 1639 |
[metadata]
|
| 1640 |
lock-version = "1.1"
|
| 1641 |
python-versions = "^3.10"
|
| 1642 |
+
content-hash = "1e79d688b56335b1eafcb169572e0b8983eff0cb2da5ece8807ae02316f25f12"
|
| 1643 |
|
| 1644 |
[metadata.files]
|
| 1645 |
altair = []
|
|
|
|
| 1680 |
{file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
|
| 1681 |
]
|
| 1682 |
beautifulsoup4 = []
|
| 1683 |
+
biopython = []
|
| 1684 |
bleach = []
|
| 1685 |
blinker = []
|
| 1686 |
cachetools = []
|
|
|
|
| 1704 |
{file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"},
|
| 1705 |
{file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"},
|
| 1706 |
]
|
| 1707 |
+
exceptiongroup = []
|
| 1708 |
executing = []
|
| 1709 |
fastjsonschema = []
|
| 1710 |
fqdn = []
|
|
|
|
| 1712 |
gitpython = []
|
| 1713 |
idna = []
|
| 1714 |
importlib-metadata = []
|
| 1715 |
+
iniconfig = []
|
| 1716 |
ipykernel = []
|
| 1717 |
ipyspeck = []
|
| 1718 |
ipython = []
|
|
|
|
| 1767 |
]
|
| 1768 |
pillow = []
|
| 1769 |
platformdirs = []
|
| 1770 |
+
pluggy = [
|
| 1771 |
+
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
| 1772 |
+
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
|
| 1773 |
+
]
|
| 1774 |
prometheus-client = []
|
| 1775 |
prompt-toolkit = []
|
| 1776 |
protobuf = []
|
|
|
|
| 1793 |
pygments = []
|
| 1794 |
pympler = []
|
| 1795 |
pyrsistent = []
|
| 1796 |
+
pytest = []
|
| 1797 |
python-dateutil = [
|
| 1798 |
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
|
| 1799 |
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
|
|
|
|
| 1867 |
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
|
| 1868 |
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
|
| 1869 |
]
|
| 1870 |
+
tomli = [
|
| 1871 |
+
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
|
| 1872 |
+
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
|
| 1873 |
+
]
|
| 1874 |
tomlkit = []
|
| 1875 |
toolz = []
|
| 1876 |
tornado = []
|
protention/attention.py
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from io import StringIO
|
| 2 |
+
from urllib import request
|
| 3 |
+
|
| 4 |
+
from Bio.PDB import PDBParser, Structure
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def get_structure(pdb_code: str) -> Structure:
|
| 8 |
+
"""
|
| 9 |
+
Get structure from PDB
|
| 10 |
+
"""
|
| 11 |
+
pdb_url = f"https://files.rcsb.org/download/{pdb_code}.pdb"
|
| 12 |
+
pdb_data = request.urlopen(pdb_url).read().decode("utf-8")
|
| 13 |
+
file = StringIO(pdb_data)
|
| 14 |
+
parser = PDBParser()
|
| 15 |
+
structure = parser.get_structure(pdb_code, file)
|
| 16 |
+
return structure
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
def get_attention(
|
| 20 |
+
pdb_code: str, chain_ids: list[str], layer: int, head: int, min_attn: float = 0.2
|
| 21 |
+
):
|
| 22 |
+
"""
|
| 23 |
+
Get attention from T5
|
| 24 |
+
"""
|
| 25 |
+
# fetch structure
|
| 26 |
+
structure = get_structure(pdb_code)
|
| 27 |
+
|
| 28 |
+
# get model
|
| 29 |
+
|
| 30 |
+
# call model
|
| 31 |
+
|
| 32 |
+
# get attention
|
| 33 |
+
|
| 34 |
+
# extract attention
|
pyproject.toml
CHANGED
|
@@ -8,8 +8,10 @@ authors = ["Aksel Lenes <[email protected]>"]
|
|
| 8 |
python = "^3.10"
|
| 9 |
streamlit = "^1.20.0"
|
| 10 |
stmol = "^0.0.9"
|
|
|
|
| 11 |
|
| 12 |
[tool.poetry.dev-dependencies]
|
|
|
|
| 13 |
|
| 14 |
[build-system]
|
| 15 |
requires = ["poetry-core>=1.0.0"]
|
|
|
|
| 8 |
python = "^3.10"
|
| 9 |
streamlit = "^1.20.0"
|
| 10 |
stmol = "^0.0.9"
|
| 11 |
+
biopython = "^1.81"
|
| 12 |
|
| 13 |
[tool.poetry.dev-dependencies]
|
| 14 |
+
pytest = "^7.2.2"
|
| 15 |
|
| 16 |
[build-system]
|
| 17 |
requires = ["poetry-core>=1.0.0"]
|
tests/__init__.py
ADDED
|
File without changes
|
tests/test_attention.py
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from Bio.PDB.Structure import Structure
|
| 2 |
+
|
| 3 |
+
from protention.attention import get_structure
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
def test_get_structure():
|
| 7 |
+
pdb_id = "1AKE"
|
| 8 |
+
structure = get_structure(pdb_id)
|
| 9 |
+
assert structure is not None
|
| 10 |
+
assert isinstance(structure, Structure)
|