Skip to content

Instantly share code, notes, and snippets.

@dominiquesydow
Created October 27, 2021 06:23
Show Gist options
  • Save dominiquesydow/db815cbd53ee0cd70509862332c6bf1a to your computer and use it in GitHub Desktop.
Save dominiquesydow/db815cbd53ee0cd70509862332c6bf1a to your computer and use it in GitHub Desktop.
OpenCADD's structure object has no chain IDs - why?
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "8f0581b0-dbe3-4666-8c6a-f71b86003651",
"metadata": {},
"source": [
"## MDAnalysis"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "6382efba-5b4b-401a-ad44-8505d6e27874",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'2.0.0'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import MDAnalysis\n",
"MDAnalysis.__version__"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "850e481c-ae32-4fa5-b129-d30c43cf1ecd",
"metadata": {},
"outputs": [],
"source": [
"from MDAnalysis import Universe"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "53ad98d6-592a-4e03-a167-b6c3e392d03f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--2021-10-27 08:22:08-- https://files.rcsb.org/download/4WSQ.pdb\n",
"Resolving files.rcsb.org (files.rcsb.org)... 128.6.158.49\n",
"Connecting to files.rcsb.org (files.rcsb.org)|128.6.158.49|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: unspecified [application/octet-stream]\n",
"Saving to: '4WSQ.pdb.2'\n",
"\n",
"4WSQ.pdb.2 [ <=> ] 867.43K 1.27MB/s in 0.7s \n",
"\n",
"2021-10-27 08:22:09 (1.27 MB/s) - '4WSQ.pdb.2' saved [888246]\n",
"\n"
]
}
],
"source": [
"!wget https://files.rcsb.org/download/4WSQ.pdb"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "6116c6f3-5b27-4dde-872d-f727ad0eef6f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Warning: importing 'simtk.openmm' is deprecated. Import 'openmm' instead.\n"
]
},
{
"data": {
"text/plain": [
"<Universe with 5271 atoms>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u = Universe(\"4WSQ.pdb\")\n",
"u"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "586530cf-b2f0-4f90-9816-351340a75aee",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AtomGroup with 2664 atoms>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u.select_atoms(\"chainID A\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1707bc39-7bcc-4139-95d0-dd0f26b96446",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['A', 'A', 'A', ..., 'B', 'B', 'B'], dtype=object)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u.atoms.segids"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f85d1fb5-3239-417c-90a9-92a1eb1d8dad",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['A', 'A', 'A', ..., 'B', 'B', 'B'], dtype=object)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u.atoms.chainIDs"
]
},
{
"cell_type": "markdown",
"id": "9f2e6b57-2f42-4fe9-9075-dc822ec59d1a",
"metadata": {},
"source": [
"## OpenCADD"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "18a1cebc-9c01-4671-8846-1235d7724e5f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# packages in environment at /home/dominique/.local/miniconda/envs/toc:\n",
"#\n",
"# Name Version Build Channel\n",
"opencadd 0.2.2 pyhd8ed1ab_0 conda-forge\n",
"teachopencadd 1.3.0+689.ge36208e.dirty pypi_0 pypi\n"
]
}
],
"source": [
"!conda list opencadd"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "e9c9adaa-ba0d-486a-916f-add8ec918d70",
"metadata": {},
"outputs": [],
"source": [
"from opencadd.structure.core import Structure"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "fbcefdb0-5d54-49ab-83c1-672f17754943",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Universe with 5271 atoms>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"structure = Structure.from_pdbid(\"4wsq\")\n",
"structure"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "65324cac-08bd-469f-b7e4-b970d37e24e2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['A', 'A', 'A', ..., 'B', 'B', 'B'], dtype=object)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"structure.atoms.segids"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "738094ae-932b-468d-9c2a-03bebfb822c3",
"metadata": {},
"outputs": [
{
"ename": "NoDataError",
"evalue": "This Universe does not contain chainID information",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNoDataError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_6240/2940815569.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstructure\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0matoms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchainIDs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/.local/miniconda/envs/toc/lib/python3.9/site-packages/MDAnalysis/core/groups.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, attr)\u001b[0m\n\u001b[1;32m 2500\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mattr\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'positions'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2501\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNoDataError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'This Universe has no coordinates'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2502\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mAtomGroup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2503\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2504\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/miniconda/envs/toc/lib/python3.9/site-packages/MDAnalysis/core/groups.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, attr)\u001b[0m\n\u001b[1;32m 593\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 594\u001b[0m \u001b[0merr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'This Universe does not contain {singular} information'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 595\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mNoDataError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msingular\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msingular\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 596\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 597\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mGroupBase\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNoDataError\u001b[0m: This Universe does not contain chainID information"
]
}
],
"source": [
"structure.atoms.chainIDs"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "477be8b2-e758-43c6-9ba8-f07b81bc8833",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'Topology' object has no attribute 'chainIDs'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_6240/1826298726.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstructure\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mselect_atoms\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"chainID A\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/.local/miniconda/envs/toc/lib/python3.9/site-packages/MDAnalysis/core/universe.py\u001b[0m in \u001b[0;36mselect_atoms\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 638\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0mmeth\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mMDAnalysis\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgroups\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mAtomGroup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mselect_atoms\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 639\u001b[0m \"\"\"\n\u001b[0;32m--> 640\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0matoms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mselect_atoms\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 641\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 642\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/miniconda/envs/toc/lib/python3.9/site-packages/MDAnalysis/core/groups.py\u001b[0m in \u001b[0;36mselect_atoms\u001b[0;34m(self, sel, periodic, rtol, atol, updating, sorted, rdkit_kwargs, *othersel, **selgroups)\u001b[0m\n\u001b[1;32m 3155\u001b[0m \u001b[0;31m# Apply the first selection and sum to it\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3156\u001b[0m atomgrp = sum([sel.apply(self) for sel in selections[1:]],\n\u001b[0;32m-> 3157\u001b[0;31m selections[0].apply(self))\n\u001b[0m\u001b[1;32m 3158\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0matomgrp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3159\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/miniconda/envs/toc/lib/python3.9/site-packages/MDAnalysis/core/selection.py\u001b[0m in \u001b[0;36mapply\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 239\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 240\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 241\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_apply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masunique\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msorted\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msorted\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 242\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 243\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/miniconda/envs/toc/lib/python3.9/site-packages/MDAnalysis/core/selection.py\u001b[0m in \u001b[0;36m_apply\u001b[0;34m(self, group)\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 220\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 221\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 222\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_apply\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/miniconda/envs/toc/lib/python3.9/site-packages/MDAnalysis/core/selection.py\u001b[0m in \u001b[0;36m_apply\u001b[0;34m(self, group)\u001b[0m\n\u001b[1;32m 585\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_apply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 586\u001b[0m \u001b[0;31m# rather than work on group.names, cheat and look at the lookup table\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 587\u001b[0;31m \u001b[0mnmattr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muniverse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_topology\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfield\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 588\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 589\u001b[0m \u001b[0mmatches\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# list of passing indices\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'Topology' object has no attribute 'chainIDs'"
]
}
],
"source": [
"structure.select_atoms(\"chainID A\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "330f6111-7b58-41ff-a669-c1181fc23fcb",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment