public MsDataFile LoadFile(string origDataFile, CommonParameters commonParameters) { FilteringParams filter = new FilteringParams(commonParameters.NumberOfPeaksToKeepPerWindow, commonParameters.MinimumAllowedIntensityRatioToBasePeak, commonParameters.WindowWidthThomsons, commonParameters.NumberOfWindows, commonParameters.NormalizePeaksAccrossAllWindows, commonParameters.TrimMs1Peaks, commonParameters.TrimMsMsPeaks); if (commonParameters.DissociationType == DissociationType.LowCID || commonParameters.MS2ChildScanDissociationType == DissociationType.LowCID || commonParameters.MS3ChildScanDissociationType == DissociationType.LowCID) { filter = null; } if (MyMsDataFiles.TryGetValue(origDataFile, out MsDataFile value) && value != null) { return(value); } // By now know that need to load this file!!! lock (FileLoadingLock) // Lock because reading is sequential { if (Path.GetExtension(origDataFile).Equals(".mzML", StringComparison.OrdinalIgnoreCase)) { MyMsDataFiles[origDataFile] = Mzml.LoadAllStaticData(origDataFile, filter, commonParameters.MaxThreadsToUsePerFile); } else if (Path.GetExtension(origDataFile).Equals(".mgf", StringComparison.OrdinalIgnoreCase)) { MyMsDataFiles[origDataFile] = Mgf.LoadAllStaticData(origDataFile, filter); } else { MyMsDataFiles[origDataFile] = ThermoRawFileReader.LoadAllStaticData(origDataFile, filter, commonParameters.MaxThreadsToUsePerFile); } return(MyMsDataFiles[origDataFile]); } }
public static void TestDynamicRaw(string fileName) { string filePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "DataFiles", fileName); ThermoRawFileReader staticRaw = ThermoRawFileReader.LoadAllStaticData(filePath); ThermoDynamicData dynamicRaw = new ThermoDynamicData(filePath); foreach (MsDataScan staticScan in staticRaw.GetAllScansList()) { MsDataScan dynamicScan = dynamicRaw.GetOneBasedScanFromDynamicConnection(staticScan.OneBasedScanNumber); Assert.That(dynamicScan.OneBasedScanNumber == staticScan.OneBasedScanNumber); Assert.That(dynamicScan.MsnOrder == staticScan.MsnOrder); Assert.That(dynamicScan.RetentionTime == staticScan.RetentionTime); Assert.That(dynamicScan.Polarity == staticScan.Polarity); Assert.That(dynamicScan.ScanWindowRange.Minimum == staticScan.ScanWindowRange.Minimum); Assert.That(dynamicScan.ScanWindowRange.Maximum == staticScan.ScanWindowRange.Maximum); Assert.That(dynamicScan.ScanFilter == staticScan.ScanFilter); Assert.That(dynamicScan.NativeId == staticScan.NativeId); Assert.That(dynamicScan.IsCentroid == staticScan.IsCentroid); Assert.That(dynamicScan.IsCentroid == staticScan.IsCentroid); Assert.That(dynamicScan.InjectionTime == staticScan.InjectionTime); Assert.That(dynamicScan.NoiseData == staticScan.NoiseData); Assert.That(dynamicScan.IsolationMz == staticScan.IsolationMz); Assert.That(dynamicScan.SelectedIonChargeStateGuess == staticScan.SelectedIonChargeStateGuess); Assert.That(dynamicScan.SelectedIonIntensity == staticScan.SelectedIonIntensity); Assert.That(dynamicScan.SelectedIonMZ == staticScan.SelectedIonMZ); Assert.That(dynamicScan.DissociationType == staticScan.DissociationType); Assert.That(dynamicScan.IsolationWidth == staticScan.IsolationWidth); Assert.That(dynamicScan.OneBasedPrecursorScanNumber == staticScan.OneBasedPrecursorScanNumber); Assert.That(dynamicScan.SelectedIonMonoisotopicGuessIntensity == staticScan.SelectedIonMonoisotopicGuessIntensity); Assert.That(dynamicScan.SelectedIonMonoisotopicGuessMz == staticScan.SelectedIonMonoisotopicGuessMz); if (dynamicScan.IsolationRange != null || staticScan.IsolationRange != null) { Assert.That(dynamicScan.IsolationRange.Minimum == staticScan.IsolationRange.Minimum); Assert.That(dynamicScan.IsolationRange.Maximum == staticScan.IsolationRange.Maximum); } Assert.That(dynamicScan.MassSpectrum.XArray.Length == staticScan.MassSpectrum.XArray.Length); Assert.That(dynamicScan.MassSpectrum.YArray.Length == staticScan.MassSpectrum.YArray.Length); for (int i = 0; i < staticScan.MassSpectrum.XArray.Length; i++) { double staticMz = staticScan.MassSpectrum.XArray[i]; double staticIntensity = staticScan.MassSpectrum.YArray[i]; double dynamicMz = dynamicScan.MassSpectrum.XArray[i]; double dynamicIntensity = dynamicScan.MassSpectrum.YArray[i]; Assert.That(dynamicMz == staticMz); Assert.That(dynamicIntensity == staticIntensity); } } }
public static void TestEthcdReading() { string filePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "DataFiles", "sliced_ethcd.raw"); var spectra = ThermoRawFileReader.LoadAllStaticData(filePath, null, 1); var hcdScan = spectra.GetOneBasedScan(5); Assert.That(hcdScan.DissociationType == DissociationType.HCD); var ethcdScan = spectra.GetOneBasedScan(6); Assert.That(ethcdScan.DissociationType == DissociationType.EThcD); }
/// <summary> /// Tests peak filtering for ThermoRawFileReader /// </summary> public static void TestPeakFilteringRawFileReader(string infile) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); var filterParams = new FilteringParams(200, 0.01, 0, 1, false, true, true); var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "DataFiles", infile); var a = ThermoRawFileReader.LoadAllStaticData(path, filterParams, maxThreads: 1); var rawScans = a.GetAllScansList(); foreach (var scan in rawScans) { Assert.That(scan.MassSpectrum.XArray.Length <= 200); } string outfile1 = Path.Combine(TestContext.CurrentContext.TestDirectory, "DataFiles", Path.GetFileNameWithoutExtension(infile) + ".mzML"); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(a, outfile1, false); var mzml = Mzml.LoadAllStaticData(outfile1, filterParams, maxThreads: 1); var mzmlScans = mzml.GetAllScansList(); for (int i = 0; i < mzmlScans.Count; i++) { var mzmlScan = mzmlScans[i]; var rawScan = rawScans[i]; for (int j = 0; j < mzmlScan.MassSpectrum.XArray.Length; j++) { double roundedMzmlMz = Math.Round(mzmlScan.MassSpectrum.XArray[j], 2); double roundedRawMz = Math.Round(rawScan.MassSpectrum.XArray[j], 2); Assert.AreEqual(roundedMzmlMz, roundedRawMz); double roundedMzmlIntensity = Math.Round(mzmlScan.MassSpectrum.XArray[j], 0); double roundedRawIntensity = Math.Round(rawScan.MassSpectrum.XArray[j], 0); Assert.AreEqual(roundedMzmlIntensity, roundedRawIntensity); } } Console.WriteLine($"Analysis time for TestPeakFilteringRawFileReader: {stopwatch.Elapsed.Hours}h " + $"{stopwatch.Elapsed.Minutes}m {stopwatch.Elapsed.Seconds}s"); }
/// <summary> /// Tests LoadAllStaticData for ThermoRawFileReader /// </summary> public static void TestLoadAllStaticDataRawFileReader(string infile, string outfile1, string outfile2) { var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "DataFiles", infile); outfile1 = Path.Combine(TestContext.CurrentContext.TestDirectory, "DataFiles", outfile1); outfile2 = Path.Combine(TestContext.CurrentContext.TestDirectory, "DataFiles", outfile2); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); var a = ThermoRawFileReader.LoadAllStaticData(path, maxThreads: 1); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(a, outfile1, false); var aa = Mzml.LoadAllStaticData(outfile1); MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(aa, outfile2, true); Mzml.LoadAllStaticData(outfile2); Console.WriteLine($"Analysis time for TestLoadAllStaticDataRawFileReader({infile}): {stopwatch.Elapsed.Hours}h {stopwatch.Elapsed.Minutes}m {stopwatch.Elapsed.Seconds}s"); }
public static List <ScanHeaderInfo> FileScanHeaderInfo(string fullFilePathWithExtension) { string filename = Path.GetFileName(fullFilePathWithExtension); List <ScanHeaderInfo> scanHeaderInfoList = new(); switch (GetDataFileType(fullFilePathWithExtension)) { case DataFileType.Thermo: ThermoRawFileReader staticRaw = ThermoRawFileReader.LoadAllStaticData(fullFilePathWithExtension); foreach (MsDataScan item in staticRaw) { scanHeaderInfoList.Add(new ScanHeaderInfo(fullFilePathWithExtension, filename, item.OneBasedScanNumber, item.RetentionTime)); } break; case DataFileType.mzML: List <MsDataScan> mzmlDataScans = Mzml.LoadAllStaticData(fullFilePathWithExtension).GetAllScansList(); foreach (MsDataScan item in mzmlDataScans) { scanHeaderInfoList.Add(new ScanHeaderInfo(fullFilePathWithExtension, filename, item.OneBasedScanNumber, item.RetentionTime)); } break; case DataFileType.mgf: List <MsDataScan> mgfDataScans = Mgf.LoadAllStaticData(fullFilePathWithExtension).GetAllScansList(); foreach (MsDataScan item in mgfDataScans) { scanHeaderInfoList.Add(new ScanHeaderInfo(fullFilePathWithExtension, filename, item.OneBasedScanNumber, item.RetentionTime)); } break; case DataFileType.unknown: default: break; } return(scanHeaderInfoList); }