{ "cells": [ { "cell_type": "markdown", "id": "e34dbbb0-70fe-4f98-9415-70263ec2c642", "metadata": {}, "source": [ "# Simple Spectrum\n", "\n", "This notebook constructs a simple IR spectrum of a molecule by name." ] }, { "cell_type": "markdown", "id": "957ce74d-0c82-4e79-94ea-ca6ac27e2fcb", "metadata": {}, "source": [ "# Imports\n", "\n", "Import a few necessary libraries." ] }, { "cell_type": "code", "execution_count": 1, "id": "590755a2-7bb2-4f4a-ab2f-54e995233108", "metadata": { "tags": [] }, "outputs": [], "source": [ "import webmo\n", "import webmo.util\n", "import webmo.spectrum\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "markdown", "id": "e9bca9e0-2d69-40ea-ba41-81e15f89db8f", "metadata": {}, "source": [ "# User Input\n", "\n", "Define the molecule, along with configurable parameters." ] }, { "cell_type": "code", "execution_count": 2, "id": "a0dd5f1a-fd71-4791-b6a0-c7b1a63d9b7c", "metadata": { "tags": [] }, "outputs": [], "source": [ "## BOOKKEEPING PARAMETERS\n", "\n", "# The URL of your WebMO instance\n", "URL = \"https://server.university.edu/~webmo/cgi-bin/webmo/rest.cgi\"\n", "\n", "# Your WebMO username\n", "uname = \"smith\"\n", "\n", "# The name of the molecule\n", "molecule = \"formaldehyde\"\n", "\n", "# The labels for the plot. Defaults are empty.\n", "xlabel = \"Wavenumber\"\n", "ylabel = \"Absorption\"" ] }, { "cell_type": "markdown", "id": "d9caf8f6-c94a-48b5-ae8d-47a8997d9d7a", "metadata": {}, "source": [ "# Job Setup\n", "\n", "Compute the infrared spectrum of the molecule. Start by opening a REST session to the WebMO server." ] }, { "cell_type": "code", "execution_count": 3, "id": "b4052f0b-e03d-420b-867e-3d2eb7c7b431", "metadata": { "tags": [] }, "outputs": [ { "name": "stdin", "output_type": "stream", "text": [ "Enter WebMO password for user smith: ········\n" ] } ], "source": [ "rest = webmo.WebMOREST(URL, username=uname)" ] }, { "cell_type": "markdown", "id": "31ef1d56-297d-4cda-a7ff-4b327114ec95", "metadata": {}, "source": [ "Get the starting geometry of our molecule from PubChem." ] }, { "cell_type": "code", "execution_count": 4, "id": "b52f579f-ac26-46d7-9278-bbd1ecfd708e", "metadata": { "tags": [] }, "outputs": [], "source": [ "geom = webmo.util.xyz_from_name(molecule)" ] }, { "cell_type": "markdown", "id": "ce164ffc-60a9-4d4b-a2aa-5b7a207c4ea2", "metadata": {}, "source": [ "## Template Construction\n", "\n", "Use this geometry and build a job file for Gaussian." ] }, { "cell_type": "code", "execution_count": 5, "id": "0b88073a-cd75-461b-8cba-6d117ec8c850", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#N HF/6-31G(d) OPT FREQ \n", "\n", "formaldehyde\n", "\n", "0 1\n", "O\t0.612300\t0.000000\t0.000000\n", "C\t-0.612300\t0.000000\t0.000000\n", "H\t-1.200000\t0.242600\t-0.899800\n", "H\t-1.200000\t-0.242400\t0.899800\n", "\n", "\n" ] } ], "source": [ "# get template\n", "job_type = \"Optimize + Vib Freq\" \n", "template = rest.get_templates(\"gaussian\")[job_type]\n", "\n", "# fill the template\n", "job_string = rest.generate_input(template, {\"geometry\":geom, \"jobName\":molecule})\n", "\n", "# display input file\n", "print(job_string)" ] }, { "cell_type": "markdown", "id": "36545bb4-defe-4dee-b3c5-31ce78da72df", "metadata": {}, "source": [ "## Job Submission\n", "\n", "Submit the job." ] }, { "cell_type": "code", "execution_count": 6, "id": "cc92989c-697f-48b9-b3d5-059ce6f41539", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Job submitted\n", "Job number 70 has finished!\n" ] } ], "source": [ "n = rest.submit_job(molecule, job_string, \"gaussian\")\n", "print(\"Job submitted\")\n", "rest.wait_for_job(n)\n", "print(\"Job number {} has finished!\".format(n))" ] }, { "cell_type": "markdown", "id": "2ff5ac3f-8bc9-4e84-a98a-55d07d94ebd6", "metadata": {}, "source": [ "# Generating a Spectrum\n", "\n", "## Getting Job Results\n", "\n", "Get the results of our job and store them in variables." ] }, { "cell_type": "code", "execution_count": 7, "id": "3cbd3042-7d6b-416f-ad4c-dea270702dfd", "metadata": { "tags": [] }, "outputs": [], "source": [ "a = rest.get_job_results(n)\n", "peaks = a[\"properties\"][\"vibrations\"][\"frequencies\"]\n", "intensities = a[\"properties\"][\"vibrations\"][\"intensities\"][\"IR\"]" ] }, { "cell_type": "markdown", "id": "d7c45894-f70d-4313-a00a-1bbc05873e4e", "metadata": {}, "source": [ "## Plotting the Spectrum\n", "\n", "Generate and plot the spectrum." ] }, { "cell_type": "code", "execution_count": 8, "id": "4602e99e-0435-46f2-837f-92c42976635c", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# construct the spectrum\n", "axis, y_vals = webmo.spectrum.construct_spectrum(peaks,intensities, width=40)\n", "\n", "# flip the x axis\n", "plt.gca().invert_xaxis()\n", "\n", "# and show the spectrum\n", "plt.plot(axis, y_vals)\n", "plt.show()" ] } ], "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.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }