Beispiel #1
0
        public static HessInfo GetHessSsNMA
            (Universe univ
            , IList <Vector> coords
            , IEnumerable <Universe.Bond> bonds
            , IEnumerable <Universe.Angle> angles
            , IEnumerable <Universe.Improper> impropers
            , IEnumerable <Universe.Dihedral> dihedrals
            , IEnumerable <Universe.Nonbonded> nonbondeds
            , IEnumerable <Universe.Nonbonded14> nonbonded14s
            , double?maxAbsSpring = null
            , double?K_r          = 340.00
            , double?K_theta      = 45.00
            , double?K_ub         = 10.00
            , double?K_psi        = 70.00
            , double?K_chi        = 1.00
            , double?n            = 1
            , string k_vdW        = "Unif"
            //, bool setNanForEmptyAtom                         // =true
            )
        {
            bool   vdW       = true;                    // use vdW
            bool   elec      = false;                   // ignore electrostatic
            double D         = double.PositiveInfinity; // dielectric constant for Tinker is "1"
            bool   ignNegSpr = true;                    // ignore negative spring (do not add the spring into hessian matrix)

            //maxAbsSpring = Math.Pow(10, 9);
            HessMatrix hess = null;

            hess = STeM.GetHessBond(coords, bonds, K_r, hessian: hess);
            hess = STeM.GetHessAngle(coords, angles, true, K_theta, K_ub, hessian: hess);
            hess = STeM.GetHessImproper(coords, impropers, K_psi, hessian: hess, useArnaud96: true);
            hess = STeM.GetHessDihedral(coords, dihedrals, K_chi, n, hessian: hess, useAbsSpr: true, useArnaud96: true);
            hess = HessSpr.GetHessNonbond(coords, nonbondeds, D, k_vdW, hessian: hess, vdW: vdW, elec: elec, ignNegSpr: ignNegSpr, maxAbsSpring: maxAbsSpring);
            hess = HessSpr.GetHessNonbond(coords, nonbonded14s, D, k_vdW, hessian: hess, vdW: vdW, elec: elec, ignNegSpr: ignNegSpr, maxAbsSpring: maxAbsSpring);

            //if(setNanForEmptyAtom)
            Hess.UpdateHessNaN(hess, coords);

            return(new HessInfo
            {
                hess = hess,
                mass = univ.GetMasses(),
                atoms = univ.atoms.ToArray(),
                coords = coords.HCloneVectors().ToArray(),
                numZeroEigval = 6,
            });
        }
Beispiel #2
0
        public static HessInfo GetHessEAnm
            (Universe univ
            , IList <Vector> coords
            , IEnumerable <Tuple <int, int, double> > enumKij
            , bool b_bonds
            , bool b_angles
            , bool b_impropers
            , bool b_dihedrals
            )
        {
            //bool vdW  = true;       // use vdW
            //bool elec = false;      // ignore electrostatic
            //double D = double.PositiveInfinity; // dielectric constant for Tinker is "1"
            //bool ignNegSpr = true;  // ignore negative spring (do not add the spring into hessian matrix)

            HessMatrix hess = null;

            hess = Hess.GetHessAnm(coords, enumKij);
            if (b_bonds)
            {
                hess = STeM.GetHessBond(coords, univ.bonds, 340.00, hessian: hess);
            }
            if (b_angles)
            {
                hess = STeM.GetHessAngle(coords, univ.angles, true, 45.00, 10.00, hessian: hess);
            }
            if (b_impropers)
            {
                hess = STeM.GetHessImproper(coords, univ.impropers, 70.00, hessian: hess, useArnaud96: true);
            }
            if (b_dihedrals)
            {
                hess = STeM.GetHessDihedral(coords, univ.dihedrals, 1.00, 1, hessian: hess, useAbsSpr: true, useArnaud96: true);
            }

            Hess.UpdateHessNaN(hess, coords);

            return(new HessInfo
            {
                hess = hess,
                mass = univ.GetMasses(),
                atoms = univ.atoms.ToArray(),
                coords = coords.HCloneVectors().ToArray(),
                numZeroEigval = 6,
            });
        }
Beispiel #3
0
            public static HessMatrix GetHess(Universe univ)
            {
                Vector[] coords = univ.GetCoords();

                HessMatrix hessian_spr = HessMatrixSparse.ZerosSparse(univ.size * 3, univ.size * 3);

                Universe.Nonbondeds_v1 nonbondeds = new Universe.Nonbondeds_v1(univ.atoms, univ.size, 12);
                nonbondeds.UpdateNonbondeds(coords, 0);
                hessian_spr = STeM.GetHessBond(coords, univ.bonds, null, hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with bond"));
                hessian_spr = STeM.GetHessAngle(coords, univ.angles, true, null, null, hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with angle"));
                hessian_spr = STeM.GetHessImproper(coords, univ.impropers, null, hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with improper"));
                hessian_spr = STeM.GetHessDihedral(coords, univ.dihedrals, null, null, hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with dihedral"));
                hessian_spr = STeM.GetHessVdw(coords, univ.nonbonded14s.GetEnumerable(), null, null, hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with vdw14"));
                hessian_spr = STeM.GetHessElec(coords, univ.nonbonded14s.GetEnumerable(), hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with elec14"));
                hessian_spr = STeM.GetHessVdw(coords, nonbondeds.GetEnumerable(), null, null, hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with vdw"));
                hessian_spr = STeM.GetHessElec(coords, nonbondeds.GetEnumerable(), hessian: hessian_spr); HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr with elec"));
                //hessian_spr = GetHessSprElec(coords, nonbondeds                                   , hessian: hessian_spr); Debug.Verify(Hess.CheckHessDiag(hessian_spr));
                //hessian_spr = GetHessSprVdw(coords, nonbondeds                                    , hessian: hessian_spr); Debug.Verify(Hess.CheckHessDiag(hessian_spr));
                hessian_spr = Hess.CorrectHessDiag(hessian_spr);                                                           HDebug.Verify(Hess.CheckHessDiag(hessian_spr, 0.000001, "non-computable exception while generating STeM hess_spr"));

                return(hessian_spr);
            }
Beispiel #4
0
 public static Matrix GetHessStem(IList <Vector> coords)
 {
     return(STeM.GetHessCa(coords));
 }
Beispiel #5
0
            public static HessInfo GetHessSbNMA
                (Universe univ
                , IList <Vector> coords
                , double nbondMaxDist // =12
                , double?maxAbsSpring
                , bool b_bonds
                , bool b_angles
                , bool b_impropers
                , bool b_dihedrals
                , bool b_nonbondeds
                , bool b_nonbonded14s
                , double?sca_bonds
                , double?sca_angles
                , double?sca_impropers
                , double?sca_dihedrals
                , double?sca_nonbondeds
                , double?sca_nonbonded14s
                , Action <Universe.Atom, Vector, Universe.Atom, Vector, double> collectorBond
                , Action <Universe.Atom, Vector, Universe.Atom, Vector, Universe.Atom, Vector, double, double> collectorAngle
                , Action <Universe.Atom, Vector, Universe.Atom, Vector, Universe.Atom, Vector, Universe.Atom, Vector, double, double> collectorImproper
                , Action <Universe.Atom, Vector, Universe.Atom, Vector, Universe.Atom, Vector, Universe.Atom, Vector, double, double> collectorDihedral
                , Action <Universe.Atom, Vector, Universe.Atom, Vector, double> collectorNonbonded
                , Action <Universe.Atom, Vector, Universe.Atom, Vector, double> collectorNonbonded14
                , Func <HessSpr.CustomKijInfo, double> GetCustomKij = null
                , params string[] options
                )
            {
                IEnumerable <Universe.Nonbonded>   nonbondeds   = null;
                IEnumerable <Universe.Nonbonded14> nonbonded14s = univ.nonbonded14s.GetEnumerable();

                if (options.Contains("TIP3P: tetrahedral hydrogen bonds"))
                {
                    nonbondeds = EnumNonbondeds(univ.atoms, coords, univ.size, nbondMaxDist, ListTip3pTetraHBond, options);
                }
                else if (options.Contains("TIP3P: near waters"))
                {
                    nonbondeds = EnumNonbondeds(univ.atoms, coords, univ.size, nbondMaxDist, ListTip3pNears, options);
                }
                else
                {
                    nonbondeds = EnumNonbondeds(univ.atoms, coords, univ.size, nbondMaxDist);
                }

                bool   vdW       = true;                    // use vdW
                bool   elec      = false;                   // ignore electrostatic
                double D         = double.PositiveInfinity; // dielectric constant for Tinker is "1"
                bool   ignNegSpr = true;                    // ignore negative spring (do not add the spring into hessian matrix)

                double?K_r     = null;                      // null for sbNMA, and 340.00  for ssNMA
                double?K_theta = null;                      // null for sbNMA, and 45.00   for ssNMA
                double?K_ub    = null;                      // null for sbNMA, and 10.00   for ssNMA
                double?K_psi   = null;                      // null for sbNMA, and 70.00   for ssNMA
                double?K_chi   = null;                      // null for sbNMA, and 1.00    for ssNMA
                double?n       = null;                      // null for sbNMA, and 1       for ssNMA
                string K_nbnd  = null;                      // null for sbNMA, and "Unif"  for ssNMA

                if (options.Contains("TIP3P: (vdW+elec) for OH,OO,HH"))
                {
                    K_nbnd = "TIP3P: (vdW+elec) for OH,OO,HH";
                }
                if (options.Contains("TIP3P: (vdW+elec) for OH"))
                {
                    K_nbnd = "TIP3P: (vdW+elec) for OH";
                }
                if (options.Contains("vdW:L79"))
                {
                    K_nbnd = "L79";
                }
                if (options.Contains("vdW:UnifSgn"))
                {
                    K_nbnd = "UnifSgn";
                }
                if (options.Contains("K_chi:1"))
                {
                    K_chi = 1;
                }

                HessMatrix hess = null;

                if (b_bonds)
                {
                    hess = STeM.GetHessBond(coords, univ.bonds, K_r: K_r, hessian: hess, collector: collectorBond);
                }
                if (b_angles)
                {
                    hess = STeM.GetHessAngle(coords, univ.angles, true, K_theta: K_theta, K_ub: K_ub, hessian: hess, collector: collectorAngle);
                }
                if (b_impropers)
                {
                    hess = STeM.GetHessImproper(coords, univ.impropers, K_psi: K_psi, hessian: hess, useArnaud96: true, collector: collectorImproper);
                }
                if (b_dihedrals)
                {
                    hess = STeM.GetHessDihedral(coords, univ.dihedrals, K_chi: K_chi, n: n, hessian: hess, useAbsSpr: true, useArnaud96: true, collector: collectorDihedral);
                }
                if (b_nonbondeds)
                {
                    hess = HessSpr.GetHessNonbond(coords, nonbondeds, D, K_nbnd: K_nbnd, hessian: hess, vdW: vdW, elec: elec, ignNegSpr: ignNegSpr, maxAbsSpring: maxAbsSpring, collector: collectorNonbonded, GetCustomKij: GetCustomKij);
                }
                if (b_nonbonded14s)
                {
                    hess = HessSpr.GetHessNonbond(coords, nonbonded14s, D, K_nbnd: K_nbnd, hessian: hess, vdW: vdW, elec: elec, ignNegSpr: ignNegSpr, maxAbsSpring: maxAbsSpring, collector: collectorNonbonded14, GetCustomKij: GetCustomKij);
                }

                if (sca_bonds != null)
                {
                    if (sca_bonds.Value != 1)
                    {
                        hess += (sca_bonds.Value - 1) * STeM.GetHessBond(coords, univ.bonds, K_r: K_r, hessian: null);
                    }
                }
                if (sca_angles != null)
                {
                    if (sca_angles.Value != 1)
                    {
                        hess += (sca_angles.Value - 1) * STeM.GetHessAngle(coords, univ.angles, true, K_theta: K_theta, K_ub: K_ub, hessian: null);
                    }
                }
                if (sca_impropers != null)
                {
                    if (sca_impropers.Value != 1)
                    {
                        hess += (sca_impropers.Value - 1) * STeM.GetHessImproper(coords, univ.impropers, K_psi: K_psi, hessian: null, useArnaud96: true);
                    }
                }
                if (sca_dihedrals != null)
                {
                    if (sca_dihedrals.Value != 1)
                    {
                        hess += (sca_dihedrals.Value - 1) * STeM.GetHessDihedral(coords, univ.dihedrals, K_chi: K_chi, n: n, hessian: null, useAbsSpr: true, useArnaud96: true);
                    }
                }
                if (sca_nonbondeds != null)
                {
                    if (sca_nonbondeds.Value != 1)
                    {
                        hess += (sca_nonbondeds.Value - 1) * HessSpr.GetHessNonbond(coords, nonbondeds, D, K_nbnd: K_nbnd, hessian: null, vdW: vdW, elec: elec, ignNegSpr: ignNegSpr, maxAbsSpring: maxAbsSpring);
                    }
                }
                if (sca_nonbonded14s != null)
                {
                    if (sca_nonbonded14s.Value != 1)
                    {
                        hess += (sca_nonbonded14s.Value - 1) * HessSpr.GetHessNonbond(coords, nonbonded14s, D, K_nbnd: K_nbnd, hessian: null, vdW: vdW, elec: elec, ignNegSpr: ignNegSpr, maxAbsSpring: maxAbsSpring);
                    }
                }

                //Hess.UpdateHessNaN(hess, coords);
                {
                    foreach (var bc_br_bval in hess.EnumBlocks())
                    {
                        int bc   = bc_br_bval.Item1;
                        int br   = bc_br_bval.Item2;
                        var bval = bc_br_bval.Item3;

                        if (coords[bc] == null)
                        {
                            throw new HException("have hess block for null-coord");
                        }
                        if (coords[br] == null)
                        {
                            throw new HException("have hess block for null-coord");
                        }
                        if (bval == null)
                        {
                            throw new HException();
                        }
                        for (int c = 0; c < bval.ColSize; c++)
                        {
                            for (int r = 0; r < bval.RowSize; r++)
                            {
                                double val = bval[c, r];
                                if (double.IsNaN(val))
                                {
                                    throw new HException("hess has nan element");
                                }
                                if (double.IsPositiveInfinity(val))
                                {
                                    throw new HException("hess has pos-inf element");
                                }
                                if (double.IsNegativeInfinity(val))
                                {
                                    throw new HException("hess has neg-inf element");
                                }
                            }
                        }
                    }
                }

                return(new HessInfo
                {
                    hess = hess,
                    mass = univ.GetMasses(),
                    atoms = univ.atoms.ToArray(),
                    coords = coords.HCloneVectors().ToArray(),
                    numZeroEigval = 6,
                });
            }
Beispiel #6
0
            public static void TestTuLiangDataSet()
            {
                System.Console.WriteLine("pdbid : ANM(TuLiang -> mine), STeM(TuLiang -> mine)");
                foreach (STeM.DataSet data in STeM.TuLiangDataSet)
                {
                    Pdb pdb      = PdbDatabase.GetPdb(data.pdbid);
                    int numChain = pdb.atoms.ListChainID().HListCommonT().Count;
                    HDebug.Assert(numChain == 1);
                    //List<Pdb.Atom> atoms = pdb.atoms.SelectByName("CA");
                    List <Pdb.Atom> atoms = pdb.atoms.SelectByAltLoc().SelectByName("CA");
                    //List<Pdb.Atom> atoms = pdb.atoms.SelectByDefault().SelectByName("CA");
                    List <Vector> coords   = atoms.ListCoord();
                    Vector        bfactors = atoms.ListTempFactor().ToArray();

                    Matrix hessANM = Hess.GetHessAnm(coords, 12);
                    Mode[] modeANM = Hess.GetModesFromHess(hessANM);
                    modeANM = modeANM.SelectExceptSmallSix();
                    Vector bfactorANM = modeANM.GetBFactor().ToArray();
                    double corrANM    = HBioinfo.BFactor.Corr(bfactors, bfactorANM);

                    //Matrix hessGNM = ENM.GnmHessian(coords, 12);
                    //Mode[] modeGNM = Hess.GetModes(hessGNM);
                    //Vector bfactorGNM = modeGNM.GetBFactor().ToArray();
                    //double corrGNM = BFactor.Corr(bfactors, bfactorGNM);

                    HessMatrix hessSTeM = STeM.GetHessCa_matlab(coords);
                    //Matrix hessSTeM = STeM.GetHessCa(coords);
                    Mode[] modeSTeM = Hess.GetModesFromHess(hessSTeM);
                    modeSTeM = modeSTeM.SelectExceptSmallSix();
                    Vector bfactorSTeM = modeSTeM.GetBFactor().ToArray();
                    double corrSTeM    = HBioinfo.BFactor.Corr(bfactors, bfactorSTeM);

                    System.Console.Write(data.pdbid);
                    System.Console.Write(" : ANM({0:0.00}) -> {1:0.0000})", data.ANM, corrANM);
                    System.Console.Write(" : STeM({0:0.00}) -> {1:0.0000})", data.STeM, corrSTeM);
                    System.Console.WriteLine();
                }
                /// Capture of result...
                ///
                /// pdbid : ANM(TuLiang -> mine), STeM(TuLiang -> mine)
                /// 1AAC : ANM(0.70) -> 0.6918) : STeM(0.76) -> 0.7538)
                /// 1ADS : ANM(0.77) -> 0.7807) : STeM(0.71) -> 0.7142)
                /// 1AHC : ANM(0.79) -> 0.7953) : STeM(0.61) -> 0.6117)
                /// 1AKY : ANM(0.56) -> 0.5675) : STeM(0.60) -> 0.6023)
                /// 1AMM : ANM(0.56) -> 0.5951) : STeM(0.55) -> 0.5304)
                #region ...
                /// 1AMP : ANM(0.62) -> 0.5643) : STeM(0.68) -> 0.6739)
                /// 1ARB : ANM(0.78) -> 0.7526) : STeM(0.83) -> 0.8253)
                /// 1ARS : ANM(0.14) -> 0.1343) : STeM(0.41) -> 0.3646)
                /// 1ARU : ANM(0.70) -> 0.7358) : STeM(0.79) -> 0.7921)
                /// 1BKF : ANM(0.52) -> 0.4695) : STeM(0.50) -> 0.4940)
                /// 1BPI : ANM(0.43) -> 0.4225) : STeM(0.57) -> 0.5588)
                /// 1CDG : ANM(0.65) -> 0.6586) : STeM(0.71) -> 0.7068)
                /// 1CEM : ANM(0.51) -> 0.5232) : STeM(0.76) -> 0.6735)
                /// 1CNR : ANM(0.34) -> 0.3445) : STeM(0.42) -> 0.4190)
                /// 1CNV : ANM(0.69) -> 0.6748) : STeM(0.68) -> 0.6775)
                /// 1CPN : ANM(0.51) -> 0.5607) : STeM(0.56) -> 0.5535)
                /// 1CSH : ANM(0.44) -> 0.4257) : STeM(0.57) -> 0.5755)
                /// 1CTJ : ANM(0.47) -> 0.4889) : STeM(0.62) -> 0.6256)
                /// 1CUS : ANM(0.74) -> 0.7416) : STeM(0.76) -> 0.7992)
                /// 1DAD : ANM(0.28) -> 0.3461) : STeM(0.42) -> 0.4155)
                /// 1DDT : ANM(0.21) -> 0.1899) : STeM(0.49) -> 0.4869)
                /// 1EDE : ANM(0.67) -> 0.7044) : STeM(0.75) -> 0.7439)
                /// 1EZM : ANM(0.56) -> 0.5609) : STeM(0.58) -> 0.5842)
                /// 1FNC : ANM(0.29) -> 0.2663) : STeM(0.61) -> 0.6109)
                /// 1FRD : ANM(0.54) -> 0.5933) : STeM(0.77) -> 0.7579)
                /// 1FUS : ANM(0.40) -> 0.3935) : STeM(0.61) -> 0.6084)
                /// 1FXD : ANM(0.58) -> 0.6291) : STeM(0.70) -> 0.6793)
                /// 1GIA : ANM(0.68) -> 0.6655) : STeM(0.69) -> 0.6856)
                /// 1GKY : ANM(0.36) -> 0.3833) : STeM(0.44) -> 0.4257)
                /// 1GOF : ANM(0.75) -> 0.7614) : STeM(0.78) -> 0.7736)
                /// 1GPR : ANM(0.65) -> 0.5689) : STeM(0.66) -> 0.6534)
                /// 1HFC : ANM(0.63) -> 0.6313) : STeM(0.35) -> 0.7303)
                /// 1IAB : ANM(0.36) -> 0.3262) : STeM(0.53) -> 0.5232)
                /// 1IAG : ANM(0.34) -> 0.3464) : STeM(0.44) -> 0.4344)
                /// 1IFC : ANM(0.61) -> 0.5054) : STeM(0.53) -> 0.5395)
                /// 1IGD : ANM(0.18) -> 0.1874) : STeM(0.27) -> 0.2660)
                /// 1IRO : ANM(0.82) -> 0.7949) : STeM(0.85) -> 0.8461)
                /// 1JBC : ANM(0.72) -> 0.7380) : STeM(0.73) -> 0.7326)
                /// 1KNB : ANM(0.63) -> 0.6615) : STeM(0.54) -> 0.5389)
                /// 1LAM : ANM(0.53) -> 0.5324) : STeM(0.71) -> 0.7102)
                /// 1LCT : ANM(0.52) -> 0.5488) : STeM(0.61) -> 0.6115)
                /// 1LIS : ANM(0.16) -> 0.1674) : STeM(0.30) -> 0.2959)
                /// 1LIT : ANM(0.65) -> 0.5715) : STeM(0.76) -> 0.7575)
                /// 1LST : ANM(0.39) -> 0.3860) : STeM(0.73) -> 0.7283)
                /// 1MJC : ANM(0.67) -> 0.6470) : STeM(0.61) -> 0.6164)
                /// 1MLA : ANM(0.59) -> 0.5686) : STeM(0.54) -> 0.5404)
                /// 1MRJ : ANM(0.66) -> 0.6708) : STeM(0.50) -> 0.4923)
                /// 1NAR : ANM(0.62) -> 0.6257) : STeM(0.74) -> 0.7332)
                /// 1NFP : ANM(0.23) -> 0.2561) : STeM(0.41) -> 0.4053)
                /// 1NIF : ANM(0.42) -> 0.4139) : STeM(0.61) -> 0.6112)
                /// 1NPK : ANM(0.53) -> 0.5654) : STeM(0.64) -> 0.5983)
                /// 1OMP : ANM(0.61) -> 0.5857) : STeM(0.65) -> 0.6499)
                /// 1ONC : ANM(0.55) -> 0.5789) : STeM(0.58) -> 0.5736)
                /// 1OSA : ANM(0.36) -> 0.3596) : STeM(0.55) -> 0.5465)
                /// 1OYC : ANM(0.78) -> 0.7708) : STeM(0.77) -> 0.7757)
                /// 1PBE : ANM(0.53) -> 0.5341) : STeM(0.63) -> 0.6290)
                /// 1PDA : ANM(0.60) -> 0.6240) : STeM(0.58) -> 0.5697)
                /// 1PHB : ANM(0.56) -> 0.5919) : STeM(0.59) -> 0.5866)
                /// 1PHP : ANM(0.59) -> 0.5852) : STeM(0.65) -> 0.6470)
                /// 1PII : ANM(0.19) -> 0.2429) : STeM(0.28) -> 0.2871)
                /// 1PLC : ANM(0.41) -> 0.3411) : STeM(0.42) -> 0.4239)
                /// 1POA : ANM(0.54) -> 0.5944) : STeM(0.42) -> 0.4290)
                /// 1POC : ANM(0.46) -> 0.4341) : STeM(0.39) -> 0.3878)
                /// 1PPN : ANM(0.61) -> 0.5655) : STeM(0.67) -> 0.6757)
                /// 1PTF : ANM(0.47) -> 0.4669) : STeM(0.54) -> 0.5349)
                /// 1PTX : ANM(0.65) -> 0.5949) : STeM(0.62) -> 0.6167)
                /// 1RA9 : ANM(0.48) -> 0.5029) : STeM(0.53) -> 0.5267)
                /// 1RCF : ANM(0.59) -> 0.5629) : STeM(0.58) -> 0.5937)
                /// 1REC : ANM(0.34) -> 0.3352) : STeM(0.49) -> 0.4884)
                /// 1RIE : ANM(0.71) -> 0.7440) : STeM(0.52) -> 0.6806)
                /// 1RIS : ANM(0.25) -> 0.2199) : STeM(0.47) -> 0.4779)
                /// 1RRO : ANM(0.08) -> 0.1192) : STeM(0.36) -> 0.3266)
                /// 1SBP : ANM(0.69) -> 0.6955) : STeM(0.67) -> 0.6668)
                /// 1SMD : ANM(0.50) -> 0.5193) : STeM(0.67) -> 0.6713)
                /// 1SNC : ANM(0.68) -> 0.6860) : STeM(0.72) -> 0.7275)
                /// 1THG : ANM(0.50) -> 0.4982) : STeM(0.50) -> 0.4934)
                /// 1TML : ANM(0.64) -> 0.6266) : STeM(0.58) -> 0.5728)
                /// 1UBI : ANM(0.56) -> 0.5610) : STeM(0.61) -> 0.6235)
                /// 1WHI : ANM(0.12) -> 0.1223) : STeM(0.38) -> 0.3713)
                /// 1XIC : ANM(0.29) -> 0.2942) : STeM(0.47) -> 0.4624)
                /// 2AYH : ANM(0.63) -> 0.6453) : STeM(0.82) -> 0.8157)
                /// 2CBA : ANM(0.67) -> 0.6562) : STeM(0.80) -> 0.8054)
                /// 2CMD : ANM(0.68) -> 0.6630) : STeM(0.62) -> 0.6106)
                /// 2CPL : ANM(0.61) -> 0.6379) : STeM(0.72) -> 0.7131)
                /// 2CTC : ANM(0.63) -> 0.6220) : STeM(0.75) -> 0.7495)
                /// 2CY3 : ANM(0.51) -> 0.5150) : STeM(0.67) -> 0.6614)
                /// 2END : ANM(0.63) -> 0.6307) : STeM(0.68) -> 0.6841)
                /// 2ERL : ANM(0.74) -> 0.7400) : STeM(0.85) -> 0.8445)
                /// 2HFT : ANM(0.63) -> 0.5503) : STeM(0.72) -> 0.7228)
                /// 2IHL : ANM(0.62) -> 0.6632) : STeM(0.72) -> 0.7083)
                /// 2MCM : ANM(0.78) -> 0.7774) : STeM(0.79) -> 0.7886)
                /// 2MHR : ANM(0.65) -> 0.6117) : STeM(0.64) -> 0.6341)
                /// 2MNR : ANM(0.46) -> 0.4762) : STeM(0.47) -> 0.4688)
                /// 2PHY : ANM(0.54) -> 0.5160) : STeM(0.68) -> 0.6831)
                /// 2RAN : ANM(0.43) -> 0.4072) : STeM(0.31) -> 0.3138)
                /// 2RHE : ANM(0.28) -> 0.2074) : STeM(0.33) -> 0.3317)
                /// 2RN2 : ANM(0.68) -> 0.6555) : STeM(0.75) -> 0.7478)
                /// 2SIL : ANM(0.43) -> 0.4203) : STeM(0.51) -> 0.5127)
                /// 2TGI : ANM(0.69) -> 0.6787) : STeM(0.73) -> 0.7391)
                /// 3CHY : ANM(0.61) -> 0.5572) : STeM(0.68) -> 0.6885)
                /// 3COX : ANM(0.71) -> 0.6925) : STeM(0.72) -> 0.7179)
                /// 3EBX : ANM(0.22) -> 0.1913) : STeM(0.40) -> 0.3871)
                /// 3GRS : ANM(0.44) -> 0.4431) : STeM(0.59) -> 0.5910)
                /// 3LZM : ANM(0.60) -> 0.5867) : STeM(0.66) -> 0.6567)
                /// 3PTE : ANM(0.68) -> 0.6788) : STeM(0.77) -> 0.7688)
                /// 4FGF : ANM(0.41) -> 0.3695) : STeM(0.43) -> 0.4166)
                /// 4GCR : ANM(0.73) -> 0.7077) : STeM(0.75) -> 0.7258)
                /// 4MT2 : ANM(0.42) -> 0.3117) : STeM(0.46) -> 0.4547)
                /// 5P21 : ANM(0.40) -> 0.3540) : STeM(0.45) -> 0.4521)
                /// 7RSA : ANM(0.42) -> 0.4663) : STeM(0.59) -> 0.5938)
                /// 8ABP : ANM(0.61) -> 0.6265) : STeM(0.62) -> 0.6182)
                #endregion
            }