{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## One- and Two-Dimensional Scans of Potential Energy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Introduction\n", "\n", "In this notebook, we will perform 1D and 2D scans of molecular potential energies using `tqchem`. The aim is to calculate and visualize the potential energy of a molecule (octane) as a function of torsion angle(s). We will cover the following steps:\n", "\n", "1. Set up the molecule and the calculation parameters.\n", "2. Perform the energy calculations for different torsion angles.\n", "3. Save the trajectory of the molecule.\n", "4. Plot and visualize the results." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 1: Setting Up Paths and Parameters\n", "In this step, we import the necessary dependencies, define the input and output paths, create the molecule object and display it as a graph and 3D model.\n", "\n", "**Code Explanation**\n", "\n", "We specify the path to the XYZ file of the molecule and create an output directory for saving results, \n", "From the XYZ file we create a `MolecularSystem` and call `draw` to display its graph representation.\n", "By calling `plot_3D_molecule` we display the 3D structure of the molecule using py3Dmol." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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8Omnn7J9+3YCAwP5+uuveeutt/j7778r+uNUqKysLNauXcvevXuJjIx84ncHcPDgQQ4cOEC7du2wsLDg8OHD+V53cXHBx8eHjRs3MmbMmAr4FKKquX79OjY2NtjY2FR2KTVSbm4uixcvZt++fYwfP56//voLY2PjQq8NCQlh2bJl3Lp1i6+++opmzZpVcLVViwRKIUShzp8/T4MGDTA3NwfA1dWVxMREVCoVcXFxhYYiY2NjwsLCsLW11TzXq1cv6tevz+jRo9m0aRMTJkxAV1eX27dv4+LiUmGfp6Jt2bKFkSNHoqurW6zvDuCjjz5i3rx5ACxatKhAoASYNGkS48aNk0BZCymKwvXr12nevHlll1IjRUREMG3aNEaNGsWePXueuHCuRYsWLF26lMjISN5880169uzJG2+8UWuPt5QhbyFEobZu3cq4ceM0P6tUqif+Ramrq5svTObp1KkTAJGRkQCMGTOGf//9V4vVVj3//PMPEyZMAIr33QHF2m/SwsICBwcHzXcpao979+7x4MEDGe4uBzdu3ODFF1/kp59+YsqUKSUKhfXq1WPTpk2kpqYyZ84cautujBIohRCFCg4Opl27dlpp69ChQwC0bNkSgI4dOxIUFKSVtqsiRVFIT0/HwsKiXNrv0qVLrZmHKv7P9evX0dfXx9XVtbJLqVEePHjA1KlT+eOPP0q9FZNKpWLOnDmYmZnxww8/aLnC6kECpRCiUFlZWUXOHSqJqKgoZs2aRYcOHTSnejg7OxMTE1PmtquqmJgY6tSpU27tt2/fnuDg4HJrX1RN169fp2HDhujpyWw1bZoxYwbz58+nbt26ZW5rzpw5HDx4kGvXrmmhsupFAqUQolDamAeUkJCAj48PiqLw999/5xvSrcnHCSYlJRU69K8ttra2JCYmllv7oupJT08nMjJShru1zN/fH319fXr06FHo66dOnWLAgAGYm5tjZmZG7969OX78eJHtqVQqlixZwqxZs8qr5Cqr5v6NLoQok7LOA0pMTMTb25uoqCj2799Pw4YNtdp+Vaajo4NarS639tVqNbq6uuXWvqh6bty4gaIocgSnlv3444/MnDmz0NdOnz5Njx49SE9P548//uCPP/4gIyODvn374u/vX2Sb9evXx97evtbtGSuBUghRpNLud5iYmEi/fv0ICwtj//79tGnTJt/rycnJmJiY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vao2JzM5ORktWrTQWb1EDQEX5RAREZVjbm4OKysrPHz4EM2bN0dERARCQ0Ph7++PoUOHIjo6Wq29r68vpFIpBg8ejHHjxqF9+/awsrLC7du3sWnTJpSUlKhC6I0bN9C2bVuYmJjo460R1RlubE5ERPSUkydP4ty5cwgNDUX//v0RFRVVaVtBEFBSUoIZM2bgzz//RHJyMoqLi+Hm5ob+/ftj4cKFkEgkAIAZM2Zg2rRp6NatW329FaJ6wUBJRET0FEEQEBAQgC+++AJt2rTRSZ9///03Vq1ahe+//14n/RE1JAyUREREFbhz5w7mzp2LgwcPQiQSadVXSUkJhg0bhp07d8LNzU1HFRI1HFyUQ0REVIH27dvjrbfewocffoiysrJa9yOTyRAcHIzZs2czTJLRYqAkIiKqxNtvv63aUzInJ6fGz3/48CFGjhyJsWPH4rXXXquDCokaBt7yJiIieobo6GgsXrwY06ZNw5tvvgkzs6o3SSkpKcHu3buxb98+rF+/nvtOktFjoCQiIqqG4uJifPnll/jll1/Qp08f9OnTBz4+PnB2dgYApKenIzY2FmfOnEFcXBxGjhyJyZMno0mTJnqunKjuMVASERHVQFlZGaKjo3HhwgXExcUhNzcXJiYmEIvFqmMXfXx8uNckNSoMlERERESkFS7KISIiIiKtMFASERERkVYYKImIiIhIKwyURERERKQVBkoiIiIi0goDJRERERFphYGSiIiIiLTCQElEREREWmGgJCIiIiKtMFASERERkVYYKImIiIhIKwyURERERKQVBkoiIiIi0goDJRERERFphYGSiIiIiLTCQElEREREWmGgJCIiIiKtMFASERERkVYYKImIiIhIKwyURERERKQVBkoiIiIi0goDJRERERFphYGSiIiIiLTCQElEREREWmGgJCIiIiKtMFASERERkVYYKImIiIhIKwyURERERKQVBkoiIiIi0goDJRERERFphYGSiIiIiLTCQElEREREWmGgJCIiIiKtMFASERERkVYYKImIiIhIKwyURERERKQVBkoiIiIi0goDJRERERFp5f8BcXrqrCH48BAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/3dmoljs_load.v0": "
\n

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n
\n", "text/html": [ "
\n", "

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from pathlib import Path\n", "from plotly import graph_objects as go\n", "\n", "from tqchem.ttconf.electronic_structure_interfaces import TBliteInterface\n", "from tqchem.molgraph import molecularSystem\n", "from tqchem.internal_coordinates import MolecularGrid\n", "from tqchem.chem import xyz_contents\n", "from tqchem.viewer import plot_3D_molecule, display_trajectory\n", "\n", "\n", "xyz = Path(\"../tests/octane.xyz\")\n", "output_dir = Path(\".outputs_screen_energy\")\n", "output_dir.mkdir(exist_ok=True)\n", "\n", "# read octane.xyz into MoleculrSystem class and draw the graph/molecule\n", "octane = molecularSystem(xyz)\n", "octane.draw()\n", "view = plot_3D_molecule(octane.ase)\n", "view.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 2: Internal coordinates and bond to screen\n", "\n", "In this step, set up the internal coordinates for octane (Bonds, Angles and Torsions) and we define the bond to be rotated, and the grid of torsion angles.\n", "\n", "**Code Explanation**\n", "\n", "We choose a number of grid points, i.e. how many points we want to sample when rotating around the bond.\n", "Because `molecularSystem` sets sensible default grids for each bond (used in the conformer optimization), we need to reconstruct the molecular system while overwriting these default grids with the grid we want.\n", "Then we set up the `MolecularGrid` for octane which constructs the\n", "internal coordinates for the system. The `shift_by_reference` keyword, let's change dihedral values based on the initial structure instead of setting all dihedrals to 0.0 initially.\n", "We determine the bond we want to rotate around as index of the list of `variable_atom_indices`.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Bond(1, 2)', 'Bond(2, 3)', 'Bond(3, 4)', 'Bond(4, 5)', 'Bond(5, 6)']\n" ] } ], "source": [ "n_gridpoints = 120\n", "dihedral_angles = np.linspace(0, 360, n_gridpoints, endpoint=False)\n", "octane = molecularSystem(xyz)\n", "\n", "molecule_grid = MolecularGrid(\n", " octane, shift_by_reference=True, overwrite_grids=dihedral_angles\n", ")\n", "print(molecule_grid.variable_atom_indices())\n", "bond_grid_shape = molecule_grid.shape()\n", "\n", "bond_index = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 3: Screen single coordinate\n", "\n", "We first set up an energy calculator (using the GFN2-xTB method) and an output file to store all the geometries of octane while scanning the coordinate.\n", "We then loop through the values of the coordinate, calculate the energy and save the coordinates in the trajectory file.\n", "\n", "**Code Explanation**\n", "\n", "The `superindex` is a list of indices telling each variable (rotatable bond) of the molecular grid, which value of the grid it should assume." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "superindex = [0] * molecule_grid.n_variables()\n", "\n", "energy_calculator = TBliteInterface(\n", " method=\"GFN2-xTB\", ref_mol=octane.ase, local_optimization=False\n", ")\n", "energies = []\n", "xyzs = []\n", "\n", "output_name = \"octane34\"\n", "\n", "for i in bond_grid_shape[bond_index]:\n", " superindex[bond_index] = i\n", " molecule = molecule_grid(superindex)\n", " energies.append(energy_calculator(molecule.ase))\n", " xyzs.append(xyz_contents(molecule.ase))\n", "\n", "trajectory_file = output_dir / f\"{output_name}.xyz\"\n", "_ = trajectory_file.write_text(\"\".join(xyzs))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 4: Plot results\n", "\n", "We convert the gridpoints into degree of the dihedral angle and plot the energy as a function of the dihedral angle." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "mode": "lines+markers", "type": "scatter", "x": [ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270, 273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306, 309, 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, 342, 345, 348, 351, 354, 357 ], "y": [ -715.5428070697625, -715.5529181547521, -715.5607656976237, -715.56623428861, -715.5692583689505, -715.5698383379851, -715.5680490932876, -715.5640411803575, -715.5580357406427, -715.5503149257535, -715.5412094728708, -715.5310848907453, -715.5203273543625, -715.5093300606427, -715.4984805127825, -715.4881489976307, -715.4786783963624, -715.4703754072135, -715.463503237547, -715.4582758178318, -715.4548535855233, -715.4533408715291, -715.4537848940121, -715.4561763237028, -715.4604513411508, -715.4664950609963, -715.4741461603988, -715.4832025205136, -715.4934276716139, -715.5045578267737, -715.5163092914917, -715.5283860472292, -715.5404873227983, -715.552314986672, -715.563580615305, -715.5740121142342, -715.5833597918348, -715.5914018055626, -715.5979489200662, -715.6028485308286, -715.605987918098, -715.6072967013249, -715.6067484655542, -715.6043615286839, -715.6001988143172, -715.5943667916996, -715.5870134447152, -715.5783252398847, -715.5685230815343, -715.5578572717984, -715.5466015356475, -715.5350462202912, -715.5234908313291, -715.5122361134859, -715.501575917138, -715.4917891055378, -715.4831317506229, -715.4758298386357, -715.4700726647673, -715.4660070465452, -715.4637324359566, -715.4632969704069, -715.464694477562, -715.4678624429899, -715.472680962775, -715.4789727309319, -715.4865041532967, -715.4949877317252, -715.5040859243569, -715.513416757134, -715.5225615316212, -715.5310750309175, -715.5384986481655, -715.5443768308573, -715.5482771420543, -715.5498140743346, -715.5486763349406, -715.5446560615188, -715.5376759066185, -715.5278078216727, -715.5152784502128, -715.5004587741478, -715.48383647897, -715.465970096062, -715.447427322946, -715.4287149386679, -715.4102118314814, -715.3921183156014, -715.374433615991, -715.3569693017398, -715.3394003275915, -715.3213485715862, -715.3024875979715, -715.2826521193584, -715.2619316220399, -715.2407278768197, -715.2197626457037, -715.2000311581909, -715.1827056532493, -715.16900184001, -715.1600284794173, -715.1566441809164, -715.1593450286049, -715.1682017129835, -715.1828559197853, -715.2025745488737, -715.2263497063983, -715.2530250166386, -715.2814260617606, -715.3104745059799, -715.3392705958452, -715.3671361206482, -715.3936181595082, -715.4184608309341, -715.441556141318, -715.4628860348146, -715.482466789365, -715.5003045406428, -715.5163673337147, -715.5305752968105 ] } ], "layout": { "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "title": { "text": "Dihedral of Bond(4,3) (°)" } }, "yaxis": { "title": { "text": "Energy (eV)" } } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = go.Figure()\n", "fig.add_trace(go.Scatter(x=dihedral_angles, y=energies, mode=\"lines+markers\"))\n", "fig.update_layout(xaxis_title=\"Dihedral of Bond(4,3) (°)\", yaxis_title=\"Energy (eV)\")\n", "fig.show()\n", "\n", "output_html = output_dir / f\"{output_name}.html\"\n", "fig.write_html(output_html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 5: Visualize the conformers during the screening" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n
\n", "text/html": [ "
\n", "

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "view = display_trajectory(xyzs, repetitions=1, time=30)\n", "view.show()\n", "# view.apng(100) # display as animated png (apng)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 6: Screening two coordinates\n", "\n", "We now want to screen two dihedral angles and select the bond connecting the carbon atoms 2 and 3\n", "and the bond connecting carbon atom 3 and 4.\n", "To reduce the computational time we select only 25 grid points per coordinate,\n", "for which we set up a new `molecularSystem` and `MolecularGrid` object." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Bond(1, 2)', 'Bond(2, 3)', 'Bond(3, 4)', 'Bond(4, 5)', 'Bond(5, 6)']\n", "[range(0, 25), range(0, 25), range(0, 25), range(0, 25), range(0, 25)]\n" ] } ], "source": [ "n_gridpoints = 25\n", "dihedral_angles = np.linspace(0, 360, n_gridpoints, endpoint=False)\n", "octane = molecularSystem(xyz)\n", "\n", "molecule_grid = MolecularGrid(\n", " octane, shift_by_reference=True, overwrite_grids=dihedral_angles\n", ")\n", "print(molecule_grid.variable_atom_indices())\n", "grid = molecule_grid.shape()\n", "print(grid)\n", "\n", "bond_index1 = 1\n", "bond_index2 = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 7: Screen two coordinates\n", "\n", "We now repeat Step 3, but instead of iterating over the grid for one coordinate,\n", "we iterate over the product of the two coordinates." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from itertools import product\n", "\n", "superindex = [0] * molecule_grid.n_variables()\n", "\n", "energy_calculator = TBliteInterface(\n", " method=\"GFN2-xTB\", ref_mol=octane.ase, local_optimization=False\n", ")\n", "energies = np.zeros((n_gridpoints, n_gridpoints))\n", "xyzs = []\n", "\n", "output_name = \"octane_23_34\"\n", "trajectory_file = output_dir / f\"{output_name}.xyz\"\n", "\n", "for i, j in product(grid[bond_index1], grid[bond_index2]):\n", " superindex[bond_index1] = i\n", " superindex[bond_index2] = j\n", " molecule = molecule_grid(superindex)\n", " energies[i, j] = energy_calculator(molecule.ase)\n", " xyzs.append(xyz_contents(molecule.ase))\n", "\n", "_ = trajectory_file.write_text(\"\".join(xyzs))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/3dmoljs_load.v0": "
\n

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n
\n", "text/html": [ "
\n", "

3Dmol.js failed to load for some reason. Please check your browser console for error messages.

\n", "
\n", "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "view = display_trajectory(xyzs, repetitions=1, time=100)\n", "view.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 8: Plot energy as a function of both dihedral angles" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "type": "surface", "x": [ 0, 14.4, 28.8, 43.2, 57.6, 72, 86.4, 100.8, 115.2, 129.6, 144, 158.4, 172.8, 187.20000000000002, 201.6, 216, 230.4, 244.8, 259.2, 273.6, 288, 302.40000000000003, 316.8, 331.2, 345.6 ], "y": [ 0, 14.4, 28.8, 43.2, 57.6, 72, 86.4, 100.8, 115.2, 129.6, 144, 158.4, 172.8, 187.20000000000002, 201.6, 216, 230.4, 244.8, 259.2, 273.6, 288, 302.40000000000003, 316.8, 331.2, 345.6 ], "z": [ [ -715.5428070697626, -715.5699153804526, -715.544995031835, -715.4942658264733, -715.4574427987433, -715.4604513411508, -715.502272787037, -715.5591596614045, -715.6001137007203, -715.6036682581034, -715.5685230815342, -715.5144487334779, -715.4721797566679, -715.4657546327186, -715.4967698265862, -715.5384986481653, -715.5456964971702, -715.4906668949028, -715.4029207794583, -715.317649393602, -715.2197626457037, -715.1568442073832, -715.2164250949725, -715.3505587061766, -715.4669415438908 ], [ -715.4831941288538, -715.5404625095279, -715.5286573959908, -715.4788666958095, -715.4378671538416, -715.4361228361455, -715.4756346019041, -715.5336325340652, -715.5779793808827, -715.5850546057022, -715.5514158881042, -715.4954975919754, -715.4485102949034, -715.437127906575, -715.4665743855356, -715.5143487387692, -715.5417168461386, -715.5213320112636, -715.450503525019, -715.3224059161058, -715.1554597362289, -715.0701535948353, -715.1378362195902, -715.2622525396903, -715.377979074864 ], [ -715.4107758615603, -715.4964502328173, -715.4885586168461, -715.4333367650432, -715.3860320064359, -715.3810031148164, -715.4216156144645, -715.4837662691461, -715.5324284367173, -715.541393301888, -715.5059321458393, -715.4449889276411, -715.3923593145422, -715.3784245434922, -715.4111718604296, -715.4694231496578, -715.5141733108104, -715.5067107440256, -715.41153280409, -715.2059677742216, -714.9700411720958, -714.8911955709233, -714.984542349183, -715.1096028286139, -715.254311323869 ], [ -715.3702901856166, -715.463525282914, -715.4460973598475, -715.3810839666174, -715.3284604518967, -715.3237434029364, -715.369015241367, -715.4366993440063, -715.4883273213386, -715.496058670168, -715.4556392273512, -715.3884677371682, -715.3321118626537, -715.3199438809511, -715.3599673482406, -715.4283723791309, -715.4801092254153, -715.4590813146416, -715.3027585349733, -715.0017895256071, -714.7304291961802, -714.7078358451516, -714.8280577226097, -714.9633293780156, -715.1653154739726 ], [ -715.3835122806397, -715.4566428588274, -715.4216672016082, -715.3489905218529, -715.2963702455771, -715.29665348142, -715.3482482057059, -715.4196834830125, -715.4706105401846, -715.4738011680707, -715.4273881043024, -715.3561928779214, -715.3007976872366, -715.2947495532966, -715.3426654907809, -715.4155640892982, -715.4594940416999, -715.39971972505, -715.1611759097664, -714.7896343780355, -714.5690533758954, -714.6272228129145, -714.7460932819407, -714.9069103774488, -715.1673898804621 ], [ -715.4191356848206, -715.4596348949394, -715.4166275227277, -715.3515436388501, -715.3091896015832, -715.3177265813143, -715.373274866768, -715.4434585563989, -715.4894499033437, -715.4869858987851, -715.4373138293993, -715.3675378933517, -715.3182033331608, -715.3194277402745, -715.370891550745, -715.4388453676804, -715.460958445042, -715.3498613573406, -715.0473138267928, -714.6974909948971, -714.6000404395488, -714.6841932370742, -714.7683515917598, -714.954964781714, -715.2331043366651 ], [ -715.358482858986, -715.3874970501726, -715.3934719508994, -715.3787670635681, -715.3609184879487, -715.3763019864773, -715.428970290761, -715.4918149746459, -715.5310948400833, -715.526281483324, -715.4798680568108, -715.417583110563, -715.3759999556983, -715.3802057522636, -715.4268371606572, -715.4808315208423, -715.4763837898823, -715.3300167969926, -715.0352308171961, -714.803190626688, -714.7827550985411, -714.7819686096188, -714.7660711246086, -714.9358354280004, -715.2125318350782 ], [ -714.906883719652, -715.0663715146321, -715.3033475313789, -715.4076713446534, -715.4197270447601, -715.4316296701852, -715.4711344421813, -715.5228009070123, -715.5598809651665, -715.5623611957016, -715.5279990576275, -715.4760067411393, -715.4370045405531, -715.4334462112158, -715.4647971088542, -715.5017418146357, -715.4844805639495, -715.3509469717335, -715.1421708510655, -715.0117829345437, -714.8959571572997, -714.5584442220052, -714.2296653478006, -714.4547761618777, -714.8119198146086 ], [ -713.5815231459267, -714.5009219286632, -715.2075099331089, -715.4219032005738, -715.4334231608533, -715.4201696065525, -715.4367731317938, -715.4835868807132, -715.5362219180967, -715.562687501393, -715.546384366361, -715.4975429568755, -715.4440386915049, -715.413953107968, -715.4216215816706, -715.453679144446, -715.4600121748922, -715.3917532850178, -715.2698151336971, -715.0592200964372, -714.3717983784748, -712.8546299411121, -712.2757650380496, -713.1994989606735, -713.4744520917766 ], [ -712.0120436398117, -714.2932156663259, -715.1818175381646, -715.3704868738245, -715.3338422893041, -715.2778702198459, -715.2823995355941, -715.357296389017, -715.455489070751, -715.5149166516086, -715.5038079963458, -715.4303984565175, -715.3310353789363, -715.2578159780675, -715.2568773125853, -715.3261774168083, -715.3994206275804, -715.3961304169012, -715.1981907968513, -714.3108255166458, -711.2947147660665, -707.1131918832552, -709.8769668555905, -710.8163481274254, -710.0948131155028 ], [ -712.3021032106299, -714.3249648471445, -715.05909231127, -715.1870717192106, -715.0972423179967, -715.0251371467026, -715.0724926471123, -715.2153296749045, -715.35812856426, -715.4204663902618, -715.3734065190001, -715.2372597441557, -715.077262347739, -714.9910945509997, -715.0439776060716, -715.1932764363048, -715.3171333474728, -715.226313554137, -714.3603094348459, -710.6037803974232, 450.2314019598662, -705.5202689858311, -707.1993701147826, -704.9609572691297, -707.2674481329766 ], [ -712.2984325184503, -714.0245886539592, -714.8493179355534, -714.955278587744, -714.854160521482, -714.8312179002879, -714.9464117427929, -715.1224795609971, -715.2554437120731, -715.2766087751442, -715.1700248531987, -714.980680309544, -714.81729581371, -714.794882529731, -714.924502627947, -715.102431739555, -715.130686853985, -714.4683255120249, -711.0678811861874, 779.310317373318, -702.7807955733115, -703.8440787576385, -700.4858105122881, -702.1391161073803, -709.3863519722875 ], [ -711.5361884880224, -714.0538594496636, -714.836140740115, -714.8589342489438, -714.7671922066451, -714.7724260726754, -714.8878784242846, -715.0451866397133, -715.1533537801766, -715.146265860906, -715.0190053242434, -714.841072401915, -714.7255538878804, -714.7419320711643, -714.8678348441028, -714.9698282475443, -714.6248379409122, -712.3816471281059, 125.23008820279308, -703.204095081162, -702.5342096398294, -697.5503312757346, -699.031349150088, -706.1360104202935, -709.0432337663686 ], [ -712.7349492606883, -714.6869320267359, -714.989000370155, -714.882743453822, -714.7578138317747, -714.7456635195812, -714.8640112412793, -715.0357458677039, -715.1496640306214, -715.1407739521023, -715.0158574390155, -714.8437924505163, -714.7204481185295, -714.7210784833404, -714.8276087651846, -714.7900541279158, -713.8190056092513, -710.222070374014, -706.8757343619422, -704.1143251346708, 98.39213997181028, -696.3201782999914, -703.988731970703, -705.9906470267451, -706.8723279389578 ], [ -714.553774436826, -715.1473151262784, -715.0978378657057, -714.9116800353928, -714.7904408283322, -714.8288511950108, -714.9972346385664, -715.1774953437256, -715.2680366240883, -715.2262000919137, -715.0694444615539, -714.8758146518117, -714.7653130547, -714.815071365867, -714.9289735287517, -714.750900415773, -713.583859590897, -711.2232831630565, -707.6693996598694, 198.90437664519277, 278.2017430198248, -704.1911998405471, -705.1474183463639, 180.5277446202825, -711.5234284032058 ], [ -715.2670576483897, -715.3224660008977, -715.1780849987309, -715.0297150862312, -714.9923298801831, -715.0882404403446, -715.2437467881975, -715.3667566460123, -715.3962287003324, -715.3133182482567, -715.1538430992638, -715.012792114031, -714.9906960227875, -715.0869568396726, -715.1633006706339, -714.9313280989325, -713.8906317014433, -711.2091784996661, 69.06626280647806, 306.7871774058277, -706.6316601357083, -706.978905590224, 93.3549840793491, -711.293451769848, -714.5016743265003 ], [ -715.4535336975705, -715.4163123458908, -715.322262323213, -715.2543545938536, -715.2613080358634, -715.3331394002684, -715.4242685218062, -715.4862987484163, -715.4852925735254, -715.4168197655134, -715.3202245156632, -715.2618688249867, -715.2777617148979, -715.3388273977757, -715.3467693404749, -715.0399434358284, -713.7466640225742, -709.9103344055025, 39.94224131165665, -709.8152175728192, -710.3834911954851, -709.4377641436477, -712.1573643371773, -714.523410474329, -715.2942435625941 ], [ -715.4843253236239, -715.4916268412413, -715.4576874164682, -715.4203480074293, -715.4111395076754, -715.437248684296, -715.4849192595827, -715.5278985592468, -715.54091112965, -715.5169775933629, -715.474353836913, -715.4409191503343, -715.4326328950276, -715.4408571826104, -715.3912401912359, -715.0236066105397, -713.8150026146687, -712.1287102740821, -712.6114936882626, -713.1601694685562, -712.9195415699322, -713.4615956748801, -714.6032651551624, -715.206980044882, -715.4150430550304 ], [ -715.4568004035824, -715.5132492993605, -715.5024040920104, -715.4594757677836, -715.4262087287666, -715.4273883302294, -715.4634082025689, -715.5133324576999, -715.5491714970314, -715.5529896327039, -715.5251630547685, -715.4816234716285, -715.4451060617811, -715.4252522831779, -715.3738318624131, -715.1434686330333, -714.6754084252321, -714.4826945093329, -714.6503880090987, -714.5788763797203, -714.4657520516688, -714.7063526250738, -715.0349625202892, -715.2273749414122, -715.3481770885401 ], [ -715.411213680816, -715.4898831449165, -715.4769019773815, -715.4211274756973, -715.3741239097609, -715.3683014100005, -715.4073004074644, -715.4680793249563, -715.5167993545135, -715.5280791207774, -715.4967903266258, -715.4400778671728, -715.3888256836385, -715.3658150208604, -715.356991228414, -715.3160225940138, -715.2610016942791, -715.2639655773322, -715.2056290726333, -714.9804140481176, -714.7939346565006, -714.8368309025573, -714.9781399802532, -715.0969877313125, -715.2499251116596 ], [ -715.3901314922082, -715.4626874761549, -715.4362511703982, -715.3697988681774, -715.317776244784, -715.3136583033569, -715.3592502390029, -715.4272614205931, -715.4797430446908, -715.4891166075618, -715.450868441703, -715.3857963602424, -715.3303653970363, -715.3151234406749, -715.3431302023002, -715.39097773342, -715.4298130298249, -715.4065194392771, -715.2309279510262, -714.9215404651105, -714.7200444373416, -714.761145053041, -714.8671614026492, -714.9944882417985, -715.2023533356028 ], [ -715.4124753399004, -715.4607857746588, -715.4195793026014, -715.347739816316, -715.2970090529034, -715.2981942604923, -715.3492752402698, -715.4196188821712, -715.4702631112386, -715.4747768797642, -715.4311689901814, -715.3633972906018, -715.3105085711541, -715.304263386183, -715.3487090971589, -715.4163850887139, -715.4537180848018, -715.3807338707753, -715.1322242443741, -714.8097658783247, -714.684808654396, -714.7524504322124, -714.8397742611141, -714.9994832280041, -715.2381652999173 ], [ -715.4669971032907, -715.4894289136491, -715.4396685323568, -715.3689544567584, -715.3234593167778, -715.3298039065332, -715.3827323295623, -715.450904588941, -715.4970513796407, -715.4973077863215, -715.4520512472059, -715.3866359530194, -715.3394223230677, -715.3392396785663, -715.3866120272613, -715.4493683429406, -715.4651848565954, -715.3520180353701, -715.0845923388449, -714.8357114100638, -714.7950115452809, -714.8484309515148, -714.9239265480784, -715.1072125336033, -715.3315732097014 ], [ -715.5257618342945, -715.5333044241918, -715.4844677961873, -715.4199397529552, -715.3802393971154, -715.3887828666714, -715.4395303895308, -715.5030256805071, -715.5449159962676, -715.5436313307637, -715.5005320200693, -715.4401397694918, -715.397925393691, -715.3991922785285, -715.4423441340848, -715.4939968777802, -715.4916939331006, -715.3685185930582, -715.1480357972845, -714.9998429128087, -714.9853465819975, -714.9985943971384, -715.0688311702644, -715.24685523676, -715.4295200522697 ], [ -715.557903858215, -715.5668749160727, -715.5275403868828, -715.4708881510834, -715.4345453098985, -715.4416109937482, -715.487852945591, -715.5468890788745, -715.5868373201761, -715.5870339882658, -715.548103046149, -715.49224583761, -715.4518573153925, -715.4504214367645, -715.4868581858658, -715.5299817888883, -715.5244780422952, -715.4270486849091, -715.2825571911114, -715.1941455803884, -715.1520899943105, -715.1238578303798, -715.1876916282878, -715.3429283482996, -715.4840269749188 ] ] } ], "layout": { "autosize": false, "height": 700, "margin": { "b": 50, "l": 50, "r": 50, "t": 60 }, "scene": { "xaxis": { "title": { "text": "Dihedral of Bond(3,2) (°)" } }, "yaxis": { "title": { "text": "Dihedral of Bond(4,3) (°)" } }, "zaxis": { "title": { "text": "Energy (eV)" } } }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Surface plot of energy" }, "width": 700 } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a 2D surface plot of the energy landscape\n", "fig = go.Figure(\n", " data=[\n", " go.Surface(\n", " # z=-1.0 / np.sqrt(np.abs(energies)),\n", " z=energies,\n", " x=dihedral_angles,\n", " y=dihedral_angles,\n", " )\n", " ]\n", ")\n", "\n", "fig.update_scenes(\n", " xaxis_title=\"Dihedral of Bond(3,2) (°)\",\n", " yaxis_title=\"Dihedral of Bond(4,3) (°)\",\n", " zaxis_title=\"Energy (eV)\",\n", ")\n", "fig.update_layout(\n", " title=\"Surface plot of energy\",\n", " autosize=False,\n", " width=700,\n", " height=700,\n", " margin=dict(l=50, r=50, b=50, t=60),\n", ")\n", "fig.show()" ] } ], "metadata": { "kernelspec": { "display_name": "tqchem", "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.12.7" } }, "nbformat": 4, "nbformat_minor": 4 }