/// <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); }
/// <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); }
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); }
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); }