public override TimeIntensitiesGroup Truncate(float newStartTime, float newEndTime) { InterpolationParams interpolationParams; if (InterpolationParams == null) { interpolationParams = null; } else { var interpolatedTimes = GetInterpolatedTimes(); int startIndex = CollectionUtil.BinarySearch(interpolatedTimes, newStartTime); if (startIndex < 0) { startIndex = ~startIndex - 1; } int endIndex = CollectionUtil.BinarySearch(interpolatedTimes, newEndTime); if (endIndex < 0) { endIndex = ~endIndex; } startIndex = Math.Max(startIndex, 0); endIndex = Math.Min(Math.Max(startIndex, endIndex), interpolatedTimes.Count - 1); interpolationParams = InterpolationParams .ChangeStartTime(interpolatedTimes[startIndex]) .ChangeEndTime(interpolatedTimes[endIndex]) .ChangeNumPoints(endIndex - startIndex + 1); } return(new RawTimeIntensities( TransitionTimeIntensities.Select(timeIntensities => timeIntensities.Truncate(newStartTime, newEndTime)), interpolationParams)); }
public ImmutableList <float> GetInterpolatedTimes() { if (InterpolationParams == null) { return(TransitionTimeIntensities.First().Times); } return(ImmutableList.ValueOf(InterpolationParams.GetEvenlySpacedTimesFloat())); }
public static RawTimeIntensities FromChromatogramGroupData(ChromatogramGroupData chromatogramGroupData) { var timeIntensitiesList = new List <TimeIntensities>(); var timeLists = chromatogramGroupData.TimeLists.Select(timeList => ImmutableList.ValueOf(timeList.Times)).ToArray(); var scanIdLists = chromatogramGroupData.ScanIdLists .Select(scanIdList => ImmutableList.ValueOf(scanIdList.ScanIds)).ToArray(); foreach (var chromatogram in chromatogramGroupData.Chromatograms) { IEnumerable <float> massErrors = null; if (chromatogram.MassErrors100X.Count > 0) { massErrors = chromatogram.MassErrors100X.Select(error => error / 100.0f); } else if (chromatogram.MassErrorsDeprecated.Count > 0) { massErrors = chromatogram.MassErrorsDeprecated; } var timeIntensities = new TimeIntensities(timeLists[chromatogram.TimeListIndex - 1], chromatogram.Intensities, massErrors, chromatogram.ScanIdListIndex == 0 ? null : scanIdLists[chromatogram.ScanIdListIndex - 1]); timeIntensitiesList.Add(timeIntensities); } InterpolationParams interpolationParams; if (chromatogramGroupData.InterpolatedNumPoints == 0) { interpolationParams = null; } else { interpolationParams = new InterpolationParams(chromatogramGroupData.InterpolatedStartTime, chromatogramGroupData.InterpolatedEndTime, chromatogramGroupData.InterpolatedNumPoints, chromatogramGroupData.InterpolatedDelta) .ChangeInferZeroes(chromatogramGroupData.InferZeroes); } var rawTimeIntensities = new RawTimeIntensities(timeIntensitiesList, interpolationParams); if (chromatogramGroupData.TimeIntervals != null) { var startTimes = chromatogramGroupData.TimeIntervals.StartTimes; var endTimes = chromatogramGroupData.TimeIntervals.EndTimes; var timeIntervals = TimeIntervals.FromIntervals(Enumerable.Range(0, startTimes.Count) .Select(i => new KeyValuePair <float, float>(startTimes[i], endTimes[i]))); rawTimeIntensities = rawTimeIntensities.ChangeTimeIntervals(timeIntervals); } return(rawTimeIntensities); }
public RawTimeIntensities(IEnumerable <TimeIntensities> transitionTimeIntensities, InterpolationParams interpolationParams) : base(transitionTimeIntensities) { InterpolationParams = interpolationParams; }