Created
January 31, 2025 12:36
-
-
Save iwatobipen/4bba7ee3ccb6969672465ebe42a6476d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "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