Example #1
0
        public MassDistribution GetMassDistribution(Molecule molecule, int charge)
        {
            var md     = new MassDistribution(MassResolution, .00001);
            var result = md;

            foreach (var element in molecule)
            {
                result = result.Add(md.Add(IsotopeAbundances[element.Key]).Multiply(element.Value));
            }
            if (charge != 0)
            {
                result = result.OffsetAndDivide(charge * ProtonMass, charge);
            }
            return(result);
        }
        /// <summary>
        /// Returns the result of adding this MassDistribution to itself the specified number of times.
        /// </summary>
        public MassDistribution Multiply(int factor)
        {
            if (factor == 0)
            {
                return(new MassDistribution(MassResolution, MinimumAbundance));
            }
            if (factor == 1)
            {
                return(this);
            }
            MassDistribution result = Add(this);

            if (factor >= 4)
            {
                result = result.Multiply(factor / 2);
            }
            if (factor % 2 != 0)
            {
                result = result.Add(this);
            }
            return(result);
        }