Class NMRCalculation

    • Constructor Detail

      • NMRCalculation

        public NMRCalculation()
    • Method Detail

      • getQuadrupolarConstant

        public float getQuadrupolarConstant​(Tensor efg)
        Description copied from interface: JmolNMRInterface
        Quadrupolar constant, directly proportional to Vzz and dependent on the quadrupolar moment of the isotope considered
        Specified by:
        getQuadrupolarConstant in interface JmolNMRInterface
        Returns:
        float value
      • getInteractionTensorList

        private javajs.util.Lst<Tensor> getInteractionTensorList​(String type,
                                                                 javajs.util.BS bsA)
        Returns a list of tensors that are of the specified type and have both atomIndex1 and atomIndex2 in bsA. If there is just one atom specified, then the list is "all tensors involving this atom". We have to use atom sites, because interaction tensors are not duplicated.
        Parameters:
        type -
        bsA -
        Returns:
        list of Tensors
      • getAtomSiteBS

        private javajs.util.BS getAtomSiteBS​(javajs.util.BS bsA)
        Interaction tensors are not repeated for every possible combination. They are just for the base atom set. These are identified as a.atomIndex == models[b.modelIndex].firstAtomIndex + b.atomSite - 1
        Parameters:
        bsA -
        Returns:
        new bs in terms of atom sites
      • getUniqueTensorSet

        public javajs.util.BS getUniqueTensorSet​(javajs.util.BS bsAtoms)
        Description copied from interface: JmolNMRInterface
        An attempt to find unique atoms using tensors.
        Specified by:
        getUniqueTensorSet in interface JmolNMRInterface
        Returns:
        bitset of atoms
      • getIsotopeData

        private double getIsotopeData​(Atom a,
                                      int iType)
        Get magnetogyricRatio (gamma/10^7 rad s^-1 T^-1) and quadrupoleMoment (Q/10^-2 fm^2) for a given isotope or for the default isotope of an element.
        Parameters:
        a -
        iType -
        Returns:
        g or Q
      • getData

        private void getData()
        Creates the data set necessary for doing NMR calculations. Values are retrievable using getProperty "nmrInfo" "Xx"; each entry is float[+/-isotopeNumber, g, Q], where [0] < 0 for the default value.
      • getInfo

        public Object getInfo​(String what)
        Specified by:
        getInfo in interface JmolNMRInterface
        Parameters:
        what - "C" or "14C" or "all"
        Returns:
        list of double[isotopeNumber,g,Q] if no isotope number is given, or a single double[] if it does.
      • getChemicalShift

        public float getChemicalShift​(Atom atom)
        Description copied from interface: JmolNMRInterface
        If shift reference has not been set, it defaults to 0 and just displays the negative of magnetic shielding
        Specified by:
        getChemicalShift in interface JmolNMRInterface
        Returns:
        value
      • calcJKarplus

        public static double calcJKarplus​(double theta)
      • getInitialJValue

        private static double getInitialJValue​(int nNonH,
                                               double theta)
      • getIncrementalJValue

        private static double getIncrementalJValue​(int nNonH,
                                                   String element,
                                                   javajs.util.V3 sA_cA,
                                                   javajs.util.V3 v21,
                                                   javajs.util.V3 v23,
                                                   double theta,
                                                   int f)
      • getSubSign

        private static int getSubSign​(javajs.util.V3 sA_cA,
                                      javajs.util.V3 v21,
                                      javajs.util.V3 v23,
                                      int f)
        Look for sign of (v23 x v21).dot.(sA_cA). But note that for the second carbon, we must reverse this.
        Parameters:
        sA_cA - C to sub
        v21 - C to H
        v23 - C to other C
        f - 1 for carbon A; -1 for carbon B
        Returns:
        f or -f (+1 or -1)
      • calc3JHHOnly

        private static double calc3JHHOnly​(String[][] subElements,
                                           javajs.util.V3[][] subVectors,
                                           javajs.util.V3 v21,
                                           javajs.util.V3 v34,
                                           javajs.util.V3 v23,
                                           double theta,
                                           boolean is23Double)
        Parameters:
        subElements - int[2][3] with element names
        subVectors - V3[2][4] with vectors TO these substituents from their respective centers
        v21 - vector from cA to hA
        v34 - vector from cB to hB
        v23 - vector from cA to cB
        theta - dihedral angle hA-cA-cB-hB
        is23Double -
        Returns:
        estimated coupling constant
      • calc3JCH

        public static double calc3JCH​(String CHequation,
                                      double theta,
                                      boolean is23Double)
        Parameters:
        CHequation - 'was' Simple equation for 3JCH, from Wasylishen and Schaefer Can J Chem (1973) 51 961 used in Kozerski et al. J Chem Soc Perkin 2, (1997) 1811 'tva' Tvaroska and Taravel Adv. Carbohydrate Chem. Biochem. (1995) 51, 15-61 'ayd' Aydin and Guether Mag. Res. Chem. (1990) 28, 448-457
        theta - dihedral
        is23Double -
        Returns:
        3JCH prediction
      • calcNOE

        public static double[] calcNOE​(Viewer viewer,
                                       Atom atom1,
                                       Atom atom2)
      • calc2or3JorNOE

        public static double[] calc2or3JorNOE​(Viewer viewer,
                                              Atom[] atoms,
                                              String CHEquation,
                                              int mode)
        Calculate a 2-bond (geminal) or 3-bond (vicinal) coupling constant or an NOE;
        Parameters:
        viewer -
        atoms - required Atom[4]; can be just two atoms, then in atom[0] and atom[4]
        CHEquation - 'none' or 'was' or 'tva' or 'ayd'
        mode -
        Returns:
        [theta, jvalue, atom2.i, atom3.i] for 3JHH; [theta, jvalue, center.i] for 2JHH; [distance, noe] for NOE
      • getCalcType

        public static int getCalcType​(Atom[] atoms,
                                      String[] elementsToFill,
                                      int mode)
      • calc2JHH

        private static double[] calc2JHH​(Atom h1,
                                         Atom c,
                                         Atom h2)
      • calcNOEImpl

        private static double[] calcNOEImpl​(Viewer viewer,
                                            Atom atom1,
                                            Atom atom2)