public void TestGeneringAllXics() { var methodName = MethodBase.GetCurrentMethod().Name; Utils.ShowStarting(methodName); if (!File.Exists(TestRawFilePath)) { Assert.Ignore(@"Skipping test " + methodName + @" since file not found: " + TestRawFilePath); } var run = PbfLcMsRun.GetLcMsRun(TestRawFilePath, 0.0, 0.0); Assert.True(run != null); var ms1Scans = run.GetMs1ScanVector(); var comparer = new MzComparerWithBinning(27); const double minMz = 600.0; // 600.0 const double maxMz = 2000.0; // 2000.0 var minBinNum = comparer.GetBinNumber(minMz); var maxBinNum = comparer.GetBinNumber(maxMz); //var scanCount = run.MaxLcScan - run.MinLcScan + 1; var scanCount = run.NumSpectra; var sw = new Stopwatch(); sw.Start(); var numBinsProcessed = 0; for (var binNum = minBinNum; binNum <= maxBinNum; binNum++) { var mzStart = comparer.GetMzStart(binNum); var mzEnd = comparer.GetMzEnd(binNum); var vec1 = run.GetFullPrecursorIonExtractedIonChromatogramVector(mzStart, mzEnd); if (++numBinsProcessed % 2500 == 0) { Console.WriteLine(@"{0,5} / {1,5}, {2:0.00} m/z", numBinsProcessed, maxBinNum - minBinNum + 1, mzStart); } Assert.IsTrue(vec1.Length == ms1Scans.Length); } sw.Stop(); Console.WriteLine(@"{0:f4} sec", sw.Elapsed.TotalSeconds); }
public void TestGettingXicVector() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); if (!File.Exists(TestRawFilePath)) { Assert.Ignore(@"Skipping test " + methodName + @" since file not found: " + TestRawFilePath); } var run1 = PbfLcMsRun.GetLcMsRun(TestRawFilePath, 0.0, 0.0); var run2 = InMemoryLcMsRun.GetLcMsRun(TestRawFilePath, 0.0, 0.0); Assert.True(run1 != null && run2 != null); var comparer = new MzComparerWithBinning(27); const double minMz = 600.0; // 600.0 const double maxMz = 2000.0; // 2000.0 var minBinNum = comparer.GetBinNumber(minMz); var maxBinNum = comparer.GetBinNumber(maxMz); Console.WriteLine(@"NumBins: " + (maxBinNum - minBinNum)); var warnCount = 0; var sw = new Stopwatch(); sw.Start(); for (var binNum = minBinNum; binNum <= maxBinNum; binNum++) { var mzStart = comparer.GetMzStart(binNum); var mzEnd = comparer.GetMzEnd(binNum); var vec1 = run1.GetFullPrecursorIonExtractedIonChromatogramVector(mzStart, mzEnd); var vec2 = run2.GetFullPrecursorIonExtractedIonChromatogramVector(mzStart, mzEnd); Assert.True(vec1.Length == vec2.Length, "Extracted Ion Chromatogram vector length mismatch, {0} vs. {1}", vec1.Length, vec2.Length); var matchCount = 0; var misMatchCount = 0; var positiveCount = 0; for (var i = 0; i < vec2.Length; i++) { if (vec1[i] > 0 || vec2[i] > 0) { positiveCount++; } if (Math.Abs(vec1[i] - vec2[i]) < float.Epsilon) { matchCount++; } else { misMatchCount++; } } if (misMatchCount <= 0 || positiveCount == 0) { continue; } var fractionAgreement = 1 - misMatchCount / (double)positiveCount; if (fractionAgreement < 0.80 && misMatchCount > 2) { Console.WriteLine(@"{0}/{1} Xic values do not match for bin {2} ({3:0.00} m/z); {4:0.0}% agreement", misMatchCount, positiveCount, binNum, mzStart, fractionAgreement * 100); warnCount++; } } sw.Stop(); Console.WriteLine(@"{0:f4} sec", sw.Elapsed.TotalSeconds); Assert.IsTrue(warnCount < 10, "Too many Xic mismatch warnings: {0}", warnCount); }
public void TestGeneratingXicsOfAllCharges() { var methodName = MethodBase.GetCurrentMethod().Name; Utils.ShowStarting(methodName); if (!File.Exists(TestRawFilePath)) { Assert.Ignore(@"Skipping test " + methodName + @" since file not found: " + TestRawFilePath); } var run = PbfLcMsRun.GetLcMsRun(TestRawFilePath, 0.0, 0.0); var comparer = new MzComparerWithBinning(27); const string protSequence = "AIPQSVEGQSIPSLAPMLERTTPAVVSVAVSGTHVSKQRVPDVFRYFFGPNAPQEQVQERPFRGLGSGVIIDADKGYIVTNNHVIDGADDIQVGLHDGREVKAKLIGTDSESDIALLQIEAKNLVAIKTSDSDELRVGDFAVAIGNPFGLGQTVTSGIVSALGRSGLGIEMLENFIQTDAAINSGNSGGALVNLKGELIGINTAIVAPNGGNVGIGFAIPANMVKNLIAQIAEHGEVRRGVLGIAGRDLDSQLAQGFGLDTQHGGFVNEVSAGSAAEKAGIKAGDIIVSVDGRAIKSFQELRAKVATMGAGAKVELGLIRDGDKKTVNVTLGEANQTTEKAAGAVHPMLQGASLENASKGVEITDVAQGSPAAMSGLQKGDLIVGINRTAVKDLKSLKELLKDQEGAVALKIVRGKSMLYLVLR"; //const string annotation = "_." + protSequence + "._"; var seqGraph = SequenceGraph.CreateGraph(new AminoAcidSet(), AminoAcid.ProteinNTerm, protSequence, AminoAcid.ProteinCTerm); if (seqGraph == null) { return; } seqGraph.SetSink(0); var neutral = seqGraph.GetSinkSequenceCompositionWithH2O() - Composition.Hydrogen; var proteinMass = neutral.Mass; var isoEnv = Averagine.GetIsotopomerEnvelope(proteinMass); const bool SHOW_ALL_SCANS = false; var targetColIndex = 0; #pragma warning disable 0162 if (SHOW_ALL_SCANS) { Console.WriteLine("Charge\t" + string.Join("\t", run.GetScanNumbers(1))); } else { // Just display data for scan 161 Console.WriteLine("Charge\t161"); foreach (var scanNumber in run.GetScanNumbers(1)) { if (scanNumber == 161) { break; } targetColIndex++; } } #pragma warning restore 0162 const int minCharge = 2; const int maxCharge = 60; for (var charge = minCharge; charge <= maxCharge; charge++) { var ion = new Ion(neutral, charge); var mostAbundantIsotopeMz = ion.GetIsotopeMz(isoEnv.MostAbundantIsotopeIndex); //var secondMostAbundantIsotopeMz = ion.GetIsotopeMz(isoEnv.MostAbundantIsotopeIndex + 1); var binNum = comparer.GetBinNumber(mostAbundantIsotopeMz); var mzStart = comparer.GetMzStart(binNum); var mzEnd = comparer.GetMzEnd(binNum); var xic = run.GetFullPrecursorIonExtractedIonChromatogram(mzStart, mzEnd); Console.Write(charge + "\t"); #pragma warning disable 0162 if (SHOW_ALL_SCANS) { Console.WriteLine(string.Join("\t", xic.Select(p => p.Intensity))); } else { Console.WriteLine(xic[targetColIndex].Intensity); } #pragma warning restore 0162 } }
public void TestGeneratingXicsOfAllCharges() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); if (!File.Exists(TestRawFilePath)) { Assert.Ignore(@"Skipping test " + methodName + @" since file not found: " + TestRawFilePath); } var run = PbfLcMsRun.GetLcMsRun(TestRawFilePath, 0.0, 0.0); var comparer = new MzComparerWithBinning(27); const string protSequence = "AIPQSVEGQSIPSLAPMLERTTPAVVSVAVSGTHVSKQRVPDVFRYFFGPNAPQEQVQERPFRGLGSGVIIDADKGYIVTNNHVIDGADDIQVGLHDGREVKAKLIGTDSESDIALLQIEAKNLVAIKTSDSDELRVGDFAVAIGNPFGLGQTVTSGIVSALGRSGLGIEMLENFIQTDAAINSGNSGGALVNLKGELIGINTAIVAPNGGNVGIGFAIPANMVKNLIAQIAEHGEVRRGVLGIAGRDLDSQLAQGFGLDTQHGGFVNEVSAGSAAEKAGIKAGDIIVSVDGRAIKSFQELRAKVATMGAGAKVELGLIRDGDKKTVNVTLGEANQTTEKAAGAVHPMLQGASLENASKGVEITDVAQGSPAAMSGLQKGDLIVGINRTAVKDLKSLKELLKDQEGAVALKIVRGKSMLYLVLR"; //const string annotation = "_." + protSequence + "._"; var seqGraph = SequenceGraph.CreateGraph(new AminoAcidSet(), AminoAcid.ProteinNTerm, protSequence, AminoAcid.ProteinCTerm); if (seqGraph == null) return; seqGraph.SetSink(0); var neutral = seqGraph.GetSinkSequenceCompositionWithH2O() - Composition.Hydrogen; var proteinMass = neutral.Mass; var isoEnv = Averagine.GetIsotopomerEnvelope(proteinMass); const bool SHOW_ALL_SCANS = false; var targetColIndex = 0; #pragma warning disable 0162 if (SHOW_ALL_SCANS) Console.WriteLine("Charge\t" + string.Join("\t", run.GetScanNumbers(1))); else { // Just display data for scan 161 Console.WriteLine("Charge\t161"); foreach (var scanNumber in run.GetScanNumbers(1)) { if (scanNumber == 161) break; targetColIndex++; } } #pragma warning restore 0162 const int minCharge = 2; const int maxCharge = 60; for (var charge = minCharge; charge <= maxCharge; charge++) { var ion = new Ion(neutral, charge); var mostAbundantIsotopeMz = ion.GetIsotopeMz(isoEnv.MostAbundantIsotopeIndex); //var secondMostAbundantIsotopeMz = ion.GetIsotopeMz(isoEnv.MostAbundantIsotopeIndex + 1); var binNum = comparer.GetBinNumber(mostAbundantIsotopeMz); var mzStart = comparer.GetMzStart(binNum); var mzEnd = comparer.GetMzEnd(binNum); var xic = run.GetFullPrecursorIonExtractedIonChromatogram(mzStart, mzEnd); Console.Write(charge+"\t"); #pragma warning disable 0162 if (SHOW_ALL_SCANS) Console.WriteLine(string.Join("\t", xic.Select(p => p.Intensity))); else Console.WriteLine(xic[targetColIndex].Intensity); #pragma warning restore 0162 } }
public void TestGeneringAllXics() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); if (!File.Exists(TestRawFilePath)) { Assert.Ignore(@"Skipping test " + methodName + @" since file not found: " + TestRawFilePath); } var run = PbfLcMsRun.GetLcMsRun(TestRawFilePath, 0.0, 0.0); Assert.True(run != null); var ms1Scans = run.GetMs1ScanVector(); var comparer = new MzComparerWithBinning(27); const double minMz = 600.0; // 600.0 const double maxMz = 2000.0; // 2000.0 var minBinNum = comparer.GetBinNumber(minMz); var maxBinNum = comparer.GetBinNumber(maxMz); var scanCount = run.MaxLcScan - run.MinLcScan + 1; var sw = new Stopwatch(); sw.Start(); var numBinsProcessed = 0; for (var binNum = minBinNum; binNum <= maxBinNum; binNum++) { var mzStart = comparer.GetMzStart(binNum); var mzEnd = comparer.GetMzEnd(binNum); var vec1 = run.GetFullPrecursorIonExtractedIonChromatogramVector(mzStart, mzEnd); if (++numBinsProcessed % 2500 == 0) { Console.WriteLine(@"{0,5} / {1,5}, {2:0.00} m/z", numBinsProcessed, maxBinNum - minBinNum + 1, mzStart); } Assert.IsTrue(vec1.Length == ms1Scans.Length); } sw.Stop(); Console.WriteLine(@"{0:f4} sec", sw.Elapsed.TotalSeconds); }