public static TypedMass GetFragmentMassFromFormula(SrmSettings settings, MoleculeMassOffset formula) { var fragmentedMoleculeSettings = FragmentedMolecule.Settings.FromSrmSettings(settings); MassType massType = settings.TransitionSettings.Prediction.FragmentMassType; if (massType.IsMonoisotopic()) { return(new TypedMass(fragmentedMoleculeSettings.GetMonoMass(formula.Molecule) + formula.MonoMassOffset + BioMassCalc.MassProton, MassType.MonoisotopicMassH)); } else { return(new TypedMass(fragmentedMoleculeSettings.GetAverageMass(formula.Molecule) + formula.AverageMassOffset + BioMassCalc.MassProton, MassType.AverageMassH)); } }
public TypedMass GetPrecursorMass(MassType massType) { var formula = GetPrecursorFormula(); var fragmentedMoleculeSettings = GetFragmentedMoleculeSettings(); double mass = massType.IsMonoisotopic() ? fragmentedMoleculeSettings.GetMonoMass(formula) : fragmentedMoleculeSettings.GetAverageMass(formula); if (massType.IsMassH()) { mass += BioMassCalc.MassProton; } return(new TypedMass(mass, massType)); }
public static Molecule AddFragmentLosses(Molecule molecule, IList <FragmentLoss> fragmentLosses, MassType massType, ref double unexplainedMass) { MoleculeMassOffset moleculeMassOffset = new MoleculeMassOffset(molecule, unexplainedMass, unexplainedMass); foreach (var fragmentLoss in fragmentLosses) { moleculeMassOffset = moleculeMassOffset.Minus(ToMoleculeMassOffset(fragmentLoss)); } if (massType.IsMonoisotopic()) { unexplainedMass = moleculeMassOffset.MonoMassOffset; } else { unexplainedMass = moleculeMassOffset.AverageMassOffset; } return(moleculeMassOffset.Molecule); }
private static Molecule GetSequenceFormula(ModifiedSequence modifiedSequence, MassType massType, out double unexplainedMassShift) { unexplainedMassShift = 0; var molecule = new Dictionary <string, int>(); string unmodifiedSequence = modifiedSequence.GetUnmodifiedSequence(); var modifications = modifiedSequence.GetModifications().ToLookup(mod => mod.IndexAA); for (int i = 0; i < unmodifiedSequence.Length; i++) { char aminoAcid = unmodifiedSequence[i]; AddAminoAcidFormula(massType, aminoAcid, molecule, ref unexplainedMassShift); foreach (var mod in modifications[i]) { string formula = mod.Formula; if (formula == null) { var staticMod = mod.StaticMod; var aa = unmodifiedSequence[i]; if ((staticMod.LabelAtoms & LabelAtoms.LabelsAA) != LabelAtoms.None && AminoAcid.IsAA(aa)) { formula = SequenceMassCalc.GetHeavyFormula(aa, staticMod.LabelAtoms); } } if (formula != null) { var modFormula = Molecule.ParseExpression(formula); Add(molecule, modFormula); } else { unexplainedMassShift += massType.IsMonoisotopic() ? mod.MonoisotopicMass : mod.AverageMass; } } } return(Molecule.FromDict(molecule)); }
public double GetMass(MassType massType) { return(massType.IsMonoisotopic() ? MonoisotopicMass : AverageMass); }
public bool IsMonoIsotopic() { return(_massType.IsMonoisotopic()); }