Exemple #1
0
 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("------------------------------------------------");
 }
Exemple #2
0
        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);
        }