public List <ScanMetadata> ReadScanMetadata() { var data = new List <ScanMetadata>(); var numScans = rawFile.GetNumScans(); data.Capacity = numScans + 5; for (var i = 1; i <= numScans; i++) { var infoGood = rawFile.GetScanInfo(i, out clsScanInfo info); if (!infoGood) { continue; } var ionInjectionTime = double.Parse(info.ScanEvents.FirstOrDefault(x => x.Key.StartsWith("Ion Injection Time", StringComparison.OrdinalIgnoreCase)).Value ?? "0"); var scan = new ScanMetadata { ScanNumber = i, RetentionTime = info.RetentionTime, TIC = info.TotalIonCurrent, BPI = info.BasePeakIntensity, MSLevel = info.MSLevel, IonInjectionTime = ionInjectionTime }; data.Add(scan); } return(data); }
public List <ScanMetadata> ReadScanMetadata() { var data = new List <ScanMetadata>(); using (var rawReader = rawReaderThreader.CreateThreadAccessor()) { if (!rawReader.SelectMsData()) { // Dataset has no MS data. Return. return(data); } var header = rawReader.RunHeaderEx; var minScan = header.FirstSpectrum; var maxScan = header.LastSpectrum; var numScans = header.SpectraCount; data.Capacity = numScans + 5; for (var i = minScan; i <= maxScan; i++) { var scan = new ScanMetadata { ScanNumber = i }; //scan.RetentionTime = rawReader.RetentionTimeFromScanNumber(i); var scanStats = rawReader.GetScanStatsForScanNumber(i); scan.RetentionTime = scanStats.StartTime; scan.TIC = scanStats.TIC; scan.BPI = scanStats.BasePeakIntensity; //scan.MSLevel = scanStats.ScanEventNumber; var scanEvents = rawReader.GetScanEventForScanNumber(i); scan.MSLevel = (int)scanEvents.MSOrder; var extra = rawReader.GetTrailerExtraInformation(i); var converted = Enumerable.Range(0, extra.Length).Select(x => new KeyValuePair <string, string>(extra.Labels[x], extra.Values[x])) .ToList(); scan.IonInjectionTime = double.Parse(converted.FirstOrDefault(x => x.Key.StartsWith("Ion Injection Time", StringComparison.OrdinalIgnoreCase)).Value ?? "0"); data.Add(scan); } } return(data); }