{ "cells": [ { "cell_type": "markdown", "id": "9b03bf80", "metadata": {}, "source": [ "# 1.2.4 Calculating Infra-Red (IR) Spectrum" ] }, { "cell_type": "markdown", "id": "75be3048", "metadata": {}, "source": [ "It is possible to compute IR spectrum from a normal mode finite displacement calculation. Traditionally, quantum chemistry codes compute the IR intensities employing double-harmonic approximation, where the transition probability (oscillator strength) is proportional to the square of the first derivative of the total dipole moment of the molecule with respect to the normal coordinates. Here we will use the same apprach, where the normal mode derivative of the dipole moment would be computed using finite displacements, as implemented in PyEPFD. In this example, we will use CO2 molecule, however, the approach is applicable to periodic solids; see the following paper: https://onlinelibrary.wiley.com/doi/10.1002/anie.202420680 and section 17 of the associated supporting information for a recent example.\n", "\n", "Here, the steps are very similar to the previous exercises: 1.2.1 and 1.2.2. There are two differences. First we have to instruct Qbox code to compute the total dipole monent, which can be done using the \"set polarization MLWF_REF\" command. Secondly, current implementation of Qbox does not compute correct dipole moment if we keep empty orbitals, therefore we have to use default nempty = 0. We are going to use the xyz file that we created in the exercise 1.2.1 but create a new input deck for Qbox calculations. Lets do it." ] }, { "cell_type": "code", "execution_count": 2, "id": "81cc81c6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[95mFile \u001b[94menmfd_phonon.xyz\u001b[95m has \u001b[94m3\u001b[95m number of atoms in each frame and a total \u001b[94m19\u001b[95m number of frames.\u001b[00m\n", "\u001b[95mNo of species: \u001b[94m2\u001b[00m\n", "\u001b[95mPresent species are: \u001b[94m\n", "O\n", "C\u001b[00m\n", "\u001b[95mThe file \u001b[94menmfd_phonon.xyz\u001b[95m is an i-PI output with\u001b[92m pos_unit: \u001b[94mangstrom\u001b[95m and \u001b[92mcell_unit: \u001b[94mangstrom\u001b[00m\n", "Enter start frame number: (Default = 1) \n", "Enter last frame number: (Default = 19) \n", "Enter step frame: (Default = 1) \n", "Enter qbox command for 1st iteration: (Default = ' randomize_wf, run -atomic_density 0 100 10')\n", "Hint: more than one commands should be separated by a comma.\n", " set polarization MLWF_REF, randomize_wf, run -atomic_density 0 100 10\n", "Enter qbox run command: (Default = ' run 0 60 10')\n", "Hint: more than one commands should be separated by a comma.\n", " run 0 100 10\n", "Enter qbox plot command: (Default = ' None')\n", "Hints:\n", " (1) Example: plot options filename (without .cube extension) \n", " (2) More than one commands should be separated by a comma.\n", "\n", "Enter qbox spectrum command: (Default = ' None')\n", "Hints:\n", " (1) Example: spectrum options filename (without .dat extension) \n", " \n", "Do you want to save sample for each configurations (y/n)? (Default = n) \n", "Enter filename of qbox input: (Default = qbox.i) ir_spectra-1.i\n", "Enter xc: (Default = PBE)B3LYP\n", "Enter wf_dyn: (Default = JD) PSDA\n", "Enter ecut (Ry): (Default = 50.0) \n", "Enter scf_tol (Ry): (Default = 1e-08) 1e-12\n", "Enter nempty: (Default = 100) 0\n", "Enter nspin (1/2): (Default = 1) \n", "Enter delta_spin: (Default = None) \n", "Enter net_charge: (Default = 0) \n", "Enter pseudopotential: (Default = ONCV_PBE-1.0) \n", "\u001b[91mWarning!\n", "Files: \u001b[94m\n", "O_ONCV_PBE-1.0.xml\n", "C_ONCV_PBE-1.0.xml\u001b[91m\n", "must be present in the following pseudo-potential directory.\n", "\u001b[00m../pseudos/\n" ] } ], "source": [ "%run ../../../utils/qbox_utils/xyz2qb.py enmfd_phonon.xyz" ] }, { "cell_type": "markdown", "id": "50580864", "metadata": {}, "source": [ "As usual, lets have a look at the generated qbox input deck." ] }, { "cell_type": "code", "execution_count": 3, "id": "2403d00e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " species O ../pseudos/O_ONCV_PBE-1.0.xml\n", " species C ../pseudos/C_ONCV_PBE-1.0.xml\n", "# Frame 1/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " atom O1 O 0.000000 0.000000 2.186665\n", " atom O2 O 0.000000 0.000000 -2.186662\n", " atom C3 C 0.000000 0.000000 -0.000003\n", " set ecut 50.00\n", " set xc B3LYP \n", " set wf_dyn PSDA \n", " set scf_tol 1.00e-12\n", " set polarization MLWF_REF\n", " randomize_wf\n", " run -atomic_density 0 100 10\n", "# Frame 2/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.000000 -0.000000 2.475340\n", " move O2 to -0.000000 -0.000000 -1.897987\n", " move C3 to -0.000000 -0.000000 0.288672\n", " run 0 100 10 \n", "# Frame 3/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.000000 0.000000 1.897990\n", " move O2 to 0.000000 0.000000 -2.475337\n", " move C3 to 0.000000 0.000000 -0.288678\n", " run 0 100 10 \n", "# Frame 4/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.000000 0.448620 2.186665\n", " move O2 to -0.000001 -0.172131 -2.186662\n", " move C3 to -0.000000 0.138244 -0.000003\n", " run 0 100 10 \n", "# Frame 5/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.000000 -0.448620 2.186665\n", " move O2 to 0.000001 0.172131 -2.186662\n", " move C3 to 0.000000 -0.138244 -0.000003\n", " run 0 100 10 \n", "# Frame 6/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.352008 -0.000001 2.186665\n", " move O2 to -0.355089 0.000000 -2.186662\n", " move C3 to -0.001542 -0.000000 -0.000003\n", " run 0 100 10 \n", "# Frame 7/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.352008 0.000001 2.186665\n", " move O2 to 0.355089 -0.000000 -2.186662\n", " move C3 to 0.001542 0.000000 -0.000003\n", " run 0 100 10 \n", "# Frame 8/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.290402 -0.000001 2.186665\n", " move O2 to -0.286941 0.000001 -2.186662\n", " move C3 to -0.288672 -0.000000 -0.000003\n", " run 0 100 10 \n", "# Frame 9/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.290402 0.000001 2.186665\n", " move O2 to 0.286941 -0.000001 -2.186662\n", " move C3 to 0.288672 0.000000 -0.000003\n", " run 0 100 10 \n", "# Frame 10/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.000000 -0.100021 2.186665\n", " move O2 to 0.000000 -0.416340 -2.186662\n", " move C3 to -0.000000 -0.258181 -0.000003\n", " run 0 100 10 \n", "# Frame 11/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.000000 0.100021 2.186665\n", " move O2 to -0.000000 0.416340 -2.186662\n", " move C3 to 0.000000 0.258181 -0.000003\n", " run 0 100 10 \n", "# Frame 12/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.031448 0.010314 2.186665\n", " move O2 to 0.031448 0.010314 -2.186662\n", " move C3 to -0.083784 -0.027478 -0.000003\n", " run 0 100 10 \n", "# Frame 13/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.031448 -0.010314 2.186665\n", " move O2 to -0.031448 -0.010314 -2.186662\n", " move C3 to 0.083784 0.027478 -0.000003\n", " run 0 100 10 \n", "# Frame 14/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.010314 -0.031448 2.186665\n", " move O2 to 0.010314 -0.031448 -2.186662\n", " move C3 to -0.027478 0.083784 -0.000003\n", " run 0 100 10 \n", "# Frame 15/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.010314 0.031448 2.186665\n", " move O2 to -0.010314 0.031448 -2.186662\n", " move C3 to 0.027478 -0.083784 -0.000003\n", " run 0 100 10 \n", "# Frame 16/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.000000 0.000000 2.216857\n", " move O2 to 0.000000 0.000000 -2.216853\n", " move C3 to -0.000000 -0.000000 -0.000004\n", " run 0 100 10 \n", "# Frame 17/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.000000 -0.000000 2.156473\n", " move O2 to -0.000000 -0.000000 -2.156471\n", " move C3 to 0.000000 0.000000 -0.000002\n", " run 0 100 10 \n", "# Frame 18/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to -0.000000 0.000000 2.195700\n", " move O2 to -0.000000 0.000000 -2.177627\n", " move C3 to 0.000000 -0.000000 -0.024074\n", " run 0 100 10 \n", "# Frame 19/19 from enmfd_phonon.xyz#\n", " set cell 20.000000 0.000000 0.000000 0.000000 20.000000 0.000000 0.000000 0.000000 20.000000\n", " move O1 to 0.000000 -0.000000 2.177630\n", " move O2 to 0.000000 -0.000000 -2.195697\n", " move C3 to -0.000000 0.000000 0.024068\n", " run 0 100 10 \n" ] } ], "source": [ "%%bash\n", "cat ir_spectra.i" ] }, { "cell_type": "markdown", "id": "e02c3fbc", "metadata": {}, "source": [ "The next step is to submit those jobs and wait until all calculations finished properly. Once the calculations are finished, the obox outputs must be post-processed to compute the frequency and oscillator strengths and compute the spectra using these informations. Lets do that using the qbox output ir_spectra.r. We also need the output when we performed the normal mode displacement, i.e., the output when we ran ionic_mover class in exercise 1.2.1. We have copied it into the file enmfd.log.\n", "\n", "Lets begin post-process all the information and compute the spectra." ] }, { "cell_type": "code", "execution_count": 1, "id": "e83a41a8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \n", " ███████████ \n", " ░░███░░░░░███ \n", " ░███ ░███ █████ ████ \n", " ░██████████ ░░███ ░███ \n", " ░███░░░░░░ ░███ ░███ \n", " ░███ ░███ ░███ \n", " █████ ░░███████ \n", " ░░░░░ ░░░░░███ \n", " ███ ░███ \n", " ░░██████ \n", " ░░░░░░ \n", " ██████████ ███████████ ███████████ ██████████ \n", "░░███░░░░░█░░███░░░░░███░░███░░░░░░█░░███░░░░███ \n", " ░███ █ ░ ░███ ░███ ░███ █ ░ ░███ ░░███\n", " ░██████ ░██████████ ░███████ ░███ ░███\n", " ░███░░█ ░███░░░░░░ ░███░░░█ ░███ ░███\n", " ░███ ░ █ ░███ ░███ ░ ░███ ███ \n", " ██████████ █████ █████ ██████████ \n", "░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░░ \n", "PyEPFD version : 1.1\n", "Author : Arpan Kundu\n", "Author Email : arpan.kundu@gmail.com\n", "Today : 2025-01-02 18:30:13.015826\n", "*************************************************\n", " CITATIONS \n", "=================================================\n", "Please cite the following 3 references: \n", "(1) A. Kundu et al, Phys. Rev. Mater (2021), 5, \n", "L070801, \n", "(2) A. Kundu and G Galli, \n", "J. Chem. Theory. Comput. (2023), 19, 4011\n", "(3) https://pyepfd.readthedocs.io/en/latest/\n", "*************************************************\n", "Time spent on qbox class: 0.020743608474731445 s.\n", "\u001b[92m# Normal Mode Frequency and Dipole Oscillator Strength(IR) \n", "#-------------------------------------------------------------------------------------------------\n", "# Mode No Freq(cm-1) Oscillator Strength (Central/Forward/Backword) |\n", "#------------------------------------------------------------------------------------------------\u001b[00m\n", " 1 nan 3.0393204e-13 3.0820056e-13 3.0978919e-13\n", " 2 79.30 4.747106e-13 1.5042384e-12 1.5545001e-12\n", " 3 106.59 3.2775993e-17 3.8025423e-15 2.8191894e-15\n", " 4 nan 4.1862717e-14 7.3225319e-14 1.9810694e-14\n", " 5 nan 8.2335805e-14 1.4745235e-13 1.2574617e-13\n", " 6 676.09 1.6850272e-05 1.6848689e-05 1.6851855e-05\n", " 7 676.09 1.6850181e-05 1.6850613e-05 1.6849748e-05\n", " 8 1345.45 2.265674e-13 1.4833742e-12 1.5599035e-12\n", " 9 2361.85 0.00038054978 0.00038054979 0.00038054977\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/arpan/.local/lib/python3.8/site-packages/pyepfd/vibrational_spectra.py:265: RuntimeWarning: invalid value encountered in sqrt\n", " omega = np.sqrt(hessian) * ha2unit[freq_unit]\n" ] } ], "source": [ "from pyepfd.vibrational_spectra import *\n", "# Initiating the qbox_ir class\n", "co2 = qbox_ir(file_path = 'enmfd.log',\n", " qb_output_path = './',\n", " qb_prefix = 'ir_spectra',\n", " asr = 'lin',\n", " save_path = 'co2-freq-osc-str.npz')\n", "# calculating the frequency and oscillator strength\n", "# using normal mode finite-displacement\n", "co2.calc_freq_osc_str()\n", "# Printing the frequency and oscillator strengths\n", "co2.print_freq_osc_str()\n", "# Saving the freq, and oscillator strengths at\n", "# co2-freq-osc-str.npz\n", "co2.save()" ] }, { "cell_type": "markdown", "id": "71b6c860", "metadata": {}, "source": [ "The print method would print all the modes that we have computed. As usual, the first 5 modes are not meaningful as they represent rigid body rotation and translations of the CO2 molecule. The save command would save only the last 4 modes as we have used asr = 'lin'. Lets have a look at the data contained in co2-freq-osc-str.npz. " ] }, { "cell_type": "code", "execution_count": 2, "id": "279d88ce", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 676.08784227 676.08784227 1345.44790558 2361.84521762]\n", "[1.68502722e-05 1.68501808e-05 2.26567404e-13 3.80549776e-04]\n" ] } ], "source": [ "import numpy as np\n", "freq_osc_str = np.load('co2-freq-osc-str.npz')\n", "print(freq_osc_str['omega'])\n", "print(freq_osc_str['osc_str'])" ] }, { "cell_type": "markdown", "id": "09dcbc18", "metadata": {}, "source": [ "We know that degenerate bending modes (676.0 cm-1) and asymetric stretching modes (2361.8 cm-1) are IR active as they involves change of total dipole moment, while the symmetric stretching mode (1345.4 cm-1) is not IR active. Indeed we see that the symmetric stretching mode has very low intensity. Lets use this data to compute a spectra. \n", "\n", "The co2 class has these saved data, therefore we can directly use a method named calc_spectra() available within the co2 class. Lets do it and plot the spectra using matplotlib. We will do it using Lorentzinan broadening using three different broadening parameter of 100 cm-1.Note, if the co2-freq-osc-str.npz file is already present, then those data can be read and compute the spectra using the add_broadening() method, see the documentation for the vibrational_spectra module for more informations. " ] }, { "cell_type": "code", "execution_count": 3, "id": "fab2ed10", "metadata": {}, "outputs": [ { "data": { "image/png": "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Fu8fyQwckRf0wl9FRUVtjsuyDJeLP0QiIuqa+jC1cKRavc9Xa3OG9Hnp9IIKHIMGDcKqVavaHP/oo48wfPjwLhdFRESxzT9oNMRjOFLjvS0cNQwcERdUW9X8+fNx3XXX4dChQ5BlGYsXL8bOnTvx9ttv47PPPgt1jUREFGPCNUslxdfCUWNja3ykBdXCMWPGDHz66adYvnw54uPjMX/+fOzYsQOffvopLrzwwlDXSEREMUYJHEoXSKik+MZwsEsl8oIejXP++edj2bJloayFiIgIAFDd5A0EqVbTac7snFS2cKgmqBaOPn364Pjx422O19bWok+fPl0uioiIYpfd6UGz27uitTLmIlRSrEoLBwNHpAUVOPbt29fufinNzc04dOhQl4siIqLYpQzoNOolxIdoa3pFanzLLBUhREifm06tU10q//73v/23//Of/yA5Odl/3+PxYMWKFejVq1fIiiMiotijdKekWE0h25peoXTRuGWBxmY3EkM8C4ZOrlOB47LLLgPg3RH2uuuuC3jMaDSiV69eePbZZ0NWHBERxR6luyMtxOM3ACDOqEecUQeHS0atzcXAEUGdChzKLrG9e/fGDz/8gIyMjLAURUREsUvpUkkJ8QwVRYrFhAqXAzU2J3qmWcPyPaitoGaplJWVhboOIiIiAC2BI9QzVBQpViMq6h0cOBphQU+LXbFiBVasWIHKykp/y4fif/7nf7pcGBERxaaaJt8aHCGeoaJQggxXG42soALHo48+isceewxnn302cnNzQz6oh4iIYldLC0d4ulRaZqqwhSOSggocr776Kt58801ce+21oa6HiIhiXPi7VNjCoYag1uFwOp0YPXp0qGshIiLyrwIavi4VtnCoIajAceONN+Ldd98NdS1ERET+fU7C1qXCFg5VBNWl4nA4sHDhQixfvhxDhgyB0Rj4j+K5554LSXFERBR7Wi/8FQ7JFrZwqCGowLF582YMGzYMALB169aAxziAlIiIusK/8FeYZ6lwx9jICipwrFy5MtR1EBERwemW0djsBhDOWSrewFHNwBFRQY3hICIiCgel1UEnAUlhWnY8I8EbOI43MnBEUqdaOC6//PIOnbd48eKgiiEiothW1dgMAEiLN0OnC08XfXqCGQBgc3pgc7phNQW9BiZ1QqeucuvdYYmIiEJNaXVQWiHCId7UsoHb8UYnrGkM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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "\n", "co2.calc_spectra(line_profile='Lorentzian', \n", " line_param = 100, step = 1,\n", " save_path = 'co2_ir.npz')\n", "plt.xlabel(\"Wavenumbers (cm$^{-1}$)\")\n", "plt.ylabel(\"Intensities (a.u)\")\n", "plt.yticks([]) # Showing no y-ticks as units are arbitrary\n", "plt.plot(co2.spectra[0],co2.spectra[1])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "785d15df", "metadata": {}, "source": [ "This would also create a co2_ir.npz, which could be later used to redraw the spectra as shown below.\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "c38487e6", "metadata": {}, "outputs": [ { "data": { "image/png": "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Fu8fyQwckRf0wl9FRUVtjsuyDJeLP0QiIuqa+jC1cKRavc9Xa3OG9Hnp9IIKHIMGDcKqVavaHP/oo48wfPjwLhdFRESxzT9oNMRjOFLjvS0cNQwcERdUW9X8+fNx3XXX4dChQ5BlGYsXL8bOnTvx9ttv47PPPgt1jUREFGPCNUslxdfCUWNja3ykBdXCMWPGDHz66adYvnw54uPjMX/+fOzYsQOffvopLrzwwlDXSEREMUYJHEoXSKik+MZwsEsl8oIejXP++edj2bJloayFiIgIAFDd5A0EqVbTac7snFS2cKgmqBaOPn364Pjx422O19bWok+fPl0uioiIYpfd6UGz27uitTLmIlRSrEoLBwNHpAUVOPbt29fufinNzc04dOhQl4siIqLYpQzoNOolxIdoa3pFanzLLBUhREifm06tU10q//73v/23//Of/yA5Odl/3+PxYMWKFejVq1fIiiMiotijdKekWE0h25peoXTRuGWBxmY3EkM8C4ZOrlOB47LLLgPg3RH2uuuuC3jMaDSiV69eePbZZ0NWHBERxR6luyMtxOM3ACDOqEecUQeHS0atzcXAEUGdChzKLrG9e/fGDz/8gIyMjLAURUREsUvpUkkJ8QwVRYrFhAqXAzU2J3qmWcPyPaitoGaplJWVhboOIiIiAC2BI9QzVBQpViMq6h0cOBphQU+LXbFiBVasWIHKykp/y4fif/7nf7pcGBERxaaaJt8aHCGeoaJQggxXG42soALHo48+isceewxnn302cnNzQz6oh4iIYldLC0d4ulRaZqqwhSOSggocr776Kt58801ce+21oa6HiIhiXPi7VNjCoYag1uFwOp0YPXp0qGshIiLyrwIavi4VtnCoIajAceONN+Ldd98NdS1ERET+fU7C1qXCFg5VBNWl4nA4sHDhQixfvhxDhgyB0Rj4j+K5554LSXFERBR7Wi/8FQ7JFrZwqCGowLF582YMGzYMALB169aAxziAlIiIusK/8FeYZ6lwx9jICipwrFy5MtR1EBERwemW0djsBhDOWSrewFHNwBFRQY3hICIiCgel1UEnAUlhWnY8I8EbOI43MnBEUqdaOC6//PIOnbd48eKgiiEiothW1dgMAEiLN0OnC08XfXqCGQBgc3pgc7phNQW9BiZ1QqeucuvdYYmIiEJNaXVQWiHCId7UsoHb8UYnrGkM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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "co2_spectra = np.load(\"co2_ir.npz\")['spectra']\n", "plt.xlabel(\"Wavenumbers (cm$^{-1}$)\")\n", "plt.ylabel(\"Intensities (a.u)\")\n", "plt.yticks([]) # Showing no y-ticks as units are arbitrary\n", "plt.plot(co2_spectra[0],co2_spectra[1])\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.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }