コード例 #1
0
ファイル: DiaLcMsRun.cs プロジェクト: javamng/GitHUB
 public Xic GetProductExtractedIonChromatogram(double minMz, double maxMz, double precursorIonMz)
 {
     var xic = new Xic();
     foreach (var isolationWindow in GetIsoWindows(precursorIonMz))
     {
         var peakList = _isoWindowToChromPeaks[isolationWindow];
         xic.AddRange(GetXicPointsWithin(minMz, maxMz, peakList));
     }
     xic.Sort();
     return Xic.GetSelectedXic(xic);
 }
コード例 #2
0
        public Xic GetProductExtractedIonChromatogram(double minMz, double maxMz, double precursorIonMz)
        {
            var xic = new Xic();

            foreach (var isolationWindow in GetIsoWindows(precursorIonMz))
            {
                var peakList = _isoWindowToChromPeaks[isolationWindow];
                xic.AddRange(GetXicPointsWithin(minMz, maxMz, peakList));
            }
            xic.Sort();
            return(Xic.GetSelectedXic(xic));
        }
コード例 #3
0
ファイル: LcMsRun.cs プロジェクト: javamng/GitHUB
        /// <summary>
        /// Get a segment of Xic containing the targetScanNum
        /// </summary>
        /// <param name="xic">xic to be trimmed</param>
        /// <param name="targetScanNum">target scan number to generate xic</param>
        /// <param name="tolerance">number of scans that can be tolerated</param>
        /// <returns>Trimmed XIC around targetScanNum</returns>
        public Xic GetTrimmedXic(Xic xic, int targetScanNum, int tolerance = 3)
        {
            var index = xic.BinarySearch(new XicPoint(targetScanNum, 0, 0));
            if (index < 0) index = ~index;

            var xicSegment = new Xic();

            var curScanNum = targetScanNum;

            // go down
            var i = index - 1;
            while (i >= 0 && i < xic.Count)
            {
                var xicPeak = xic[i];
                // check whether there's no MS1 scan in between
                var isConsecutive = true;
                var numMissingScans = 0;
                for (var scanNum = xicPeak.ScanNum + 1; scanNum < curScanNum; scanNum++)
                {
                    if (GetMsLevel(scanNum) == 1) ++numMissingScans;
                    if (numMissingScans > tolerance)
                    {
                        isConsecutive = false;
                        break;
                    }
                }
                if (isConsecutive) xicSegment.Add(xicPeak);
                else break;
                curScanNum = xicPeak.ScanNum;
                --i;
            }

            // go up
            i = index;
            curScanNum = targetScanNum;
            while (i >= 0 && i < xic.Count)
            {
                var xicPeak = xic[i];
                // check whether there's no MS1 scan in between
                var numMissingScans = 0;
                var isConsecutive = true;
                for (var scanNum = curScanNum + 1; scanNum < xicPeak.ScanNum; scanNum++)
                {
                    if (GetMsLevel(scanNum) == 1) ++numMissingScans;
                    if (numMissingScans > tolerance)
                    {
                        isConsecutive = false;
                        break;
                    }
                }
                if (isConsecutive) xicSegment.Add(xicPeak);
                else break;
                curScanNum = xicPeak.ScanNum;
                ++i;
            }

            xicSegment.Sort();
            return xicSegment;
        }
コード例 #4
0
        /// <summary>
        /// Get a segment of Xic containing the targetScanNum
        /// </summary>
        /// <param name="xic">xic to be trimmed</param>
        /// <param name="targetScanNum">target scan number to generate xic</param>
        /// <param name="tolerance">number of scans that can be tolerated</param>
        /// <returns>Trimmed XIC around targetScanNum</returns>
        public Xic GetTrimmedXic(Xic xic, int targetScanNum, int tolerance = 3)
        {
            var index = xic.BinarySearch(new XicPoint(targetScanNum, 0, 0));

            if (index < 0)
            {
                index = ~index;
            }

            var xicSegment = new Xic();

            var curScanNum = targetScanNum;

            // go down
            var i = index - 1;

            while (i >= 0 && i < xic.Count)
            {
                var xicPeak = xic[i];
                // check whether there's no MS1 scan in between
                var isConsecutive   = true;
                var numMissingScans = 0;
                for (var scanNum = xicPeak.ScanNum + 1; scanNum < curScanNum; scanNum++)
                {
                    if (GetMsLevel(scanNum) == 1)
                    {
                        ++numMissingScans;
                    }
                    if (numMissingScans > tolerance)
                    {
                        isConsecutive = false;
                        break;
                    }
                }
                if (isConsecutive)
                {
                    xicSegment.Add(xicPeak);
                }
                else
                {
                    break;
                }
                curScanNum = xicPeak.ScanNum;
                --i;
            }

            // go up
            i          = index;
            curScanNum = targetScanNum;
            while (i >= 0 && i < xic.Count)
            {
                var xicPeak = xic[i];
                // check whether there's no MS1 scan in between
                var numMissingScans = 0;
                var isConsecutive   = true;
                for (var scanNum = curScanNum + 1; scanNum < xicPeak.ScanNum; scanNum++)
                {
                    if (GetMsLevel(scanNum) == 1)
                    {
                        ++numMissingScans;
                    }
                    if (numMissingScans > tolerance)
                    {
                        isConsecutive = false;
                        break;
                    }
                }
                if (isConsecutive)
                {
                    xicSegment.Add(xicPeak);
                }
                else
                {
                    break;
                }
                curScanNum = xicPeak.ScanNum;
                ++i;
            }

            xicSegment.Sort();
            return(xicSegment);
        }