示例#1
0
        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);
        }