public ChromData Truncate(double minTime, double maxTime) { if (!ReferenceEquals(Times, RawTimes)) { throw new InvalidOperationException("Cannot truncate data set after interpolation"); // Not L10N } if (Peaks.Count > 0) { throw new InvalidOperationException("Cannot truncate after peak detection"); // Not L10N } // Avoid truncating chromatograms down to something less than half the window width. double minLength = (maxTime - minTime) / 2; minTime = Math.Min(minTime, Times[Times.Length - 1] - minLength); maxTime = Math.Max(maxTime, Times[0] + minLength); int firstIndex = Array.BinarySearch(Times, (float)minTime); if (firstIndex < 0) { firstIndex = ~firstIndex; firstIndex = Math.Max(firstIndex, 0); } int lastIndex = Array.BinarySearch(Times, (float)maxTime); if (lastIndex < 0) { lastIndex = ~lastIndex + 1; lastIndex = Math.Min(lastIndex, Times.Length - 1); } if (firstIndex >= lastIndex) { return(this); } if (firstIndex == 0 && lastIndex == Times.Length - 1) { return(this); } var newChromData = new ChromData(Key, ProviderId) { Extra = Extra, }; newChromData.Times = newChromData.RawTimes = SubArray(RawTimes, firstIndex, lastIndex); newChromData.ScanIndexes = newChromData.RawScanIds = SubArray(RawScanIds, firstIndex, lastIndex); newChromData.Intensities = newChromData.RawIntensities = SubArray(RawIntensities, firstIndex, lastIndex); newChromData.RawMassErrors = SubArray(RawMassErrors, firstIndex, lastIndex); newChromData.DocNode = DocNode; return(newChromData); }
/// <summary> /// Returns a ChromPeak and IFoundPeak that match the start and end times a particular other IFoundPeak /// that was found by Crawdad. /// </summary> public Tuple <ChromPeak, IFoundPeak> IntegrateFoundPeak(IFoundPeak peakMax, ChromPeak.FlagValues flags) { Assume.IsNotNull(PeakFinder); var interpolatedPeak = PeakFinder.GetPeak(peakMax.StartIndex, peakMax.EndIndex); if ((flags & ChromPeak.FlagValues.forced_integration) != 0 && ChromData.AreCoeluting(peakMax, interpolatedPeak)) { flags &= ~ChromPeak.FlagValues.forced_integration; } var chromPeak = new ChromPeak(PeakFinder, interpolatedPeak, flags, InterpolatedTimeIntensities, RawTimeIntensities?.Times); if (TimeIntervals != null) { chromPeak = IntegratePeakWithoutBackground(InterpolatedTimeIntensities.Times[peakMax.StartIndex], InterpolatedTimeIntensities.Times[peakMax.EndIndex], flags); } return(Tuple.Create(chromPeak, interpolatedPeak)); }
public ChromDataPeak(ChromData data, CrawdadPeak peak) { Data = data; _crawPeak = peak; }
public ChromDataPeak(ChromData data, IFoundPeak peak) { Data = data; _crawPeak = peak; }