Skip to content

Instantly share code, notes, and snippets.

@iwatobipen
Created January 31, 2025 12:36
Show Gist options
  • Select an option

  • Save iwatobipen/4bba7ee3ccb6969672465ebe42a6476d to your computer and use it in GitHub Desktop.

Select an option

Save iwatobipen/4bba7ee3ccb6969672465ebe42a6476d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "f8aa916b",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Warning: importing 'simtk.openmm' is deprecated. Import 'openmm' instead.\n",
"Warning: Unable to load toolkit 'OpenEye Toolkit'. The Open Force Field Toolkit does not require the OpenEye Toolkits, and can use RDKit/AmberTools instead. However, if you have a valid license for the OpenEye Toolkits, consider installing them for faster performance and additional file format support: https://docs.eyesopen.com/toolkits/python/quickstart-python/linuxosx.html OpenEye offers free Toolkit licenses for academics: https://www.eyesopen.com/academic-licensing\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "89f535e771594dc0b65de48b86b6184c",
"version_major": 2,
"version_minor": 0
},
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import logging\n",
"from implicitml.calculator import ImplicitSolventCalculator, Solvent, Functional, BasisSet, SolventModel, logger\n",
"from implicitml.model import TinyModel\n",
"from implicitml.util import embedMolecule\n",
"from GNNImplicitSolvent import create_gnn_model, GNN3_Multisolvent_embedding_run_multiple_Delta, minimize_mol\n",
"from rdkit import Chem\n",
"from rdkit.Chem import AllChem\n",
"from rdkit.Chem.Draw import IPythonConsole\n",
"from Simulation.helper_functions import MODEL_PATH"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b7c66f67",
"metadata": {},
"outputs": [],
"source": [
"import py3Dmol"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "584402bf",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x76e20e4ce7a0>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smiles = \"COCCO\"\n",
"#smiles = \"c1cc(O)c(C(=O)NC)cc1\"\n",
"mol = Chem.MolFromSmiles(smiles)\n",
"mol"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3c2b63e4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mol = Chem.AddHs(mol)\n",
"AllChem.EmbedMolecule(mol,randomSeed=42)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "488780d8",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/3dmoljs_load.v0": "<div id=\"3dmolviewer_17383264601548843\" style=\"position: relative; width: 640px; height: 480px;\">\n <p id=\"3dmolwarning_17383264601548843\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason. Please check your browser console for error messages.<br></p>\n </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n return new Promise((resolve, reject) => {\n //this is to ignore the existence of requirejs amd\n var savedexports, savedmodule;\n if (typeof exports !== 'undefined') savedexports = exports;\n else exports = {}\n if (typeof module !== 'undefined') savedmodule = module;\n else module = {}\n\n var tag = document.createElement('script');\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n exports = savedexports;\n module = savedmodule;\n resolve();\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.2/3Dmol-min.js');\n}\n\nvar viewer_17383264601548843 = null;\nvar warn = document.getElementById(\"3dmolwarning_17383264601548843\");\nif(warn) {\n warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_17383264601548843 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_17383264601548843\"),{backgroundColor:\"white\"});\nviewer_17383264601548843.zoomTo();\n\tviewer_17383264601548843.addModel(\"\\n RDKit 3D\\n\\n 13 12 0 0 0 0 0 0 0 0999 V2000\\n -1.9010 0.4088 0.3027 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.5329 0.5148 0.5793 O 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.1206 -0.3949 -0.2135 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.6089 -0.4114 -0.0398 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2183 0.7837 -0.3225 O 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2871 -0.6038 0.5154 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5162 1.1145 0.8624 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0390 0.5493 -0.8090 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1392 -0.1747 -1.2768 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.2819 -1.4064 -0.0109 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8661 -0.7568 0.9797 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0165 -1.1764 -0.7367 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8669 1.5534 0.1696 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 1 6 1 0\\n 1 7 1 0\\n 1 8 1 0\\n 3 9 1 0\\n 3 10 1 0\\n 4 11 1 0\\n 4 12 1 0\\n 5 13 1 0\\nM END\\n\",\"sdf\",{\"keepH\": true});\n\tviewer_17383264601548843.setStyle({\"line\": {\"linewidth\": 5}});\n\tviewer_17383264601548843.setStyle({\"stick\": {}});\n\tviewer_17383264601548843.setBackgroundColor(\"#ebf4fb\");\n\tviewer_17383264601548843.setBackgroundColor(\"#f9f4fb\");\n\tviewer_17383264601548843.setBackgroundColor(\"#e1e1e1\");\nviewer_17383264601548843.render();\n});\n</script>",
"text/html": [
"<div id=\"3dmolviewer_17383264601548843\" style=\"position: relative; width: 640px; height: 480px;\">\n",
" <p id=\"3dmolwarning_17383264601548843\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason. Please check your browser console for error messages.<br></p>\n",
" </div>\n",
"<script>\n",
"\n",
"var loadScriptAsync = function(uri){\n",
" return new Promise((resolve, reject) => {\n",
" //this is to ignore the existence of requirejs amd\n",
" var savedexports, savedmodule;\n",
" if (typeof exports !== 'undefined') savedexports = exports;\n",
" else exports = {}\n",
" if (typeof module !== 'undefined') savedmodule = module;\n",
" else module = {}\n",
"\n",
" var tag = document.createElement('script');\n",
" tag.src = uri;\n",
" tag.async = true;\n",
" tag.onload = () => {\n",
" exports = savedexports;\n",
" module = savedmodule;\n",
" resolve();\n",
" };\n",
" var firstScriptTag = document.getElementsByTagName('script')[0];\n",
" firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
"});\n",
"};\n",
"\n",
"if(typeof $3Dmolpromise === 'undefined') {\n",
"$3Dmolpromise = null;\n",
" $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.2/3Dmol-min.js');\n",
"}\n",
"\n",
"var viewer_17383264601548843 = null;\n",
"var warn = document.getElementById(\"3dmolwarning_17383264601548843\");\n",
"if(warn) {\n",
" warn.parentNode.removeChild(warn);\n",
"}\n",
"$3Dmolpromise.then(function() {\n",
"viewer_17383264601548843 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_17383264601548843\"),{backgroundColor:\"white\"});\n",
"viewer_17383264601548843.zoomTo();\n",
"\tviewer_17383264601548843.addModel(\"\\n RDKit 3D\\n\\n 13 12 0 0 0 0 0 0 0 0999 V2000\\n -1.9010 0.4088 0.3027 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.5329 0.5148 0.5793 O 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.1206 -0.3949 -0.2135 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.6089 -0.4114 -0.0398 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2183 0.7837 -0.3225 O 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2871 -0.6038 0.5154 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.5162 1.1145 0.8624 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0390 0.5493 -0.8090 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1392 -0.1747 -1.2768 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.2819 -1.4064 -0.0109 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8661 -0.7568 0.9797 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0165 -1.1764 -0.7367 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8669 1.5534 0.1696 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 1 6 1 0\\n 1 7 1 0\\n 1 8 1 0\\n 3 9 1 0\\n 3 10 1 0\\n 4 11 1 0\\n 4 12 1 0\\n 5 13 1 0\\nM END\\n\",\"sdf\",{\"keepH\": true});\n",
"\tviewer_17383264601548843.setStyle({\"line\": {\"linewidth\": 5}});\n",
"\tviewer_17383264601548843.setStyle({\"stick\": {}});\n",
"\tviewer_17383264601548843.setBackgroundColor(\"#ebf4fb\");\n",
"\tviewer_17383264601548843.setBackgroundColor(\"#f9f4fb\");\n",
"\tviewer_17383264601548843.setBackgroundColor(\"#e1e1e1\");\n",
"viewer_17383264601548843.render();\n",
"});\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"view = py3Dmol.view()\n",
"view.addModel(Chem.MolToMolBlock(mol), 'sdf', {'keepH': True})\n",
"view.setStyle({'line': {'linewidth': 5}}, viewer=(0,0))\n",
"view.setStyle({'stick': {}}, viewer=(0,1))\n",
"view.setBackgroundColor('#ebf4fb', viewer=(0,0))\n",
"view.setBackgroundColor('#f9f4fb', viewer=(0,1))\n",
"view.setBackgroundColor('#e1e1e1', viewer=(0,2))\n",
"view.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a73bc14d",
"metadata": {},
"outputs": [],
"source": [
"calc = ImplicitSolventCalculator(Chem.Mol(mol))\n",
"calc.optimize_orca(Solvent.CHLOROFORM, Functional.BP86, BasisSet.def2_SVP, SolventModel.SMD, nprocs=1, maxcore=4096)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "6f7b9107",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/3dmoljs_load.v0": "<div id=\"3dmolviewer_17383265085698771\" style=\"position: relative; width: 640px; height: 480px;\">\n <p id=\"3dmolwarning_17383265085698771\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason. Please check your browser console for error messages.<br></p>\n </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n return new Promise((resolve, reject) => {\n //this is to ignore the existence of requirejs amd\n var savedexports, savedmodule;\n if (typeof exports !== 'undefined') savedexports = exports;\n else exports = {}\n if (typeof module !== 'undefined') savedmodule = module;\n else module = {}\n\n var tag = document.createElement('script');\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n exports = savedexports;\n module = savedmodule;\n resolve();\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.2/3Dmol-min.js');\n}\n\nvar viewer_17383265085698771 = null;\nvar warn = document.getElementById(\"3dmolwarning_17383265085698771\");\nif(warn) {\n warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_17383265085698771 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_17383265085698771\"),{backgroundColor:\"white\"});\nviewer_17383265085698771.zoomTo();\n\tviewer_17383265085698771.addModel(\"\\n RDKit 3D\\n\\n 13 12 0 0 0 0 0 0 0 0999 V2000\\n -1.8800 0.4830 0.2976 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.4936 0.3741 0.5487 O 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.1619 -0.5707 -0.2884 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.6524 -0.4214 -0.0274 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0892 0.9018 -0.2973 O 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.4158 -0.4804 0.4790 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2907 1.2472 0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0941 0.7999 -0.7523 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.0616 -0.3581 -1.3637 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1796 -1.6139 -0.0720 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8665 -0.7228 1.0294 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2172 -1.1133 -0.6876 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.4282 1.4747 0.1464 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 1 6 1 0\\n 1 7 1 0\\n 1 8 1 0\\n 3 9 1 0\\n 3 10 1 0\\n 4 11 1 0\\n 4 12 1 0\\n 5 13 1 0\\nM END\\n\",\"sdf\",{\"keepH\": true});\n\tviewer_17383265085698771.setStyle({\"line\": {\"linewidth\": 5}});\n\tviewer_17383265085698771.setStyle({\"stick\": {}});\n\tviewer_17383265085698771.setBackgroundColor(\"#ebf4fb\");\n\tviewer_17383265085698771.setBackgroundColor(\"#f9f4fb\");\n\tviewer_17383265085698771.setBackgroundColor(\"#e1e1e1\");\nviewer_17383265085698771.render();\n});\n</script>",
"text/html": [
"<div id=\"3dmolviewer_17383265085698771\" style=\"position: relative; width: 640px; height: 480px;\">\n",
" <p id=\"3dmolwarning_17383265085698771\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason. Please check your browser console for error messages.<br></p>\n",
" </div>\n",
"<script>\n",
"\n",
"var loadScriptAsync = function(uri){\n",
" return new Promise((resolve, reject) => {\n",
" //this is to ignore the existence of requirejs amd\n",
" var savedexports, savedmodule;\n",
" if (typeof exports !== 'undefined') savedexports = exports;\n",
" else exports = {}\n",
" if (typeof module !== 'undefined') savedmodule = module;\n",
" else module = {}\n",
"\n",
" var tag = document.createElement('script');\n",
" tag.src = uri;\n",
" tag.async = true;\n",
" tag.onload = () => {\n",
" exports = savedexports;\n",
" module = savedmodule;\n",
" resolve();\n",
" };\n",
" var firstScriptTag = document.getElementsByTagName('script')[0];\n",
" firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
"});\n",
"};\n",
"\n",
"if(typeof $3Dmolpromise === 'undefined') {\n",
"$3Dmolpromise = null;\n",
" $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.2/3Dmol-min.js');\n",
"}\n",
"\n",
"var viewer_17383265085698771 = null;\n",
"var warn = document.getElementById(\"3dmolwarning_17383265085698771\");\n",
"if(warn) {\n",
" warn.parentNode.removeChild(warn);\n",
"}\n",
"$3Dmolpromise.then(function() {\n",
"viewer_17383265085698771 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_17383265085698771\"),{backgroundColor:\"white\"});\n",
"viewer_17383265085698771.zoomTo();\n",
"\tviewer_17383265085698771.addModel(\"\\n RDKit 3D\\n\\n 13 12 0 0 0 0 0 0 0 0999 V2000\\n -1.8800 0.4830 0.2976 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.4936 0.3741 0.5487 O 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.1619 -0.5707 -0.2884 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.6524 -0.4214 -0.0274 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0892 0.9018 -0.2973 O 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.4158 -0.4804 0.4790 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2907 1.2472 0.9875 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0941 0.7999 -0.7523 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.0616 -0.3581 -1.3637 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1796 -1.6139 -0.0720 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8665 -0.7228 1.0294 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2172 -1.1133 -0.6876 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.4282 1.4747 0.1464 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 1 6 1 0\\n 1 7 1 0\\n 1 8 1 0\\n 3 9 1 0\\n 3 10 1 0\\n 4 11 1 0\\n 4 12 1 0\\n 5 13 1 0\\nM END\\n\",\"sdf\",{\"keepH\": true});\n",
"\tviewer_17383265085698771.setStyle({\"line\": {\"linewidth\": 5}});\n",
"\tviewer_17383265085698771.setStyle({\"stick\": {}});\n",
"\tviewer_17383265085698771.setBackgroundColor(\"#ebf4fb\");\n",
"\tviewer_17383265085698771.setBackgroundColor(\"#f9f4fb\");\n",
"\tviewer_17383265085698771.setBackgroundColor(\"#e1e1e1\");\n",
"viewer_17383265085698771.render();\n",
"});\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"view = py3Dmol.view()\n",
"view.addModel(Chem.MolToMolBlock(calc.molecule), 'sdf', {'keepH': True})\n",
"view.setStyle({'line': {'linewidth': 5}}, viewer=(0,0))\n",
"view.setStyle({'stick': {}}, viewer=(0,1))\n",
"view.setBackgroundColor('#ebf4fb', viewer=(0,0))\n",
"view.setBackgroundColor('#f9f4fb', viewer=(0,1))\n",
"view.setBackgroundColor('#e1e1e1', viewer=(0,2))\n",
"view.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "f2b6c15d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-707031.3784966157\n"
]
}
],
"source": [
"calc.calculate_gibbs_free_energy(Solvent.CHLOROFORM, Functional.BP86, BasisSet.def2_SVP, SolventModel.COSMORS, nprocs=1, maxcore=4096)\n",
"print(calc.gibbs_free_energy)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "36c4cc12",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using OpenFF forcefield: openff-2.0.0\n",
"using rdkit molecule\n",
"setting charges based on AM1BCC\n",
"Calculating TORCH\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/iwatobipen/miniforge3/envs/QMGNNIS/lib/python3.10/site-packages/torch/autograd/__init__.py:303: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at /home/conda/feedstock_root/build_artifacts/pytorch-recipe_1680572619157/work/c10/cuda/CUDAFunctions.cpp:109.)\n",
" return Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Step Time Energy fmax\n",
"BFGS: 0 21:29:19 -7329.877330 0.129892\n",
"Calculating TORCH\n",
"BFGS: 1 21:29:22 -7329.878128 0.063397\n",
"Calculating TORCH\n",
"BFGS: 2 21:29:25 -7329.878377 0.038203\n",
"Calculating TORCH\n",
"BFGS: 3 21:29:28 -7329.878579 0.035754\n",
"Calculating TORCH\n",
"BFGS: 4 21:29:31 -7329.878747 0.035303\n",
"Calculating TORCH\n",
"BFGS: 5 21:29:34 -7329.878880 0.036228\n",
"Calculating TORCH\n",
"BFGS: 6 21:29:38 -7329.879034 0.038269\n",
"Calculating TORCH\n",
"BFGS: 7 21:29:41 -7329.879176 0.032033\n",
"Calculating TORCH\n",
"BFGS: 8 21:29:44 -7329.879320 0.027802\n",
"Calculating TORCH\n",
"BFGS: 9 21:29:47 -7329.879403 0.022712\n"
]
}
],
"source": [
"model = create_gnn_model(\n",
" mol,\n",
" solvent=\"tip3p\",\n",
" model_class=GNN3_Multisolvent_embedding_run_multiple_Delta,\n",
" model_dict=MODEL_PATH,\n",
" jit=False,\n",
")\n",
"\n",
"calc.optimize(Solvent.CHLOROFORM, Functional.BP86, BasisSet.def2_SVP, SolventModel.CPCM, model=model, nprocs=1, maxcore=4096, fmax=0.025)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "2a7f58db",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Calculating TORCH\n",
"(39, 39)\n",
"Calculating TORCH\n"
]
},
{
"data": {
"text/plain": [
"-707243.03466798986545"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from implicitml.util import normal_modes\n",
"from Simulation.helper_functions import calculate_entropy_from_frequencies\n",
"import numpy as np\n",
"calc.calculate_hessian(Solvent.CHLOROFORM, Functional.BP86, BasisSet.def2_SVP, SolventModel.CPCM, model=model, nprocs=1, maxcore=4096)\n",
"total_hessian = calc.QM_hessian*96.485332 + calc.GNN_hessian\n",
"print(total_hessian.shape)\n",
"masses = np.array([atom.GetMass() for atom in calc.molecule.GetAtoms()]).round(0)\n",
"indices = [atom.GetIdx() for atom in calc.molecule.GetAtoms()]\n",
"freqs, modes = normal_modes(total_hessian, indices,masses)\n",
"\n",
"freqs\n",
"entropy = calculate_entropy_from_frequencies(freqs)\n",
"calc.singlepoint(Solvent.CHLOROFORM, Functional.BP86, BasisSet.def2_SVP, SolventModel.CPCM, model=model, nprocs=1, maxcore=4096)\n",
"energy = calc.electronic_energy\n",
"gibbs_free_energy = energy - entropy\n",
"gibbs_free_energy"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "01cc4c78",
"metadata": {},
"outputs": [
{
"data": {
"application/3dmoljs_load.v0": "<div id=\"3dmolviewer_1738326636989299\" style=\"position: relative; width: 640px; height: 480px;\">\n <p id=\"3dmolwarning_1738326636989299\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason. Please check your browser console for error messages.<br></p>\n </div>\n<script>\n\nvar loadScriptAsync = function(uri){\n return new Promise((resolve, reject) => {\n //this is to ignore the existence of requirejs amd\n var savedexports, savedmodule;\n if (typeof exports !== 'undefined') savedexports = exports;\n else exports = {}\n if (typeof module !== 'undefined') savedmodule = module;\n else module = {}\n\n var tag = document.createElement('script');\n tag.src = uri;\n tag.async = true;\n tag.onload = () => {\n exports = savedexports;\n module = savedmodule;\n resolve();\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n};\n\nif(typeof $3Dmolpromise === 'undefined') {\n$3Dmolpromise = null;\n $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.2/3Dmol-min.js');\n}\n\nvar viewer_1738326636989299 = null;\nvar warn = document.getElementById(\"3dmolwarning_1738326636989299\");\nif(warn) {\n warn.parentNode.removeChild(warn);\n}\n$3Dmolpromise.then(function() {\nviewer_1738326636989299 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_1738326636989299\"),{backgroundColor:\"white\"});\nviewer_1738326636989299.zoomTo();\n\tviewer_1738326636989299.addModel(\"\\n RDKit 3D\\n\\n 13 12 0 0 0 0 0 0 0 0999 V2000\\n -1.8754 0.4803 0.2972 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.4926 0.3694 0.5533 O 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.1577 -0.5717 -0.2865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.6464 -0.4204 -0.0278 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0803 0.8992 -0.3078 O 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.4092 -0.4871 0.4762 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2866 1.2485 0.9879 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0809 0.7950 -0.7570 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.0652 -0.3503 -1.3608 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1869 -1.6143 -0.0716 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8592 -0.7174 1.0321 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2147 -1.1136 -0.6876 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.4384 1.4825 0.1525 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 1 6 1 0\\n 1 7 1 0\\n 1 8 1 0\\n 3 9 1 0\\n 3 10 1 0\\n 4 11 1 0\\n 4 12 1 0\\n 5 13 1 0\\nM END\\n\",\"sdf\",{\"keepH\": true});\n\tviewer_1738326636989299.setStyle({\"line\": {\"linewidth\": 5}});\n\tviewer_1738326636989299.setStyle({\"stick\": {}});\n\tviewer_1738326636989299.setBackgroundColor(\"#ebf4fb\");\n\tviewer_1738326636989299.setBackgroundColor(\"#f9f4fb\");\n\tviewer_1738326636989299.setBackgroundColor(\"#e1e1e1\");\nviewer_1738326636989299.render();\n});\n</script>",
"text/html": [
"<div id=\"3dmolviewer_1738326636989299\" style=\"position: relative; width: 640px; height: 480px;\">\n",
" <p id=\"3dmolwarning_1738326636989299\" style=\"background-color:#ffcccc;color:black\">3Dmol.js failed to load for some reason. Please check your browser console for error messages.<br></p>\n",
" </div>\n",
"<script>\n",
"\n",
"var loadScriptAsync = function(uri){\n",
" return new Promise((resolve, reject) => {\n",
" //this is to ignore the existence of requirejs amd\n",
" var savedexports, savedmodule;\n",
" if (typeof exports !== 'undefined') savedexports = exports;\n",
" else exports = {}\n",
" if (typeof module !== 'undefined') savedmodule = module;\n",
" else module = {}\n",
"\n",
" var tag = document.createElement('script');\n",
" tag.src = uri;\n",
" tag.async = true;\n",
" tag.onload = () => {\n",
" exports = savedexports;\n",
" module = savedmodule;\n",
" resolve();\n",
" };\n",
" var firstScriptTag = document.getElementsByTagName('script')[0];\n",
" firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n",
"});\n",
"};\n",
"\n",
"if(typeof $3Dmolpromise === 'undefined') {\n",
"$3Dmolpromise = null;\n",
" $3Dmolpromise = loadScriptAsync('https://cdnjs.cloudflare.com/ajax/libs/3Dmol/2.4.2/3Dmol-min.js');\n",
"}\n",
"\n",
"var viewer_1738326636989299 = null;\n",
"var warn = document.getElementById(\"3dmolwarning_1738326636989299\");\n",
"if(warn) {\n",
" warn.parentNode.removeChild(warn);\n",
"}\n",
"$3Dmolpromise.then(function() {\n",
"viewer_1738326636989299 = $3Dmol.createViewer(document.getElementById(\"3dmolviewer_1738326636989299\"),{backgroundColor:\"white\"});\n",
"viewer_1738326636989299.zoomTo();\n",
"\tviewer_1738326636989299.addModel(\"\\n RDKit 3D\\n\\n 13 12 0 0 0 0 0 0 0 0999 V2000\\n -1.8754 0.4803 0.2972 C 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.4926 0.3694 0.5533 O 0 0 0 0 0 0 0 0 0 0 0 0\\n 0.1577 -0.5717 -0.2865 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.6464 -0.4204 -0.0278 C 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.0803 0.8992 -0.3078 O 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.4092 -0.4871 0.4762 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.2866 1.2485 0.9879 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -2.0809 0.7950 -0.7570 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.0652 -0.3503 -1.3608 H 0 0 0 0 0 0 0 0 0 0 0 0\\n -0.1869 -1.6143 -0.0716 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.8592 -0.7174 1.0321 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 2.2147 -1.1136 -0.6876 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1.4384 1.4825 0.1525 H 0 0 0 0 0 0 0 0 0 0 0 0\\n 1 2 1 0\\n 2 3 1 0\\n 3 4 1 0\\n 4 5 1 0\\n 1 6 1 0\\n 1 7 1 0\\n 1 8 1 0\\n 3 9 1 0\\n 3 10 1 0\\n 4 11 1 0\\n 4 12 1 0\\n 5 13 1 0\\nM END\\n\",\"sdf\",{\"keepH\": true});\n",
"\tviewer_1738326636989299.setStyle({\"line\": {\"linewidth\": 5}});\n",
"\tviewer_1738326636989299.setStyle({\"stick\": {}});\n",
"\tviewer_1738326636989299.setBackgroundColor(\"#ebf4fb\");\n",
"\tviewer_1738326636989299.setBackgroundColor(\"#f9f4fb\");\n",
"\tviewer_1738326636989299.setBackgroundColor(\"#e1e1e1\");\n",
"viewer_1738326636989299.render();\n",
"});\n",
"</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"view = py3Dmol.view()\n",
"view.addModel(Chem.MolToMolBlock(calc.molecule), 'sdf', {'keepH': True})\n",
"view.setStyle({'line': {'linewidth': 5}}, viewer=(0,0))\n",
"view.setStyle({'stick': {}}, viewer=(0,1))\n",
"view.setBackgroundColor('#ebf4fb', viewer=(0,0))\n",
"view.setBackgroundColor('#f9f4fb', viewer=(0,1))\n",
"view.setBackgroundColor('#e1e1e1', viewer=(0,2))\n",
"view.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "21931d02",
"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.10.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment