public PeptideModificationState GetTrueModifications() { PeptideModificationState result = GetFreshCopy(Length); if (NTermModification != ushort.MaxValue && Modification.IsStandardVarMod(NTermModification)) { result.NTermModification = NTermModification; } if (CTermModification != ushort.MaxValue && Modification.IsStandardVarMod(CTermModification)) { result.CTermModification = CTermModification; } for (int i = 0; i < Length; i++) { ushort m = GetModificationAt(i); if (m == ushort.MaxValue || !Modification.IsStandardVarMod(m)) { result.SetModificationAt(i, ushort.MaxValue); } else { result.SetModificationAt(i, GetModificationAt(i)); } } return(result); }
public PeptideModificationState GetLabelModifications(ushort[] labelMods, string sequence) { PeptideModificationState result = GetFreshCopy(Length); if (NTermModification != ushort.MaxValue && !Modification.IsStandardVarMod(NTermModification)) { result.NTermModification = NTermModification; } if (CTermModification != ushort.MaxValue && !Modification.IsStandardVarMod(CTermModification)) { result.CTermModification = CTermModification; } for (int i = 0; i < Length; i++) { ushort m = GetModificationAt(i); if (m != ushort.MaxValue && !Modification.IsStandardVarMod(m)) { result.SetModificationAt(i, m); } else { result.SetModificationAt(i, ushort.MaxValue); } } foreach (ushort labelMod in labelMods) { if (!Modification.IsStandardVarMod(labelMod)) { Modification mod = Tables.ModificationList[labelMod]; if (mod.IsInternal) { for (int j = 0; j < mod.AaCount; j++) { char c = mod.GetAaAt(j); for (int i = 0; i < Length; i++) { if (sequence[i] == c) { result.SetModificationAt(i, mod.Index); } } } } else { if (mod.IsNterminal) { result.NTermModification = mod.Index; } else { result.CTermModification = mod.Index; } } } } return(result); }