public MassDistribution GetMassDistribution(Molecule molecule, double massShift, int charge) { var emptyMassDistribution = new MassDistribution(MassResolution, MinAbundance); var massDistribution = emptyMassDistribution; foreach (var entry in molecule) { massDistribution = massDistribution.Add(emptyMassDistribution.Add(IsotopeAbundances[entry.Key]).Multiply(entry.Value)); } if (charge != 0 || massShift != 0) { massDistribution = massDistribution.OffsetAndDivide(massShift - charge * BioMassCalc.MassElectron, Math.Max(1, Math.Abs(charge))); } return(massDistribution); }
// ReSharper disable once ParameterTypeCanBeEnumerable.Local private MassDistribution GetMzDistribution(Molecule molecule, int charge, IsotopeAbundances abundances, double unexplainedMass, bool isMassH) { // Low resolution to get back only peaks at Dalton (i.e. neutron) boundaries var md = new MassDistribution(_massResolution, _minimumAbundance); var result = md; foreach (var element in molecule) { result = result.Add(md.Add(abundances[element.Key]).Multiply(element.Value)); } return result.OffsetAndDivide(unexplainedMass + charge* (isMassH ? BioMassCalc.MassProton : -BioMassCalc.MassElectron), charge); }
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; }