Beispiel #1
0
        /// <summary>
        /// Step through the MZ values in array dblMZs and compute the ppm-based mass difference between adjacent points
        /// </summary>
        /// <param name="ionCount">Number of items in dblMZs; if -1, then parses all data in dblMZs</param>
        /// <param name="dblMZs"></param>
        /// <param name="msLevel"></param>
        /// <param name="centroidingStatus"></param>
        /// <remarks>Assumes the ions are sorted</remarks>
        public void CheckSpectrum(int ionCount, double[] dblMZs, int msLevel, eCentroidStatusConstants centroidingStatus = eCentroidStatusConstants.Unknown)
        {
            if (ionCount < 0)
            {
                ionCount = dblMZs.Length;
            }

            // Possibly sort dblMZs
            for (var i = 1; i <= ionCount - 1; i++)
            {
                if (dblMZs[i] < dblMZs[i - 1])
                {
                    // Sort required
                    Array.Sort(dblMZs);
                    break; // TODO: might not be correct. Was : Exit For
                }
            }

            var lstPpmDiffs = new List <double>(ionCount);

            for (var i = 1; i <= ionCount - 1; i++)
            {
                var dblMZ         = dblMZs[i];
                var dblPreviousMZ = dblMZs[i - 1];

                if (dblPreviousMZ > 0 && dblMZ > dblPreviousMZ)
                {
                    var delMppm = 1000000.0 * (dblMZ - dblPreviousMZ) / dblMZ;
                    lstPpmDiffs.Add(delMppm);
                }
            }

            CheckPPMDiffs(lstPpmDiffs, msLevel, centroidingStatus);
        }
Beispiel #2
0
        /// <summary>
        /// Examines lstPpmDiffs to determine if the data is centroided data
        /// </summary>
        /// <param name="lstPpmDiffs"></param>
        /// <param name="msLevel">1 for MS1, 2 for MS2, etc.</param>
        /// <param name="centroidingStatus"></param>
        /// <remarks>Increments class property TotalSpectra if lstPpmDiffs is not empty; increments class property CentroidedSpectra if the data is centroided</remarks>
        protected void CheckPPMDiffs(List <double> lstPpmDiffs, int msLevel, eCentroidStatusConstants centroidingStatus)
        {
            if (lstPpmDiffs.Count > 0)
            {
                IncrementDictionaryByMSLevel(ref mTotalSpectra, msLevel);

                var empiricalCentroidStatus = eCentroidStatusConstants.Profile;
                if (IsDataCentroided(lstPpmDiffs))
                {
                    empiricalCentroidStatus = eCentroidStatusConstants.Centroid;
                }

                if (centroidingStatus == eCentroidStatusConstants.Centroid & empiricalCentroidStatus == eCentroidStatusConstants.Profile)
                {
                    // The empirical algorithm has classified a centroid spectrum as profile
                    // Change it back to centroid
                    empiricalCentroidStatus = eCentroidStatusConstants.Centroid;

                    IncrementDictionaryByMSLevel(ref mCentroidedSpectraClassifiedAsProfile, msLevel);
                }

                if (empiricalCentroidStatus == eCentroidStatusConstants.Centroid)
                {
                    IncrementDictionaryByMSLevel(ref mCentroidedSpectra, msLevel);
                }
            }
        }
        /// <summary>
        /// Examines lstPpmDiffs to determine if the data is centroided data
        /// </summary>
        /// <param name="lstMZs"></param>
        /// <param name="lstPpmDiffs"></param>
        /// <param name="msLevel">1 for MS1, 2 for MS2, etc.</param>
        /// <param name="centroidingStatus">Expected centroid mode</param>
        /// <param name="spectrumTitle">Optional spectrum title (e.g. scan number)</param>
        /// <remarks>
        /// Increments class property TotalSpectra if lstPpmDiffs is not empty
        /// Increments class property CentroidedSpectra if the data is centroided
        /// </remarks>
        private void CheckPPMDiffs(
            ICollection <double> lstMZs,
            IList <double> lstPpmDiffs,
            int msLevel,
            eCentroidStatusConstants centroidingStatus,
            string spectrumTitle = "")
        {
            if (lstPpmDiffs.Count <= 0)
            {
                return;
            }

            IncrementDictionaryByMSLevel(mTotalSpectra, msLevel);

            if (RaiseDebugEvents)
            {
                if (string.IsNullOrWhiteSpace(spectrumTitle))
                {
                    OnDebugEvent(string.Format("Examining MS{0} spectrum", msLevel));
                }
                else
                {
                    OnDebugEvent("Examining " + spectrumTitle);
                }
            }

            var empiricalCentroidStatus = eCentroidStatusConstants.Profile;

            if (IsDataCentroided(lstPpmDiffs, spectrumTitle))
            {
                empiricalCentroidStatus = eCentroidStatusConstants.Centroid;
            }
            else
            {
                // Data appears profile
                // Examine the data by region to confirm that at least two thirds of the regions have profile mode data
                if (IsDataCentroidedInRegions(lstMZs, DEFAULT_REGION_COUNT, spectrumTitle))
                {
                    // When examining regions, the data appears centroided
                    empiricalCentroidStatus = eCentroidStatusConstants.Centroid;
                }
            }

            if (centroidingStatus == eCentroidStatusConstants.Centroid && empiricalCentroidStatus == eCentroidStatusConstants.Profile)
            {
                // The empirical algorithm has classified a centroid spectrum as profile
                // Change it back to centroid
                empiricalCentroidStatus = eCentroidStatusConstants.Centroid;

                IncrementDictionaryByMSLevel(mCentroidedSpectraClassifiedAsProfile, msLevel);
            }

            if (empiricalCentroidStatus == eCentroidStatusConstants.Centroid)
            {
                IncrementDictionaryByMSLevel(mCentroidedSpectra, msLevel);
            }
        }
        /// <summary>
        /// Step through the MZ values in array dblMZs and compute the ppm-based mass difference between adjacent points
        /// </summary>
        /// <param name="ionCount">Number of items in dblMZs; if -1, then parses all data in dblMZs</param>
        /// <param name="dblMZs"></param>
        /// <param name="msLevel"></param>
        /// <param name="centroidingStatus"></param>
        /// <param name="spectrumTitle">Optional spectrum title (e.g. scan number)</param>
        public void CheckSpectrum(
            int ionCount,
            double[] dblMZs,
            int msLevel,
            eCentroidStatusConstants centroidingStatus = eCentroidStatusConstants.Unknown,
            string spectrumTitle = "")
        {
            if (ionCount < 0)
            {
                ionCount = dblMZs.Length;
            }

            // Possibly sort dblMZs
            for (var i = 1; i <= ionCount - 1; i++)
            {
                if (dblMZs[i] < dblMZs[i - 1])
                {
                    // Sort required
                    Array.Sort(dblMZs);
                    break;
                }
            }

            var lstPpmDiffs = new List <double>(ionCount);

            for (var i = 1; i <= ionCount - 1; i++)
            {
                var mz         = dblMZs[i];
                var previousMz = dblMZs[i - 1];

                if (previousMz > 0 && mz > previousMz)
                {
                    var delMassPPM = 1000000.0 * (mz - previousMz) / mz;
                    lstPpmDiffs.Add(delMassPPM);
                }
            }

            CheckPPMDiffs(dblMZs.ToList(), lstPpmDiffs, msLevel, centroidingStatus, spectrumTitle);
        }
        /// <summary>
        /// Step through the MZ values in array dblMZs and compute the ppm-based mass difference between adjacent points
        /// </summary>
        /// <param name="lstMZs"></param>
        /// <param name="msLevel"></param>
        /// <param name="assumeSorted"></param>
        /// <param name="centroidingStatus"></param>
        /// <param name="spectrumTitle">Optional spectrum title (e.g. scan number)</param>
        /// <remarks>
        /// Increments class property TotalSpectra if lstMZs is not empty
        /// Increments class property CentroidedSpectra if the data is centroided
        /// </remarks>
        public void CheckSpectrum(
            List <double> lstMZs,
            int msLevel,
            bool assumeSorted,
            eCentroidStatusConstants centroidingStatus = eCentroidStatusConstants.Unknown,
            string spectrumTitle = "")
        {
            if (!assumeSorted)
            {
                // Check whether sorting is required
                for (var i = 1; i <= lstMZs.Count - 1; i++)
                {
                    if (lstMZs[i] < lstMZs[i - 1])
                    {
                        lstMZs.Sort();
                        break;
                    }
                }
            }

            var lstPpmDiffs = new List <double>(lstMZs.Count);

            for (var i = 1; i <= lstMZs.Count - 1; i++)
            {
                var mz         = lstMZs[i];
                var previousMz = lstMZs[i - 1];

                if (previousMz > 0 && mz > previousMz)
                {
                    var delMassPPM = 1000000.0 * (mz - previousMz) / mz;
                    lstPpmDiffs.Add(delMassPPM);
                }
            }

            CheckPPMDiffs(lstMZs, lstPpmDiffs, msLevel, centroidingStatus, spectrumTitle);
        }
Beispiel #6
0
        public void CheckSpectrum(List <double> lstMZs, int msLevel, bool assumeSorted, eCentroidStatusConstants centroidingStatus = eCentroidStatusConstants.Unknown)
        {
            if (!assumeSorted)
            {
                // Check whether sorting is required
                for (var i = 1; i <= lstMZs.Count - 1; i++)
                {
                    if (lstMZs[i] < lstMZs[i - 1])
                    {
                        lstMZs.Sort();
                        break;
                    }
                }
            }

            var lstPpmDiffs = new List <double>(lstMZs.Count);

            for (var i = 1; i <= lstMZs.Count - 1; i++)
            {
                var dblMZ         = lstMZs[i];
                var dblPreviousMZ = lstMZs[i - 1];

                if (dblPreviousMZ > 0 && dblMZ > dblPreviousMZ)
                {
                    var delMppm = 1000000.0 * (dblMZ - dblPreviousMZ) / dblMZ;
                    lstPpmDiffs.Add(delMppm);
                }
            }

            CheckPPMDiffs(lstPpmDiffs, msLevel, centroidingStatus);
        }
Beispiel #7
0
 public void CheckSpectrum(List <double> lstMZs, int msLevel, eCentroidStatusConstants centroidingStatus)
 {
     CheckSpectrum(lstMZs, msLevel, assumeSorted: false, centroidingStatus: centroidingStatus);
 }
 /// <summary>
 /// Step through the MZ values in array dblMZs and compute the ppm-based mass difference between adjacent points
 /// </summary>
 /// <param name="lstMZs"></param>
 /// <param name="msLevel"></param>
 /// <param name="centroidingStatus"></param>
 /// <param name="spectrumTitle">Optional spectrum title (e.g. scan number)</param>
 /// <remarks>
 /// Increments class property TotalSpectra if lstMZs is not empty
 /// Increments class property CentroidedSpectra if the data is centroided
 /// </remarks>
 public void CheckSpectrum(List <double> lstMZs, int msLevel, eCentroidStatusConstants centroidingStatus, string spectrumTitle = "")
 {
     CheckSpectrum(lstMZs, msLevel, false, centroidingStatus, spectrumTitle);
 }