Esempio n. 1
0
        public static void ExtractSegmentScans(this RawDataCollection rawData, IRawDataPlus rawFile, MSOrderType MSOrder)
        {
            if (MSOrder == MSOrderType.Ms)
            {
                if (rawData.Performed.Contains(Operations.Ms1SegmentedScans))
                {
                    return;
                }
            }
            else
            {
                if (MSOrder == MSOrderType.Ms2)
                {
                    if (rawData.Performed.Contains(Operations.Ms2SegmentedScans))
                    {
                        return;
                    }
                }
                else
                {
                    if (rawData.Performed.Contains(Operations.Ms3SegmentedScans))
                    {
                        return;
                    }
                }
            }

            Log.Information("Extracting {MSOrder} segment scans", MSOrder);
            IEnumerable <int> scans    = rawData.scanIndex.ScanEnumerators[MSOrder];
            ProgressIndicator progress = new ProgressIndicator(scans.Count(), string.Format("Extracting {0} segment scans", MSOrder));

            try
            {
                rawData.Extract(rawFile, scans, progress);
            }
            catch (Exception e)
            {
                Log.Error(e, "Failed while extracting {MSOrder} segment scans", MSOrder);
                throw e;
            }

            progress.Done();

            if (MSOrder == MSOrderType.Ms)
            {
                rawData.Performed.Add(Operations.Ms1SegmentedScans);
            }
            else
            {
                if (MSOrder == MSOrderType.Ms2)
                {
                    rawData.Performed.Add(Operations.Ms2SegmentedScans);
                }
                else
                {
                    rawData.Performed.Add(Operations.Ms3SegmentedScans);
                }
            }
        }