diff --git a/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs b/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs index bf8cccd0d..6245a695b 100644 --- a/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs +++ b/src/MSDIAL5/MsdialCore/Utility/DataAccess.cs @@ -332,11 +332,10 @@ public static List GetMs2ValuePeaks(IDataProvider provider, double int startScanID, int endScanID, IReadOnlyList pMzValues, ParameterBase param, AcquisitionType acquisitionType, double targetCE = -1, ChromXType type = ChromXType.RT, ChromXUnit unit = ChromXUnit.Min) { - var counter = 0; - var arrayLength = GetTargetArrayLength(provider, startScanID, endScanID, precursorMz, targetCE, param, acquisitionType); - var valuePeakArrayList = new List(pMzValues.Count); - valuePeakArrayList.AddRange(pMzValues.Select(_ => new ValuePeak[arrayLength])); - +var valuePeakLists = new List[pMzValues.Count]; +for (int j = 0; j < valuePeakLists.Length; j++) { + valuePeakLists[j] = new List(); +} for (int i = startScanID; i <= endScanID; i++) { var spec = provider.LoadMsSpectrumFromIndex(i); if (spec.MsLevel == 2 && spec.Precursor != null) { @@ -348,27 +347,16 @@ public static List GetMs2ValuePeaks(IDataProvider provider, double var intensities = RetrieveIntensitiesFromMzValues(pMzValues, spec.Spectrum, param.CentroidMs2Tolerance); for (int j = 0; j < pMzValues.Count; j++) { - valuePeakArrayList[j][counter] = new ValuePeak(id, chromX, pMzValues[j], intensities[j]); + valuePeakLists[j].Add(new ValuePeak(id, chromX, pMzValues[j], intensities[j])); } - counter++; - } - } - } - return valuePeakArrayList; - } - - private static int GetTargetArrayLength(IDataProvider provider, int startScanID, int endScanID, double precursorMz, double targetCE, ParameterBase param, AcquisitionType type) { - var counter = 0; - for (int i = startScanID; i <= endScanID; i++) { - var spec = provider.LoadMsSpectrumFromIndex(i); - if (spec.MsLevel == 2 && spec.Precursor != null) { - if (targetCE >= 0 && spec.CollisionEnergy >= 0 && Math.Abs(targetCE - spec.CollisionEnergy) > 1) continue; // for AIF mode - if (IsInMassWindow(precursorMz, spec, param.CentroidMs1Tolerance, type)) { - counter++; } } } - return counter; +var results = new List(valuePeakLists.Length); +for (int j = 0; j < valuePeakLists.Length; j++) { + results.Add(valuePeakLists[j].ToArray()); +} +return results; } public static double[] RetrieveIntensitiesFromMzValues(