/// <summary> /// Replace all of the crosslinked peptide with the mass of the crosslinker plus the mass of the linked peptide. /// </summary> public ModifiedSequence ReplaceCrosslinksWithMasses(SrmSettings settings, IsotopeLabelType labelType) { if (ExplicitMods.All(mod => null == mod.LinkedPeptideSequence)) { return(this); } var newModifications = new List <Modification>(ExplicitMods.Count); foreach (var modification in ExplicitMods) { if (null == modification.LinkedPeptideSequence) { newModifications.Add(modification); continue; } var formula = modification.StaticMod.Formula; MoleculeMassOffset moleculeMassOffset; if (string.IsNullOrEmpty(formula)) { moleculeMassOffset = new MoleculeMassOffset(Molecule.Empty, modification.StaticMod.MonoisotopicMass ?? 0, modification.StaticMod.AverageMass ?? 0); } else { moleculeMassOffset = new MoleculeMassOffset(Molecule.ParseExpression(formula), 0, 0); } moleculeMassOffset = moleculeMassOffset.Plus(modification.ExplicitMod.LinkedPeptide.GetNeutralFormula(settings, labelType)); var fragmentedMoleculeSettings = FragmentedMolecule.Settings.FromSrmSettings(settings); moleculeMassOffset = fragmentedMoleculeSettings.ReplaceMoleculeWithMassOffset(moleculeMassOffset); Assume.IsTrue(0 == moleculeMassOffset.Molecule.Count); newModifications.Add(new Modification(modification.ExplicitMod, moleculeMassOffset.MonoMassOffset, moleculeMassOffset.AverageMassOffset)); } return(new ModifiedSequence(_unmodifiedSequence, newModifications, _defaultMassType)); }
public MoleculeMassOffset ReplaceMoleculeWithMassOffset(MoleculeMassOffset moleculeMassOffset) { double monoMass = GetMonoMass(moleculeMassOffset.Molecule) + moleculeMassOffset.MonoMassOffset; double averageMass = GetAverageMass(moleculeMassOffset.Molecule) + moleculeMassOffset.AverageMassOffset; return(new MoleculeMassOffset(Molecule.Empty, monoMass, averageMass)); }
public MoleculeMassOffset SubtractLosses(MoleculeMassOffset moleculeMassOffset, TransitionLosses transitionLosses) { if (transitionLosses == null) { return(moleculeMassOffset); } foreach (var loss in transitionLosses.Losses) { moleculeMassOffset = moleculeMassOffset.Minus(FragmentedMolecule.ToMoleculeMassOffset(loss.Loss)); } return(moleculeMassOffset); }
public MoleculeMassOffset GetPrecursorFormula() { var moleculeMassOffset = new MoleculeMassOffset(GetSimplePrecursorMolecule().PrecursorFormula); if (ExplicitMods != null) { foreach (var child in ExplicitMods.LinkedCrossslinks) { moleculeMassOffset = moleculeMassOffset.Plus(GetChildBuilder(child.Key).GetPrecursorFormula()); } } return(moleculeMassOffset); }
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 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); }
/// <summary> /// Returns the chemical formula for this fragment and none of its children. /// </summary> private MoleculeMassOffset GetSimpleFragmentFormula(ComplexFragmentIon complexFragmentIon) { if (complexFragmentIon.IsOrphan) { return(MoleculeMassOffset.EMPTY); } var key = Tuple.Create(complexFragmentIon.Transition.IonType, complexFragmentIon.Transition.CleavageOffset); MoleculeMassOffset moleculeMassOffset; if (_fragmentedMolecules.TryGetValue(key, out moleculeMassOffset)) { return(moleculeMassOffset); } var fragmentedMolecule = GetSimplePrecursorMolecule().ChangeFragmentIon(complexFragmentIon.Transition.IonType, complexFragmentIon.Transition.Ordinal); moleculeMassOffset = new MoleculeMassOffset(fragmentedMolecule.FragmentFormula, 0, 0); _fragmentedMolecules.Add(key, moleculeMassOffset); return(moleculeMassOffset); }
public double GetAverageMass(MoleculeMassOffset moleculeMassOffset) { return(GetAverageMass(moleculeMassOffset.Molecule) + moleculeMassOffset.AverageMassOffset); }
public double GetMonoMass(MoleculeMassOffset moleculeMassOffset) { return(GetMonoMass(moleculeMassOffset.Molecule) + moleculeMassOffset.MonoMassOffset); }