Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
        /// <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));
            }
        }
Beispiel #3
0
 /// <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);
 }
Beispiel #4
0
 /// <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);
 }
Beispiel #5
0
 /// <summary>
 /// Add a mass error to the given chromatogram.
 /// </summary>
 public void AddMassError(int chromatogramIndex, float massError, BlockWriter writer)
 {
     MassErrors.Add(chromatogramIndex, massError, writer);
 }