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, }); }
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, }); }
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); }
public static Matrix GetHessStem(IList <Vector> coords) { return(STeM.GetHessCa(coords)); }
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, }); }
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 }