internal static void PrintResults(SpectrumComparisonResult evaluationTests) { Console.WriteLine("Theoretical / Experimental match evaluation-----"); Console.WriteLine("ACount {0} :: {1}", evaluationTests.ACount.Count, PrintSequence(evaluationTests.ACount)); Console.WriteLine("BCount {0} :: {1}", evaluationTests.BCount.Count, PrintSequence(evaluationTests.BCount)); Console.WriteLine("CCount {0} :: {1}", evaluationTests.CCount.Count, PrintSequence(evaluationTests.CCount)); Console.WriteLine("XCount {0} :: {1}", evaluationTests.XCount.Count, PrintSequence(evaluationTests.XCount)); Console.WriteLine("YCount {0} :: {1}", evaluationTests.YCount.Count, PrintSequence(evaluationTests.YCount)); Console.WriteLine("ZCount {0} :: {1}", evaluationTests.ZCount.Count, PrintSequence(evaluationTests.ZCount)); Console.WriteLine("GoldenAX {0}", evaluationTests.ComplementaryPairsAX); Console.WriteLine("GoldenBY {0}", evaluationTests.ComplementaryPairsBY); Console.WriteLine("GoldenCZ {0}", evaluationTests.ComplementaryPairsCZ); Console.WriteLine("SignalPercentage {0}", evaluationTests.SignalPercentage); Console.WriteLine("------------------------------------------------"); }
public static SpectrumComparisonResult Do(List <TheTests> theTests, List <PredictedIon> theoretical, MSFull experimentalTmp, double ppm, int cleanedPeptideSequenceLength, double relativeIntensityThreshold) { SpectrumComparisonResult scr = new SpectrumComparisonResult(); //Make sure we dont screw up the original spectrum MSFull experimental = PatternTools.ObjectCopier.Clone(experimentalTmp); double maxIntensity = experimental.MSData.Max(a => a.Intensity); experimental.MSData.RemoveAll(a => a.Intensity / maxIntensity < relativeIntensityThreshold); bool allTests = false; if (theTests.Contains(TheTests.AllTests)) { allTests = true; } //Just to make sure foreach (PredictedIon p in theoretical) { p.Matched = false; } //Before all find all matched theoretical and experimental List <Ion> matchedIons = new List <Ion>(100); foreach (PredictedIon pi in theoretical) { List <Ion> theIons = experimental.MSData.FindAll(a => PatternTools.pTools.PPM(a.MZ, pi.MZ) < ppm); if (theIons.Count > 0) { matchedIons.AddRange(theIons); pi.Matched = true; } } matchedIons = matchedIons.Distinct().ToList(); if (theTests.Contains(TheTests.SignalPercentage) || allTests) { scr.SignalPercentage = Math.Round(matchedIons.Sum(a => a.Intensity) / experimental.TotalIonIntensity, 6); } if (theTests.Contains(TheTests.ACount) || allTests) { scr.ACount = SequentialScore(theoretical, IonSeries.A); } if (theTests.Contains(TheTests.BCount) || allTests) { scr.BCount = SequentialScore(theoretical, IonSeries.B); } if (theTests.Contains(TheTests.CCount) || allTests) { scr.CCount = SequentialScore(theoretical, IonSeries.C); } if (theTests.Contains(TheTests.XCount) || allTests) { scr.XCount = SequentialScore(theoretical, IonSeries.X); } if (theTests.Contains(TheTests.YCount) || allTests) { scr.YCount = SequentialScore(theoretical, IonSeries.Y); } if (theTests.Contains(TheTests.ZCount) || allTests) { scr.ZCount = SequentialScore(theoretical, IonSeries.Z); } if (theTests.Contains(TheTests.ComplementaryPairsAX) || allTests) { scr.ComplementaryPairsAX = CountComplementaryPairs(scr.ACount, scr.XCount, cleanedPeptideSequenceLength); } if (theTests.Contains(TheTests.ComplementaryPairsBY) || allTests) { scr.ComplementaryPairsBY = CountComplementaryPairs(scr.BCount, scr.YCount, cleanedPeptideSequenceLength); } if (theTests.Contains(TheTests.ComplementaryPairsCZ) || allTests) { scr.ComplementaryPairsCZ = CountComplementaryPairs(scr.CCount, scr.ZCount, cleanedPeptideSequenceLength); } return(scr); }