Class NMRCalculator

All Implemented Interfaces:
Calculator<Molecule,NMRSpectrum>, TaggedCalculator, Licensable

@PublicApi public class NMRCalculator extends ProgressableCalculator<Molecule,NMRSpectrum>
Class for NMR spectrum calculation.

API example for 1H NMR:


    // input molecule for 1H NMR prediction
    Molecule mol = MolImporter.importMol("c1c(Cl)cccc1C=O");
    // instantiate builder
    NMRCalculator.Builder builder = new NMRCalculator.Builder();
    // settings
    builder.setFrequency(400.0);
    builder.setUnit(NMRSpectrum.Unit.Hz);
    builder.setNucleus(NMRSpectrum.Nucleus.H1);
    builder.setCoupled(true);
    // instantiate calculator
    NMRCalculator nmrCalc = builder.build();
    // spectrum calculation
    NMRSpectrum spectrum = nmrCalc.calculate(mol);
    // explicit hydrogen mode
    spectrum.setImplicitHydrogenMode(false);
    // multiplets of the NMR spectrum
    Multiplet[] multiplets = spectrum.getMultiplets();
    for (Multiplet m: multiplets) {
        System.out.println(m.getShift()+"\t"+m.getNetIntensity());
        for (int i=0; i < m.getNumberOfLines(); i++) {
              System.out.println(m.getPosition(i)+"\t"+m.getIntensity(i));
                }
            }
    // exporting the NMR spectrum into JCAMP-DX format
    String jcamp = NMRExporter.exportToJcampDX(spectrum);
    // exporting the NMR spectrum into Molecule with an NMR property
    String propertyName = "1H NMR shifts";
    Molecule molWithNMR = NMRExporter.exportToMol(spectrum, propertyName);
 
API example for 1H NMR:

    // input molecule for 13C NMR prediction
    Molecule mol = MolImporter.importMol("c1c(Cl)cccc1C=O");
    // instantiate NMRCalculator, the default settings are used
    NMRCalculator nmrCalc = new NMRCalculator.Builder().build();
    // spectrum calculation
    NMRSpectrum spectrum = nmrCalc.calculate(mol);
    // chemical shifts with atom indexes
    Shift[] shifts = spectrum.getShifts();
    for (Shift s: shifts) {
        System.out.println(s.getAtomIndex()+"\t"+s.getShift());
    }
    // sampling the NMR spectrum and integrated NMR spectrum functions
    double domainMin = spectrum.getDomainMin();
    double domainMax = spectrum.getDomainMax();
    double resolution = 0.1;
    for (double x = domainMin; x <= domainMax; x += resolution) {
        System.out.println(x+"\t"+spectrum.getValueAt(x)+"\t"+spectrum.getIntegralValueAt(x));
    }
    // or exporting the x and y values of the NMR spectrum function directly
    double[][] xy = NMRExporter.export(spectrum, domainMin, domainMax, resolution);
 
Since:
5.8