Example #1
0
        public void TestClone()
        {
            var spExp = new IsotopePattern(new[]
            {
                new IsotopeContainer(156.07770, 1),
                new IsotopeContainer(157.07503, 0.0004),
                new IsotopeContainer(157.08059, 0.0003),
                new IsotopeContainer(158.08135, 0.002),
            });

            spExp.MonoIsotope = spExp.Isotopes[0];
            spExp.Charge      = 1;

            var clone = (IsotopePattern)spExp.Clone();

            Assert.AreEqual(156.07770, clone.MonoIsotope.Mass, 0.001);
            Assert.AreEqual(156.07770, clone.Isotopes[0].Mass, 0.001);
            Assert.AreEqual(157.07503, clone.Isotopes[1].Mass, 0.001);
            Assert.AreEqual(157.08059, clone.Isotopes[2].Mass, 0.001);
            Assert.AreEqual(158.08135, clone.Isotopes[3].Mass, 0.001);

            Assert.AreEqual(1, clone.MonoIsotope.Intensity, 0.001);
            Assert.AreEqual(1, clone.Isotopes[0].Intensity, 0.001);
            Assert.AreEqual(0.0004, clone.Isotopes[1].Intensity, 0.001);
            Assert.AreEqual(0.0003, clone.Isotopes[2].Intensity, 0.001);
            Assert.AreEqual(0.002, clone.Isotopes[3].Intensity, 0.001);

            Assert.AreEqual(1, clone.Charge, 0.001);
        }
        /// <summary>
        /// Return the isotope pattern sorted by intensity to the highest abundance.
        /// </summary>
        /// <param name="isotopeP">The IsotopePattern object to sort</param>
        /// <returns>The IsotopePattern sorted</returns>
        public static IsotopePattern SortByIntensity(IsotopePattern isotopeP)
        {
            var isoSort = (IsotopePattern)isotopeP.Clone();

            // Do nothing for empty isotope pattern
            if (isoSort.Isotopes.Count == 0)
            {
                return(isoSort);
            }

            // Sort the isotopes
            var listISO = isoSort.Isotopes;

            isoSort.isotopes.Sort(
                delegate(IsotopeContainer o1, IsotopeContainer o2)
            {
                return(o2.Intensity.CompareTo(o1.Intensity));
            });
            // Set the monoisotopic peak to the one with highest intensity
            isoSort.MonoIsotope = listISO[0];

            return(isoSort);
        }