Ejemplo n.º 1
0
        public static ScanEventReactionCollection ScanEvents(IRawDataPlus rawFile, ScanIndex index)
        {
            if (index.AnalysisOrder == MSOrderType.Ms)
            {
                Console.WriteLine("This is not an Orbitrap file. Skipping reaction event extraction.");
                return(null);
            }
            else
            {
                rawFile.SelectMsData();

                ScanEventReactionCollection events = new ScanEventReactionCollection();

                Log.Information("Extracting scan events");
                ProgressIndicator P = new ProgressIndicator(index.ScanEnumerators[MSOrderType.Any].Length, "Extracting reaction events");
                P.Start();

                foreach (int scan in index.ScanEnumerators[index.AnalysisOrder])
                {
                    events.Add(scan, rawFile.GetScanEventForScanNumber(scan).GetReaction(0));
                    P.Update();
                }
                P.Done();

                return(events);
            }
        }
Ejemplo n.º 2
0
        public static ScanEventReactionCollection ScanEvents(IRawDataPlus rawFile, ScanIndex index)
        {
            rawFile.SelectMsData();

            ScanEventReactionCollection events = new ScanEventReactionCollection();

            Log.Information("Extracting scan events");
            ProgressIndicator P = new ProgressIndicator(index.ScanEnumerators[MSOrderType.Any].Length, "Extracting reaction events");

            P.Start();

            foreach (int scan in index.ScanEnumerators[index.AnalysisOrder])
            {
                events.Add(scan, rawFile.GetScanEventForScanNumber(scan).GetReaction(0));
                P.Update();
            }
            P.Done();

            return(events);
        }
Ejemplo n.º 3
0
        public static ScanMetaDataCollectionDDA AggregateMetaDataDDA(CentroidStreamCollection centroidStreams, SegmentScanCollection segmentScans, MethodDataContainer methodData,
                                                                     PrecursorScanCollection precursorScans, TrailerExtraCollection trailerExtras, PrecursorMassCollection precursorMasses,
                                                                     RetentionTimeCollection retentionTimes, ScanDependentsCollections scanDependents, ScanEventReactionCollection reactions, ScanIndex index)
        {
            //ProgressIndicator progress = new ProgressIndicator(index.ScanEnumerators[MSOrderType.Any].Count(),
            //   "Formatting scan meta data");

            ScanMetaDataCollectionDDA metaData = new ScanMetaDataCollectionDDA();

            int[] scans = index.ScanEnumerators[MSOrderType.Any];

            double isoWindow = MetaDataCalculations.Ms1IsoWindow(methodData);

            Console.WriteLine("Calculating meta data");

            Console.WriteLine("  MS1 isolation interference");
            metaData.Ms1IsolationInterference = MetaDataCalculations.Ms1Interference(centroidStreams, precursorMasses, trailerExtras,
                                                                                     precursorScans, reactions, index);

            Console.WriteLine("  MS2 scan cycle density");
            metaData.MS2ScansPerCycle = MetaDataCalculations.MS2ScansPerCycle(scanDependents, index);

            Console.WriteLine("  Ion injection time");
            metaData.FillTime = MetaDataCalculations.FillTimes(trailerExtras, index);

            Console.WriteLine("  Duty cycle");
            metaData.DutyCycle = MetaDataCalculations.DutyCycle(retentionTimes, index);

            Console.WriteLine("  Intensity distribution");
            metaData.IntensityDistribution = MetaDataCalculations.IntensityDistributions(centroidStreams, segmentScans, index);

            Console.WriteLine("  Summed intensities");
            metaData.SummedIntensity = MetaDataCalculations.SummedIntensities(centroidStreams, segmentScans, index);

            metaData.FractionConsumingTop80PercentTotalIntensity = MetaDataCalculations.Top80Frac(centroidStreams, segmentScans, index);

            //Task.WaitAll();

            return(metaData);
        }
Ejemplo n.º 4
0
        public static Dictionary <int, double> Ms1Interference(CentroidStreamCollection centroidStreams, PrecursorMassCollection precursorMasses,
                                                               TrailerExtraCollection trailerExtras, PrecursorScanCollection precursorScans, ScanEventReactionCollection reactions, ScanIndex index)
        {
            ConcurrentDictionary <int, double> interference = new ConcurrentDictionary <int, double>();

            int chunkSize = Constants.MultiThreading.ChunkSize(index.ScanEnumerators[index.AnalysisOrder].Count());

            var batches = index.ScanEnumerators[index.AnalysisOrder].Chunk(chunkSize);

            Parallel.ForEach(batches, Constants.MultiThreading.Options(), batch =>
            {
                foreach (int scan in batch)
                {
                    int preScan = precursorScans[scan].MasterScan;
                    interference.AddOrUpdate(scan, Algorithms.Ms1Interference.CalculateForOneScan(centroidStreams[preScan], reactions[scan],
                                                                                                  precursorMasses[scan].MonoisotopicMZ, trailerExtras[scan].ChargeState), (a, b) => b);
                }
            });

            var interferenceOut = new Dictionary <int, double>();

            foreach (var item in interference)
            {
                interferenceOut.Add(item.Key, item.Value);
            }

            return(interferenceOut);
        }