Calculation of NMR Spectra
For the calculation of NMR spectra with CENSO, the ANMR program can be used.
The spectra can be plotted with the python script nmrplot.
ANMR can be obtained from the latest release page of ENSO.
Important
To calculate the weighted NMR parameters with CENSO, it is necessary to create your
initial CREST ensemble using the -nmr flag. This will generate the file anmr_nucinfo
needed to recognize chemical equivalencies.
ANMR
Important
If you encounter a segmentation fault on startup:
ANMR still relies on autmatically created arrays on the stack. For this reason you have to run ulimit -s unlimited to prevent stackoverflows.
ANMR requires the files:
coord, file containing the molecule geometry in the TURBOMOLE format (e.g. the one used for starting the CREST run)anmr_nucinfo, written by CREST using the-nmrflaginformation on which nuclei can interchange in your molecule (e.g. the hydrogen atoms in a methlygroup)
= information on chemical and magnetical equivalent atoms
anmr_rotamer, written by CREST using the-nmrflaginformation on the rotamers detected by
crest
anmr_enso, written by CENSOinformation on the contributing conformers, the Boltzmann weight and all contributions to free energy
.anmrrc, needs to be configured by the useranmrsearches for the.anmrrcfile first in the folder of execution and if not found in the home directory of the userThe file contains the reference-shieldings of e.g TMS to convert the calculated shielding to shifts
the folders with the property calculations of the conformers
e.g.
CONF1/NMR
Since the directory structure changed from CENSO 1.3 to CENSO 2.0, one can use the c2anmr script
to create a folder called anmr in the current working directory, such that
ANMR can be run in this folder after configuring the .anmrrc.
Example .anmrrc file:
7 8 XH acid atoms
ENSO qm= TM mf= 300 lw= 1.0 J= on S= on
TMS[chcl3] pbe0[COSMO]/def2-TZVP//pbeh-3c[DCOSMO-RS]/def2-mSVP
1 31.786 0.0 1
6 189.674 0.0 0
9 182.57 0.0 0
15 291.9 0.0 0
The first line in .anmrrc informs ANMR to ignore all protons bound to nitrogen
(N=7) and oxygen (O=8). If you want to calculate protons bound to oxygen or nitrogen,
simply remove the corresponding number, but leave the rest of the line intact!
The next line starting with ENSO informs ANMR that the property calculation
was performed by TM = TURBOMOLE (or ORCA = ORCA). The mf= 300 informs ANMR
that the magnetic frequency of the NMR spectrometer is set to 300 MHz. The lw
(linewidth for plotting) is 1.0 and J (couplings) and S (shieldings) are to be evaluated.
If S= off then ANMR will terminate after calculating and averaging the shifts of the
molecule under consideration. The next line explains how the reference shieldings are
calculated: in this case the reference molecule is tetramethylsilane in chloroform and the
shielding is calculated with PBE0/def2-TZVP + COSMO on PBEh-3c + DCOSMO-RS geometries.
The following lines contain the data on [atomic number] [calculated shielding valule of the reference molecule] [experimental shift] [active or not].
The lines show the reference shieldings for hydrogen (1), carbon (6) fluor (9) and phosphorus (15). The third number within the last four lines is 0.0 and can be used to adjust the shift of the reference (e.g. to the experimental shift). The last number in the last four lines can either be 1 or 0 and this switches the ‘element on or off’ for the spectrum calculation.
Example anmr_enso file:
ONOFF NMR CONF BW Energy Gsolv RRHO
1 1 1 0.10042 -354.38939 -0.00899 0.22109
1 2 2 0.32452 -354.39034 -0.00899 0.22093
1 3 3 0.57506 -354.39287 -0.00902 0.22295
The file anmr_enso is written by the CENSO program and contains information on
the conformers, which folder they are in, the Boltzmann weight, energy, solvation
and thermostatistical contribution to free energy. The first number in the three last
lines indicates to ANMR if the conformer is to be considered (1) or not (0).
If one conformer is not considered (or more) the ANMR program internally recalculates
the Boltzmann weights based on the free energies from the anmr_enso file.
Usage of anmr:
$ anmr --help
# explanation of all possible command line arguments
# shown in next tab
+--------------------------------------+
| A N M R |
| S. Grimme |
| Universitaet Bonn, MCTC |
| 1989-2019 |
| version 3.5.1 |
| Sat Feb 9 06:41:57 CET 2019 |
+--------------------------------------+
Based on a TurboPascal program written
in 1989 which was translated to F90 in
2005 and re-activated in 2017.
Please cite work employing this code as:
ANMR Ver. 3.5: An automatic, QC based
coupled NMR spectra simulation program.
S. Grimme, Universitaet Bonn, 2019
S. Grimme, C. Bannwarth, S. Dohm, A. Hansen
J. Pisarek, P. Pracht, J. Seibert, F. Neese
Angew. Chem. Int. Ed. 2017, 56, 14763-14769.
DOI:10.1002/anie.201708266
=============================
# OMP threads = 4
=============================
usage :
anmr [options]
General options:
-tm : use TURBOMOLE J/sigma
-orca : use ORCA J/sigma
-adf : use ADF J/sigma
-gauss : use GAUSSIAN J/sigma
-plain : use plain input for J/sigma
-chk : perform input check
-acid : remove acidic XH protons
-nofrag : no fragmentation
-mfrag : fragmentation type mol
-afrag : fragmentation type at
-mss : maxsspin
-fragss : fragmentation scheme
-mf : magnetic frequency of exp.
-lw : line width of generated spectrum
-ascal : chemical shift scaling a
-bscal : chemical shift scaling b
-cscal : spin-spin coupling scal factor
-nc : number of conformers
-poff : plot offset
-r : range min max [-r <real1> <real2]
-pthr : min population for which NMR data are read
-nl : points for lorentzian for plotting
-onlyshifts : stop after shift averaging
-h : print help
Note
The usage of the -plain option is recommended so that the coupling constants are read from the CONFXX/NMR/nmrprop.dat
file written by CENSO instead of the output files of the used QM program package, whose formatting
often changes with new versions.
First of all: the spin problem is of \(2^{N}\) complexity! Depending on the size of the maximalspinsystem (mss) the program might use a lot of RAM! If this is the case, run anmr with a decreased spinsystem size:
$ anmr -mss 12 -plain > anmr.out 2> anmr.error &
ANMR will then write a file called anmr.dat (which is quiet large). The file
contains the information ppm vs intesity. This file can then be plotted with any
plotting tool or our nmrplot.py.
To reduce the large size of the file you can remove entries which are close to zero with either this awk or python code:
head -1 anmr.dat > newanmr.dat
awk '($2 > 0.001){print $0}' anmr.dat >> newanmr.dat
tail -1 anmr.dat >> newanmr.dat
import numpy as np
data = np.genfromtxt('anmr.dat')
threshold = 0.001
data2 = data[np.logical_not(data[:,1] < threshold)]
data2 = np.insert(data2, 0, (data[0][0], threshold), axis=0)
data2 = np.insert(data2, len(data2), (data[-1][0], threshold), axis=0)
np.savetxt('newanmr.dat', data2, fmt='%2.5e' )
Spectra Plotting
The NMR spectrum can be plotted from the file anmr.dat. It contains the
information ppm vs intensity and can be plotted with any plotting tool
(e.g GNUPLOT …). The provided nmrplot plotting tool uses matplotlib` for plotting.
Reference shielding constants
In previous versions of CENSO, reference shielding constants were precalculated for user convenience.
The current version of CENSO does not support this feature, instead the reference shieldings should
be calculated by the user and then put into .anmrrc. To do so, the input geometries for the reference
molecules are provided below. You should use the same functional/basis set/solvation combination as used
for the CENSO run.
Input structures for the respective reference molecules:
$coord
2.05833045453195 -2.05833045453195 2.05833045453195 c
3.27901073396930 -3.27901073396930 0.93023223253204 h
3.27901073396930 -0.93023223253204 3.27901073396930 h
0.93023223253204 -3.27901073396930 3.27901073396930 h
-0.00000000000000 0.00000000000000 0.00000000000000 si
-2.05833045453195 2.05833045453195 2.05833045453195 c
-3.27901073396930 3.27901073396930 0.93023223253204 h
-0.93023223253204 3.27901073396930 3.27901073396930 h
-3.27901073396930 0.93023223253204 3.27901073396930 h
2.05833045453195 2.05833045453195 -2.05833045453195 c
0.93023223253204 3.27901073396930 -3.27901073396930 h
3.27901073396930 0.93023223253204 -3.27901073396930 h
3.27901073396930 3.27901073396930 -0.93023223253204 h
-2.05833045453195 -2.05833045453195 -2.05833045453195 c
-3.27901073396930 -3.27901073396930 -0.93023223253204 h
-3.27901073396930 -0.93023223253204 -3.27901073396930 h
-0.93023223253204 -3.27901073396930 -3.27901073396930 h
$end
$coord
0.00000000000000 0.00000000000000 1.08780842165939 p
1.12108786201329 1.94178113675579 -0.36261095596909 h
1.12108786201329 -1.94178113675579 -0.36261095596909 h
-2.24217572402658 0.00000000000000 -0.36261095596909 h
$end
$coord
2.10707881159693 -2.37905657209703 -0.95048934768032 c
-0.00002761513490 -0.00001720463363 0.42981024146152 p
0.00022116674358 -0.00003978704989 3.20441724940919 o
-3.11402725504898 -0.63518697865997 -0.95026063129186 c
-4.41578089847492 0.80223353974588 -0.26675109605744 h
-3.74806612133726 -2.46831651344230 -0.26795802048584 h
-3.07053848205114 -0.62555829073221 -3.00039235368914 h
1.00685206250598 3.01430306976026 -0.95039040993479 c
2.90134987179607 3.42432987586201 -0.26440712265899 h
-0.26551500181645 4.47957166601373 -0.27057128439357 h
0.99633316768277 2.97084963842055 -3.00047015163533 h
4.01209383139734 -2.01044112204817 -0.27010522766248 h
1.51433033394466 -4.22477273833643 -0.26505344320048 h
2.07522150306901 -2.34774660838157 -3.00060121737073 h
$end
$coord
0.00000038126763 -0.00000000884504 0.13419916242803 c
0.00000870296281 0.00000001369727 2.66116007348966 f
3.17274491422955 -0.00000000906271 -0.93176725824334 cl
-1.58637567202181 -2.74767202581384 -0.93179226251812 cl
-1.58637568491745 2.74767203002431 -0.93179224376158 cl
$end