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