public void ReadMzMLChromatogramsTestDelayedRandom(string inputFileRelativePath, int expectedChromatograms, bool immediateRandomAccess) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } using (var reader = new SimpleMzMLReader(sourceFile.FullName, immediateRandomAccess, true)) { if (!immediateRandomAccess) { // For non-random access readers, the number of chromatograms (as reported by NumChromatograms) // will not get populated until after all the spectra (if any) have been read // Therefore, NumChromatograms should currently be zero since immediateRandomAccess was false Assert.AreEqual(0, reader.NumChromatograms); // You cannot use reader.TryMakeRandomAccessCapable() to make the chromatograms available // Thus, exit this method return; } Assert.AreEqual(expectedChromatograms, reader.NumChromatograms); var stepSize = Math.Max(1, expectedChromatograms / 100); var chromatogramNumber = 1; while (chromatogramNumber <= expectedChromatograms) { var chrom = reader.ReadChromatogram(chromatogramNumber); Console.WriteLine("Chromatogram {0,2}, NativeID {1,-35} has {2:N0} data points", chrom.Index, chrom.Id, chrom.Intensities.Length); chromatogramNumber += stepSize; } } }
//[TestCase(@"MzML\QC_Shew_16_01-15f_MPA_02redo_8Nov16_Tiger_16-02-14.mzML.gz", 9293)] // implemented, but decompresses first public void ReadMzMLChromatogramsTestRandom(string inputFileRelativePath, int expectedChromatograms) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } using (var reader = new SimpleMzMLReader(sourceFile.FullName, true, true)) { Assert.AreEqual(expectedChromatograms, reader.NumChromatograms); var chromCount = 0; foreach (var chrom in reader.ReadAllChromatograms(true)) { if (chrom == null) { Console.WriteLine("ReadAllChromatograms returned null for chromatogram index {0}", chromCount); } else { Console.WriteLine("Chromatogram {0}, NativeID {1,-45} has {2:N0} data points", chrom.Index, chrom.Id, chrom.Intensities.Length); } chromCount++; } Assert.AreEqual(expectedChromatograms, chromCount); } }
public void ReadMzMLTest(string inputFileRelativePath, int expectedSpectra, bool includePeaks) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } using (var reader = new SimpleMzMLReader(sourceFile.FullName, false, true)) { Assert.AreEqual(expectedSpectra, reader.NumSpectra); var specCount = 0; foreach (var spec in reader.ReadAllSpectra(includePeaks)) { if (specCount < 100 || specCount >= expectedSpectra - 100) { Console.WriteLine("Spectrum {0,4}, NativeID {1,-45} has {2:N0} data points", spec.ScanNumber, spec.NativeId, spec.Peaks.Length); } else if (specCount == 100) { Console.WriteLine("..."); } specCount++; } Assert.AreEqual(expectedSpectra, specCount); } }
public void ReadFileLowMem(string inputFileRelativePath, int expectedNativeIDs, int expectedResults, int expectedPeptides, int expectedProteinSeqs) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } var reader = new SimpleMZIdentMLReader(); var spectrumIDs = new SortedSet <string>(); var peptides = new SortedSet <string>(); var proteinSeqs = new SortedSet <string>(); var specResults = 0; using (var results = reader.ReadLowMem(sourceFile.FullName)) { var resultIdentifications = results.Identifications.ToList(); var resultCountTotal = resultIdentifications.Count; foreach (var specItem in resultIdentifications) { specResults++; if (!spectrumIDs.Contains(specItem.NativeId)) { spectrumIDs.Add(specItem.NativeId); } foreach (var evidenceItem in specItem.PepEvidence) { if (!peptides.Contains(evidenceItem.SequenceWithNumericMods)) { peptides.Add(evidenceItem.SequenceWithNumericMods); } if (!proteinSeqs.Contains(evidenceItem.DbSeq.Accession)) { proteinSeqs.Add(evidenceItem.DbSeq.Accession); } } if (specResults % 1000 == 0) { Console.WriteLine("{0,6:N0} / {1,6:N0}", specResults, resultCountTotal); } } } Console.WriteLine(); Console.WriteLine("Spectrum Identification Results: {0,6:N0}", specResults); Console.WriteLine("Native IDs: {0,6:N0}", spectrumIDs.Count); Console.WriteLine("Unique Peptides: {0,6:N0}", peptides.Count); Console.WriteLine("Unique Protein Sequences: {0,6:N0}", proteinSeqs.Count); Assert.AreEqual(expectedResults, specResults, "Spectrum Identification Results"); Assert.AreEqual(expectedNativeIDs, spectrumIDs.Count, "Native IDs"); Assert.AreEqual(expectedPeptides, peptides.Count, "Unique Peptides"); Assert.AreEqual(expectedProteinSeqs, proteinSeqs.Count, "Unique Protein Sequences"); }
public void MzIdentMLReadTest(string inputFileRelativePath, int expectedSpecResults, int expectedSpecItems, int expectedPeptides, int expectedSeqs) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } var identData = new IdentDataObj(MzIdentMlReaderWriter.Read(sourceFile.FullName)); var specResults = 0; var specItems = 0; foreach (var specList in identData.DataCollection.AnalysisData.SpectrumIdentificationList) { if (specList.SpectrumIdentificationResults == null) { continue; } specResults += specList.SpectrumIdentificationResults.Count; foreach (var specResult in specList.SpectrumIdentificationResults) { specItems += specResult.SpectrumIdentificationItems.Count; } } var observedPeptides = 0; if (identData.SequenceCollection.Peptides != null) { observedPeptides = identData.SequenceCollection.Peptides.Count; } var observeProteins = 0; if (identData.SequenceCollection.DBSequences != null) { observeProteins = identData.SequenceCollection.DBSequences.Count; } Console.WriteLine(); Console.WriteLine("Spectrum Identification Results: {0,6:N0}", specResults); Console.WriteLine("Native IDs: {0,6:N0}", specItems); Console.WriteLine("Unique Peptides: {0,6:N0}", observedPeptides); Console.WriteLine("Unique Protein Sequences: {0,6:N0}", observeProteins); Assert.AreEqual(expectedSpecResults, specResults, "Spectrum Identification Results"); Assert.AreEqual(expectedSpecItems, specItems, "Native IDs"); Assert.AreEqual(expectedPeptides, observedPeptides, "Unique Peptides"); Assert.AreEqual(expectedSeqs, observeProteins, "Unique Protein Sequences"); }
public void ReadMzMLChromatogramsTestNonRandom(string inputFileRelativePath, int expectedSpectra, int expectedChromatograms) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } using (var reader = new SimpleMzMLReader(sourceFile.FullName, false, true)) { Assert.AreEqual(expectedSpectra, reader.NumSpectra); if (expectedSpectra != 0) { Assert.AreEqual(0, reader.NumChromatograms); } var specCount = 0; foreach (var spec in reader.ReadAllSpectra(true)) { if (specCount < 100 || specCount >= expectedSpectra - 100) { Console.WriteLine("Spectrum {0,4}, NativeID {1,-45} has {2:N0} data points", spec.ScanNumber, spec.NativeId, spec.Peaks.Length); } else if (specCount == 100) { Console.WriteLine("..."); } specCount++; } Assert.AreEqual(expectedSpectra, specCount); Assert.AreEqual(expectedChromatograms, reader.NumChromatograms); var chromCount = 0; foreach (var chrom in reader.ReadAllChromatograms(false)) { if (chrom == null) { Console.WriteLine("ReadAllChromatograms returned null for chromatogram index {0}", chromCount); } else { Console.WriteLine("Chromatogram {0}, NativeID {1,-45} has {2:N0} data points", chrom.Index, chrom.Id, chrom.Intensities.Length); } chromCount++; } Assert.AreEqual(expectedChromatograms, reader.NumChromatograms); Assert.AreEqual(expectedChromatograms, chromCount); } }
public void MzMLIndexedReadTest(string inputFileRelativePath, int expectedSpectra) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } var reader = new MzMLReader(Path.Combine(TestPath.ExtTestDataDirectory, sourceFile.FullName)); //mzMLType mzMLData = reader.Read(); var mzMLData = new MSData(reader.Read()); Console.WriteLine("Spectrum count: " + mzMLData.Run.SpectrumList.Spectra.Count); Assert.AreEqual(expectedSpectra, mzMLData.Run.SpectrumList.Spectra.Count, "Spectrum count"); }
public void ReadMzMLCompareScanNumbers(string inputFileRelativePath, string artificialScanNumberList, string expectedActualScanNumberList) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } var artificialScanNumbers = ParseOrderedIntegerList(artificialScanNumberList); var expectedActualScanNumbers = ParseOrderedIntegerList(expectedActualScanNumberList); // Run the test twice, first with randomAccess disabled, then with randomAccess enabled for (var i = 0; i < 2; i++) { var randomAccess = i > 0; using (var reader = new SimpleMzMLReader(sourceFile.FullName, randomAccess, true)) { for (var j = 0; j < artificialScanNumbers.Count; j++) { var artificialScanNumber = artificialScanNumbers[j]; var expectedScanNumber = expectedActualScanNumbers[j]; var spectrum = reader.ReadMassSpectrum(artificialScanNumber, false); if (expectedScanNumber <= 0) { Console.WriteLine("Spectrum {0,4} does not exist; this was expected", artificialScanNumber); Assert.IsNull(spectrum); continue; } Assert.IsNotNull(spectrum); Console.WriteLine("Spectrum {0,4}, NativeID {1,-45}, scan {2,4}", spectrum.ScanNumber, spectrum.NativeId, spectrum.NativeIdScanNumber); Assert.AreEqual(expectedScanNumber, spectrum.NativeIdScanNumber); var comparisonSpectrum = reader.GetSpectrumForScan(spectrum.NativeIdScanNumber, false); Assert.AreEqual(comparisonSpectrum.NativeId, spectrum.NativeId); } } Console.WriteLine(); } }
public void MzMLIndexedReadTest(string inputFileRelativePath, int expectedSpectra) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } var reader = new MzMLReader(sourceFile.FullName); var mzMLData = reader.Read(); Console.WriteLine("Spectrum count: " + mzMLData.run.spectrumList.count); Console.WriteLine("Array length: " + mzMLData.run.spectrumList.spectrum.Count); Assert.AreEqual(expectedSpectra.ToString(), mzMLData.run.spectrumList.count, "Spectrum Count"); Assert.AreEqual(expectedSpectra, mzMLData.run.spectrumList.spectrum.Count, "Array length"); }
public void ReadMzMLTestRetrieveByScanNumber(string inputFileRelativePath, int expectedSpectra, bool includePeaks, string scanNumberList, string expectedMissingScanNumbers) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } var scanNumbers = ParseDelimitedIntegerList(scanNumberList); var expectedMissingScans = ParseDelimitedIntegerList(expectedMissingScanNumbers); using (var reader = new SimpleMzMLReader(sourceFile.FullName, true, true)) { Assert.AreEqual(expectedSpectra, reader.NumSpectra); foreach (var scanNumber in scanNumbers) { var spec = reader.GetSpectrumForScan(scanNumber, includePeaks); if (spec == null) { if (expectedMissingScans.Contains(scanNumber)) { Console.WriteLine("Scan {0} not found; this is expected", scanNumber); continue; } Assert.Fail("GetSpectrumForScan returned null for scan {0}", scanNumber); } if (includePeaks) { Console.WriteLine("Spectrum {0,4}, NativeID {1,-45}, scan {2,4} has {3:N0} data points", spec.ScanNumber, spec.NativeId, spec.NativeIdScanNumber, spec.Peaks.Length); } else { Console.WriteLine("Spectrum {0,4}, NativeID {1,-45}, scan {2,4} (peaks not loaded)", spec.ScanNumber, spec.NativeId, spec.NativeIdScanNumber); } Assert.AreEqual(scanNumber, spec.NativeIdScanNumber); } } }
public void ReadMzMLTestRandom(string inputFileRelativePath, int expectedSpectra, bool includePeaks, bool immediateRandomAccess) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } using (var reader = new SimpleMzMLReader(sourceFile.FullName, immediateRandomAccess, true)) { if (!immediateRandomAccess) { reader.TryMakeRandomAccessCapable(); } Assert.AreEqual(expectedSpectra, reader.NumSpectra); var stepSize = Math.Max(1, expectedSpectra / 100); // Note: calling .ReadMassSpectrum with scanNumber = 1 returns the first spectrum in the file, regardless of its actual scan number var scanNumber = 1; while (scanNumber <= expectedSpectra) { var spec = reader.ReadMassSpectrum(scanNumber, includePeaks); if (includePeaks) { Console.WriteLine("Spectrum {0,4}, NativeID {1,-45}, scan {2,4} has {3:N0} data points", spec.ScanNumber, spec.NativeId, spec.NativeIdScanNumber, spec.Peaks.Length); } else { Console.WriteLine("Spectrum {0,4}, NativeID {1,-45}, scan {2,4} (peaks not loaded)", spec.ScanNumber, spec.NativeId, spec.NativeIdScanNumber); } scanNumber += stepSize; } } }
public void TestGetParentScan(string inputFileRelativePath, int startScan, int endScan, params int[] expectedPrecursorScans) { if (!TestPath.FindInputFile(inputFileRelativePath, out var sourceFile)) { Console.WriteLine("File not found: " + inputFileRelativePath); return; } using (var reader = new SimpleMzMLReader(sourceFile.FullName, true, true)) { for (var scanNumber = startScan; scanNumber <= endScan; scanNumber++) { var spectrum = reader.ReadMassSpectrum(scanNumber, false); if (spectrum == null) { continue; } var targetIndex = scanNumber - startScan; int expectedPrecursorScan; if (targetIndex >= 0 && targetIndex < expectedPrecursorScans.Length) { expectedPrecursorScan = expectedPrecursorScans[targetIndex]; } else { expectedPrecursorScan = 0; } if (spectrum.Precursors.Count == 0) { Console.WriteLine("Scan {0} is not a fragmentation scan", spectrum.ScanNumber); if (expectedPrecursorScan > 0) { Assert.Fail("Scan {0} was supposed to have precursor scan {1}, but it has no precursors", spectrum.ScanNumber, expectedPrecursorScan); } continue; } var precursorSpectrumReference = spectrum.Precursors[0].PrecursorSpectrumRef; // Parse out scan number from the precursor spectrum reference // "controllerType=0 controllerNumber=1 scan=1" if (!NativeIdConversion.TryGetScanNumberLong(precursorSpectrumReference, out var precursorScan)) { Assert.Fail("Invalid spectrum reference: " + precursorSpectrumReference); } Console.WriteLine("Scan {0} has precursor {1:F2} m/z, precursor scan {2}", spectrum.ScanNumber, spectrum.Precursors[0].IsolationWindow.TargetMz, precursorScan); if (expectedPrecursorScan != 0) { Assert.AreEqual(expectedPrecursorScan, precursorScan, "Precursor scan number does not match the expected value for scan {0}", spectrum.ScanNumber); } } } }