GoodVibes

Here is the GoodVibes GitHub Page

Here is the Article

Installation

Version 3.2 is most up to date. Install with:

pip install goodvibes

or

pip install --upgrade goodvibes

or

conda install -c conda-forge goodvibes

(you may also need to install matplotlib)

Computing Thermochemistry for QM Output Files

You can run this code using any output file from QM calculations.

python -m goodvibes H2O.log

You should get the following output:


o  Requested:

   Temperature = 298.15 Kelvin   Pressure = 1 atm
   All energetic values below shown in Hartree unless otherwise specified.

   Using vibrational scale factor 1.0 for B97D/6-31G(d) level of theory

   Entropic quasi-harmonic treatment: frequency cut-off value of 100.0 wavenumbers will be applied.
   QS = Grimme: Using a mixture of RRHO and Free-rotor vibrational entropies.
   REF: Grimme, S. Chem. Eur. J. 2012, 18, 9955-9964


   Structure                                           E        ZPE             H        T.S     T.qh-S          G(T)       qh-G(T)
   ********************************************************************************************************************************
o  H2O                                        -76.368128   0.020772    -76.343577   0.021458   0.021458    -76.365035    -76.365035
   ********************************************************************************************************************************

Grabs Energy, frequencies, and computes thermochemical values Enthalpy (H), Entropy (S), Gibbs Free Energy (G). Also computes quasi-harmonic corrected Entropy (qh-S) and Free Energy (qh-G).

Compute G as G = H - (T * S)

Temperature Corrections

The default temperature in GoodVibes is 298.15 K (25C)

What if the reaction was run at 100C?

python -m goodvibes benzene.log -t 373.15

This will give the following output:


o  Requested: -t 373.15

   Temperature = 373.15 Kelvin   Pressure = 1 atm
   All energetic values below shown in Hartree unless otherwise specified.

o  Found vibrational scaling factor of 0.970 for M062X/def2TZVPP level of theory
   Alecu, I. M.; Zheng, J.; Zhao, Y.; Truhlar, D. G. J. Chem. Theory Comput. 2010, 6, 2872-2887.

   Entropic quasi-harmonic treatment: frequency cut-off value of 100.0 wavenumbers will be applied.
   QS = Grimme: Using a mixture of RRHO and Free-rotor vibrational entropies.
   REF: Grimme, S. Chem. Eur. J. 2012, 18, 9955-9964


   Structure                                           E        ZPE             H        T.S     T.qh-S          G(T)       qh-G(T)
   ********************************************************************************************************************************
o  benzene                                   -232.227201   0.098336   -232.120773   0.044154   0.044157   -232.164927   -232.164930
   ********************************************************************************************************************************


GoodVibes can also compute temperature ranges.

python -m goodvibes benzene.log H2O.log --ti 250,400,50

This will give the output:


o  Requested: --ti 250,400,50

   Pressure = 1 atm
   All energetic values below shown in Hartree unless otherwise specified.
x  Caution! Different levels of theory found:
        -M062X/def2TZVPP: benzene.log
        -B97D/6-31G(d): H2O.log

   Using vibrational scale factor 1.0: differing levels of theory detected.

   Entropic quasi-harmonic treatment: frequency cut-off value of 100.0 wavenumbers will be applied.
   QS = Grimme: Using a mixture of RRHO and Free-rotor vibrational entropies.
   REF: Grimme, S. Chem. Eur. J. 2012, 18, 9955-9964


   Variable-Temperature analysis of the enthalpy, entropy and the entropy at a constant pressure between
   T init:  250.0,  T final:  400.0,  T interval: 50.0

   Structure                                      Temp/K                        H        T.S     T.qh-S          G(T)       qh-G(T)
   ********************************************************************************************************************************
o  benzene                                         250.0              -232.121841   0.026251   0.026253   -232.148091   -232.148094
o  benzene                                         300.0              -232.120465   0.033001   0.033004   -232.153466   -232.153469
o  benzene                                         350.0              -232.118802   0.040292   0.040294   -232.159094   -232.159097
o  benzene                                         400.0              -232.116857   0.048122   0.048125   -232.164979   -232.164982
   ********************************************************************************************************************************

   ********************************************************************************************************************************
o  H2O                                             250.0               -76.344188   0.017433   0.017433    -76.361622    -76.361622
o  H2O                                             300.0               -76.343553   0.021615   0.021615    -76.365168    -76.365168
o  H2O                                             350.0               -76.342915   0.025906   0.025906    -76.368821    -76.368821
o  H2O                                             400.0               -76.342271   0.030294   0.030294    -76.372565    -76.372565
   ********************************************************************************************************************************

This computes the thermochemical values for both output files at temperatures ranging from 250K to 400K every 50K.

Quasi-Harmonic Corrections

QH-correction

The quasi-harmonic correction has a greater effect when molecules have a greater number of low-frequency vibrational modes. For example:

  • Methylaniline: 2 vibrational modes below 200 cm-1

  • Int-III: 23 vibrational modes below 200 cm-1

python -m goodvibes methylaniline.log Int-III.log

This gives the output:


o  Requested:

   Temperature = 298.15 Kelvin   Pressure = 1 atm
   All energetic values below shown in Hartree unless otherwise specified.
x  Caution! Different levels of theory found:
        -B97D/6-31G(d): methylaniline.log
        -wB97XD/Gen: Int-III.log

   Using vibrational scale factor 1.0: differing levels of theory detected.

   Caution! Implicit solvation (SMD/CPCM) detected. Enthalpic and entropic terms cannot be safely separated. Use them at your own risk!

   Entropic quasi-harmonic treatment: frequency cut-off value of 100.0 wavenumbers will be applied.
   QS = Grimme: Using a mixture of RRHO and Free-rotor vibrational entropies.
   REF: Grimme, S. Chem. Eur. J. 2012, 18, 9955-9964


   Structure                                           E        ZPE             H        T.S     T.qh-S          G(T)       qh-G(T)
   ********************************************************************************************************************************
o  methylaniline                             -326.664901   0.142118   -326.514489   0.039668   0.039535   -326.554157   -326.554024
o  Int-III                                  -8986.063880   0.446831  -8985.583025   0.106167   0.095367  -8985.689192  -8985.678393
   ********************************************************************************************************************************


Single Point Calculations

Useful for saving on computational resources:

We can optimize molecules at a lower level of theory to still obtain an accurate geometry, but do a single point energy calculation (SPC) at a higher level of theory to obtain more accurate energy values.

With the --spc argument, we can specify how the SPC file names are formatted.

File Naming Scheme

Calculation Type

Filename

opt/freq

file.log

SPC

file_SPC.log

For example: ethane.log and ethane_TZ.out

python -m goodvibes ethane.log --spc TZ

You will get the following output:


o  Requested: --spc TZ

   Temperature = 298.15 Kelvin   Pressure = 1 atm
   All energetic values below shown in Hartree unless otherwise specified.

o  Found vibrational scaling factor of 0.977 for B3LYP/6-31G(d) level of theory
   Alecu, I. M.; Zheng, J.; Zhao, Y.; Truhlar, D. G. J. Chem. Theory Comput. 2010, 6, 2872-2887.

   Entropic quasi-harmonic treatment: frequency cut-off value of 100.0 wavenumbers will be applied.
   QS = Grimme: Using a mixture of RRHO and Free-rotor vibrational entropies.
   REF: Grimme, S. Chem. Eur. J. 2012, 18, 9955-9964

   Combining final single point energy with thermal corrections.

   Structure                                       E_SPC             E        ZPE         H_SPC        T.S     T.qh-S      G(T)_SPC   qh-G(T)_SPC
   **********************************************************************************************************************************************
o  ethane                                     -79.858399    -79.830421   0.073508    -79.780448   0.027569   0.027570    -79.808017    -79.808019
   **********************************************************************************************************************************************

Potential Energy Surface Calculations:

GoodVibes can compute relative energy/thermochemistry values to describe a reaction pathway with a potential energy surface

To do this, we need to write a yaml file with 3 sections:

  • PES
    • Defines reaction pathway

    • Can add multiple pathways

  • SPECIES
    • Relates files to each species in the reaction pathway

  • FORMAT
    • Optional additional formatting

--- # PES
    Ph: [Ph-Int1 , Ph-TS1 , Ph-Int2 , Ph-TS2 , Ph-Int3 ]
    Py: [Py-Int1 , Py-TS1 , Py-Int2 , Py-TS2 , Py-Int3 ]

--- # SPECIES
    Ph-Int1     : Int_I_Ph*
    Ph-TS1      : TS_1_Ph*
    Ph-Int2     : Int_II_Ph*
    Ph-TS2      : TS_II_Ph*
    Ph-Int3     : Int_III_Ph*
    Py-Int1     : Int_I_Py*
    Py-TS1      : TS_1_Py*
    Py-Int2     : Int_II_Py*
    Py-TS2      : TS_II_Py*
    Py-Int3     : Int_III_Py*
    
--- # FORMAT
    dec :  2 
    legend : False
    color : black,#26a6a4
    pointlabel : False 
    gridlines: True
    show_conformers: True
    show_gconf: False
    title: Potential Energy Surface


Putting it All Together

  • Temperature adjustments

  • Single Point Calculations

  • Potential Energy Surface Calculations

We can use these 24 intermediate and transition state calculations + corresponding SPC files + yaml to define a reaction pathway

python -m goodvibes *.log -t 353.15 --spc DLPNO --imag --invertifreq -5 --pes PhPy.yaml

You will get the following as output:


o  Requested: -t 353.15 --spc DLPNO --imag --invertifreq -5 --pes PhPy.yaml

   Temperature = 353.15 Kelvin   Pressure = 1 atm
   All energetic values below shown in Hartree unless otherwise specified.

   Using vibrational scale factor 1.0 for wB97XD/6-31+G(d) level of theory

   Caution! Implicit solvation (SMD/CPCM) detected. Enthalpic and entropic terms cannot be safely separated. Use them at your own risk!

   Entropic quasi-harmonic treatment: frequency cut-off value of 100.0 wavenumbers will be applied.
   QS = Grimme: Using a mixture of RRHO and Free-rotor vibrational entropies.
   REF: Grimme, S. Chem. Eur. J. 2012, 18, 9955-9964

   Combining final single point energy with thermal corrections.

   The following frequency was made positive and used in calculations: -2.8981 from Int_II_Py_b.log

   Structure                                       E_SPC             E        ZPE         H_SPC        T.S     T.qh-S      G(T)_SPC   qh-G(T)_SPC  im freq
   *******************************************************************************************************************************************************
o  Int_III_Ph_a                             -1414.272460  -1415.767800   0.418564  -1413.819815   0.105944   0.098578  -1413.925760  -1413.918394
o  Int_III_Py_a                             -1414.269254  -1415.765251   0.418693  -1413.816478   0.106976   0.099078  -1413.923454  -1413.915556
o  Int_III_Py_b                             -1414.270115  -1415.766283   0.417841  -1413.817909   0.107635   0.099479  -1413.925544  -1413.917389
o  Int_II_Ph_a                              -1414.238513  -1415.730395   0.418574  -1413.786351   0.102570   0.096587  -1413.888921  -1413.882937
o  Int_II_Py_a                              -1414.248486  -1415.739754   0.418595  -1413.796289   0.103963   0.097294  -1413.900253  -1413.893584
o  Int_II_Py_b                              -1414.251141  -1415.742543   0.418183  -1413.799010   0.107432   0.098914  -1413.906442  -1413.897924
o  Int_II_Py_c                              -1414.250426  -1415.740873   0.418274  -1413.798225   0.105693   0.098329  -1413.903918  -1413.896555
o  Int_I_Ph_a                               -1414.219198  -1415.708399   0.419425  -1413.766680   0.100260   0.095322  -1413.866940  -1413.862002
o  Int_I_Ph_b                               -1414.218356  -1415.706755   0.419581  -1413.765641   0.100615   0.095531  -1413.866255  -1413.861172
o  Int_I_Ph_c                               -1414.203378  -1415.689310   0.418363  -1413.751447   0.103593   0.097115  -1413.855040  -1413.848561
o  Int_I_Py_a                               -1414.223227  -1415.715045   0.419114  -1413.770810   0.101829   0.096167  -1413.872638  -1413.866977
o  Int_I_Py_b                               -1414.223209  -1415.711031   0.419045  -1413.770901   0.100816   0.095725  -1413.871717  -1413.866626
o  Int_I_Py_c                               -1414.211964  -1415.713255   0.418916  -1413.759687   0.101792   0.096060  -1413.861479  -1413.855747
o  Int_I_Py_d                               -1414.213688  -1415.698106   0.418680  -1413.761526   0.102616   0.096491  -1413.864142  -1413.858017
o  Int_I_Py_e                               -1414.212305  -1415.697383   0.418818  -1413.759995   0.103174   0.096642  -1413.863169  -1413.856637
o  Int_I_Py_f                               -1414.220429  -1415.706212   0.419258  -1413.767919   0.101285   0.095753  -1413.869204  -1413.863672
o  TS_1_Ph_a                                -1414.181410  -1415.670386   0.417010  -1413.731342   0.100555   0.095542  -1413.831896  -1413.826883  -523.12
o  TS_1_Ph_b                                -1414.173224  -1415.661334   0.416101  -1413.723679   0.102811   0.096739  -1413.826490  -1413.820418  -456.04
o  TS_1_Py_a                                -1414.194715  -1415.682140   0.417530  -1413.744164   0.100446   0.095392  -1413.844611  -1413.839556  -397.29
o  TS_1_Py_b                                -1414.199208  -1415.686916   0.417186  -1413.748822   0.101458   0.096001  -1413.850280  -1413.844823  -437.02
o  TS_1_Py_c                                -1414.192702  -1415.681170   0.416331  -1413.742779   0.103499   0.097006  -1413.846278  -1413.839786  -319.63
o  TS_II_Ph_a                               -1414.231879  -1415.727262   0.417335  -1413.781405   0.101901   0.095931  -1413.883306  -1413.877336  -241.51
o  TS_II_Py_a                               -1414.238504  -1415.734212   0.417525  -1413.787768   0.102732   0.096376  -1413.890500  -1413.884144  -200.84
o  TS_II_Py_b                               -1414.235758  -1415.731725   0.418091  -1413.784725   0.101249   0.095630  -1413.885974  -1413.880355  -239.51
   *******************************************************************************************************************************************************

   Gconf correction requested to be applied to below relative values using quasi-harmonic Boltzmann factors

   RXN: Ph (kcal/mol)                             DE_SPC            DE       DZPE        DH_SPC       T.DS    T.qh-DS      DG(T)_SPC   qh-DG(T)_SPC
   *******************************************************************************************************************************************************
o  Ph-Int1                                          0.00          0.00       0.00          0.00       0.00       0.00          0.00          0.00
o  Ph-TS1                                          23.56         23.54      -1.55         21.98      -0.31      -0.33         22.29         22.31
o  Ph-Int2                                        -12.29        -14.14      -0.57        -12.55       0.94       0.31        -13.49        -12.86
o  Ph-TS2                                          -8.13        -12.17      -1.34         -9.45       0.52      -0.10         -9.97         -9.35
o  Ph-Int3                                        -33.59        -37.61      -0.57        -33.55       3.05       1.56        -36.61        -35.11
   *******************************************************************************************************************************************************

   RXN: Py (kcal/mol)                             DE_SPC            DE       DZPE        DH_SPC       T.DS    T.qh-DS      DG(T)_SPC   qh-DG(T)_SPC
   *******************************************************************************************************************************************************
o  Py-Int1                                          0.00          0.00       0.00          0.00       0.00       0.00          0.00          0.00
o  Py-TS1                                          15.08         16.52      -1.20         13.83      -0.43      -0.46         14.27         14.29
o  Py-Int2                                        -17.45        -18.19      -0.55        -17.59       3.38       1.62        -20.97        -19.21
o  Py-TS2                                          -9.59        -13.17      -0.97        -10.61       0.35      -0.22        -10.96        -10.39
o  Py-Int3                                        -29.39        -33.24      -0.70        -29.44       3.60       1.91        -33.04        -31.35
   *******************************************************************************************************************************************************

Graphing these potential energy surfaces is simple once the yaml file is created

python -m goodvibes *.log -t 353.15 --spc DLPNO --imag --invertifreq -5 --pes PhPy.yaml --graph PhPy.yaml

PhPy-PES

You can add more or less details by changing the FORMAT section of the yaml file. This is where you might tell GoodVibes you do not want to plot the different conformations of each structure, only the energies.

Check out other packages by the Paton lab @ our GitHub!