Skip to content

Instantly share code, notes, and snippets.

@ptosco
Last active February 8, 2023 06:50
Show Gist options
  • Save ptosco/686a8a87b8a5818a947af9622635ce89 to your computer and use it in GitHub Desktop.
Save ptosco/686a8a87b8a5818a947af9622635ce89 to your computer and use it in GitHub Desktop.
Add fixed point to force field, set distance constraints to it and finally set a position constraint on it
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import sys\n",
"import rdkit\n",
"from rdkit import Chem\n",
"from rdkit.Chem import AllChem\n",
"from rdkit.Chem.Draw import IPythonConsole\n",
"import py3Dmol"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"m = Chem.MolFromSmiles('c1ccccc1CCCCCCCN')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nCImISGr/By+LjOK+nHsOAAAAAElFTkSuQmCC\n",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x213fffccda0>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mH = Chem.AddHs(m)\n",
"AllChem.EmbedMolecule(mH, useExpTorsionAnglePrefs = False, useBasicKnowledge = False)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nCImISGr/By+LjOK+nHsOAAAAAElFTkSuQmCC\n",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x213fffccda0>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div id=\"3dmolviewer_14776388786397417\" style=\"position: relative; width: 400px; height: 400px\">\n",
"<script>\n",
"if(typeof $3Dmolpromise === 'undefined') $3Dmolpromise = $.when($.getScript('http://3dmol.csb.pitt.edu/build/3Dmol.js'))\n",
"$3Dmolpromise.done(function() {\n",
"var viewer = $3Dmol.createViewer($(\"#3dmolviewer_14776388786397417\"),{backgroundColor:\"white\"});\n",
"\tviewer.addModel(\"\\n RDKit 3D\\n\\n 35 35 0 0 0 0 0 0 0 0999 V2000\\n -3.2890 0.1351 1.4702 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.5441 -0.4429 1.4984 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.3301 -0.4195 0.3562 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.9936 0.5062 -0.6238 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.7371 1.1020 -0.6371 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.8439 0.9128 0.4110 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.3920 0.9108 0.0417 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.1182 -0.4062 -0.6163 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.3131 -0.6442 -0.9681 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.2839 0.2991 -0.3304 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.6709 -0.0403 -0.8612 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.6093 -0.4566 0.2478 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9757 0.1669 0.0105 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.3298 0.9366 1.1976 N 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5463 -0.2131 2.1838 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.7345 -1.2837 2.1674 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -6.2458 -1.0043 0.2636 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.6425 0.5685 -1.4953 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.3764 1.3524 -1.6371 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.8288 1.0496 0.9744 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.2451 1.7834 -0.6288 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.7323 -0.4453 -1.5503 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.5526 -1.1931 0.0532 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.4640 -0.6333 -2.0620 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.5567 -1.6817 -0.6341 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.3388 0.1931 0.7623 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.0749 1.3469 -0.5982 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.1265 0.8174 -1.4045 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.6369 -0.8924 -1.5826 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.7584 -1.5652 0.2708 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2195 -0.1962 1.2583 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.7450 -0.6062 -0.2049 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.9420 0.9107 -0.8268 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.6853 0.3004 1.9550 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.4215 1.3486 1.5394 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 2 0\\n 2 3 1 0\\n 3 4 2 0\\n 4 5 1 0\\n 5 6 2 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 6 1 1 0\\n 1 15 1 0\\n 2 16 1 0\\n 3 17 1 0\\n 4 18 1 0\\n 5 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\n 9 24 1 0\\n 9 25 1 0\\n 10 26 1 0\\n 10 27 1 0\\n 11 28 1 0\\n 11 29 1 0\\n 12 30 1 0\\n 12 31 1 0\\n 13 32 1 0\\n 13 33 1 0\\n 14 34 1 0\\n 14 35 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer.setStyle({\"stick\": {}});\n",
"\tviewer.zoomTo();\n",
"viewer.render();\n",
"});\n",
"</script>"
],
"text/plain": [
"<py3Dmol.view at 0x21380b60518>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = py3Dmol.view(width = 400, height = 400)\n",
"p.addModel(Chem.MolToMolBlock(mH), 'sdf')\n",
"p.setStyle({'stick':{}})\n",
"p.zoomTo()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get indices for the benzene ring heavy atoms"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"c = mH.GetSubstructMatch(Chem.MolFromSmarts('c1ccccc1'))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 1, 2, 3, 4, 5)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get the nitrogen index just to make sure that it moves during the minimization"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"nIdx = mH.GetSubstructMatch(Chem.MolFromSmarts('N'))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(13,)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nIdx"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ctd = Chem.rdGeometry.Point3D(0.0, 0.0, 0.0)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"cH = mH.GetConformer()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is where the nitrogen initially lies"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[5.329771716296932, 0.9365511048445183, 1.19756387379814]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(cH.GetAtomPosition(nIdx[0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Get the initial position of the centroid"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for i in c:\n",
" ctd += cH.GetAtomPosition(i)\n",
"ctd /= float(len(c))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"mp = AllChem.MMFFGetMoleculeProperties(mH)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ff = AllChem.MMFFGetMoleculeForceField(mH, mp)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Add an extra point to the forcefield for the centroid and get its index"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ep = ff.AddExtraPoint(ctd.x, ctd.y, ctd.z) - 1"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"35"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ep"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the current distance between each benzene heavy atom and the centroid, and constrain it to stay as it is"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"for i in c:\n",
" d = cH.GetAtomPosition(i).Distance(ctd)\n",
" ff.MMFFAddDistanceConstraint(ep, i, False, d, d, 5.0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, add a position contraint on the centroid, so that it does not move from its current position"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ff.MMFFAddPositionConstraint(ep, 0.0, 5.0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check where the centroid initially lies"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[-4.122963502416918, 0.29894914861169203, 0.41247045505622665]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(ctd)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Re-initialize the force field as we added an additional point and the positions array needs to be updated, then minimize"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ff.Initialize()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check the initial energy"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"69.80100037688061"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ff.CalcEnergy()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ff.Minimize()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div id=\"3dmolviewer_14776388791463912\" style=\"position: relative; width: 400px; height: 400px\">\n",
"<script>\n",
"if(typeof $3Dmolpromise === 'undefined') $3Dmolpromise = $.when($.getScript('http://3dmol.csb.pitt.edu/build/3Dmol.js'))\n",
"$3Dmolpromise.done(function() {\n",
"var viewer = $3Dmol.createViewer($(\"#3dmolviewer_14776388791463912\"),{backgroundColor:\"white\"});\n",
"\tviewer.addModel(\"\\n RDKit 3D\\n\\n 35 35 0 0 0 0 0 0 0 0999 V2000\\n -3.1478 -0.0023 1.3571 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.4963 -0.1973 1.6598 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.4748 0.1061 0.7152 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.1054 0.6027 -0.5334 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.7574 0.7983 -0.8379 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.7661 0.5027 0.1070 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.3073 0.6971 -0.2267 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.6849 -0.5815 -0.7937 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.7627 -0.3972 -1.2580 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.7333 -0.0934 -0.1146 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.1781 -0.0334 -0.6160 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.1511 0.2739 0.5244 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.5926 0.3324 0.0197 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.5180 0.6257 1.1085 N 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.3949 -0.2477 2.1026 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -4.7830 -0.5875 2.6327 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -6.5245 -0.0463 0.9511 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -5.8676 0.8366 -1.2719 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -3.4844 1.1820 -1.8182 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.7787 1.0185 0.6784 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.2042 1.5189 -0.9464 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -1.2767 -0.9235 -1.6528 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.7318 -1.3856 -0.0484 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.8098 0.4025 -2.0072 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.0797 -1.3194 -1.7608 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.6449 -0.8664 0.6582 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.4768 0.8643 0.3518 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.2657 0.7372 -1.3915 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.4466 -0.9907 -1.0790 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 4.0598 -0.4970 1.2999 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 3.8804 1.2312 0.9874 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.8737 -0.6225 -0.4374 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 5.6941 1.1051 -0.7500 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.4265 -0.0838 1.8349 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 6.2603 1.5090 1.5473 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 2 0\\n 2 3 1 0\\n 3 4 2 0\\n 4 5 1 0\\n 5 6 2 0\\n 6 7 1 0\\n 7 8 1 0\\n 8 9 1 0\\n 9 10 1 0\\n 10 11 1 0\\n 11 12 1 0\\n 12 13 1 0\\n 13 14 1 0\\n 6 1 1 0\\n 1 15 1 0\\n 2 16 1 0\\n 3 17 1 0\\n 4 18 1 0\\n 5 19 1 0\\n 7 20 1 0\\n 7 21 1 0\\n 8 22 1 0\\n 8 23 1 0\\n 9 24 1 0\\n 9 25 1 0\\n 10 26 1 0\\n 10 27 1 0\\n 11 28 1 0\\n 11 29 1 0\\n 12 30 1 0\\n 12 31 1 0\\n 13 32 1 0\\n 13 33 1 0\\n 14 34 1 0\\n 14 35 1 0\\nM END\\n\",\"sdf\");\n",
"\tviewer.setStyle({\"stick\": {}});\n",
"\tviewer.zoomTo();\n",
"viewer.render();\n",
"});\n",
"</script>"
],
"text/plain": [
"<py3Dmol.view at 0x213fe7fd198>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = py3Dmol.view(width = 400, height = 400)\n",
"p.addModel(Chem.MolToMolBlock(mH), 'sdf')\n",
"p.setStyle({'stick':{}})\n",
"p.zoomTo()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check that the centroid hasn't moved during the minimization"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[-4.122963502416918, 0.29894914861169203, 0.41247045505622665]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(ff.GetExtraPointPos(0))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check that the rest of the molecule has actually been optimized"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[6.517997450444338, 0.6256671030204412, 1.1085129129686233]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(cH.GetAtomPosition(nIdx[0]))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"16.75989066251583"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ff.CalcEnergy()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment