/// <summary> /// Get a chromatogram with properly sorted time values. /// </summary> public void ReleaseChromatogram(byte[] bytesFromDisk, out TimeIntensities timeIntensities) { var times = Times.ToArray(bytesFromDisk); var intensities = Intensities.ToArray(bytesFromDisk); var massErrors = MassErrors != null ? MassErrors.ToArray(bytesFromDisk) : null; var scanIds = Scans != null ? Scans.ToArray(bytesFromDisk) : null; // Make sure times and intensities match in length. if (times.Length != intensities.Length) { throw new InvalidDataException( string.Format(Resources.ChromCollected_ChromCollected_Times__0__and_intensities__1__disagree_in_point_count, times.Length, intensities.Length)); } if (massErrors != null && massErrors.Length != intensities.Length) { throw new InvalidDataException( string.Format(Resources.ChromCollector_ReleaseChromatogram_Intensities___0___and_mass_errors___1___disagree_in_point_count_, intensities.Length, massErrors.Length)); } timeIntensities = new TimeIntensities(times, intensities, massErrors, scanIds); // Release memory. Times = null; Intensities = null; MassErrors = null; Scans = null; }
/// <summary> /// Get a chromatogram with properly sorted time values. /// </summary> public void ReleaseChromatogram(byte[] bytesFromDisk, out float[] times, out float[] intensities, out float[] massErrors, out int[] scanIds) { times = Times.ToArray(bytesFromDisk); intensities = Intensities.ToArray(bytesFromDisk); massErrors = MassErrors != null ? MassErrors.ToArray(bytesFromDisk) : null; scanIds = Scans != null ? Scans.ToArray(bytesFromDisk) : null; // Release memory. Times = null; Intensities = null; MassErrors = null; Scans = null; // Make sure times and intensities match in length. if (times.Length != intensities.Length) { throw new InvalidDataException( string.Format(Resources.ChromCollected_ChromCollected_Times__0__and_intensities__1__disagree_in_point_count, times.Length, intensities.Length)); } }
/// <summary> /// Fill a number of intensity and mass error values for the given chromatogram with zeroes. /// </summary> public void FillZeroes(int chromatogramIndex, int count, BlockWriter writer) { if (MassErrors != null) { MassErrors.FillZeroes(chromatogramIndex, count, writer); } Intensities.FillZeroes(chromatogramIndex, count, writer); }
/// <summary> /// Add intensity and mass error (if needed) to the given chromatogram. /// </summary> public void AddPoint(int chromatogramIndex, float intensity, float?massError, BlockWriter writer) { if (MassErrors != null) { // ReSharper disable once PossibleInvalidOperationException MassErrors.Add(chromatogramIndex, massError.Value, writer); // If massError is required, this won't be null (and if it is, we want to hear about it) } Intensities.Add(chromatogramIndex, intensity, writer); }
/// <summary> /// Add a mass error to the given chromatogram. /// </summary> public void AddMassError(int chromatogramIndex, float massError, BlockWriter writer) { MassErrors.Add(chromatogramIndex, massError, writer); }