/// <summary> /// Sets the modification at specific sites on this amino acid polymer /// </summary> /// <param name="modification">The modification to set</param> /// <param name="sites">The sites to set the modification at</param> /// <returns>The number of modifications added to this amino acid polymer</returns> public virtual int SetModification(IHasMass modification, ModificationSites sites) { int count = 0; if ((sites & ModificationSites.NPep) == ModificationSites.NPep) { NTerminusModification = modification; count++; } for (int i = 0; i < Length; i++) { ModificationSites site = residues[i].Site; if ((sites & site) == site) { ReplaceMod(i + 1, modification); count++; } } if ((sites & ModificationSites.PepC) == ModificationSites.PepC) { CTerminusModification = modification; count++; } return(count); }
/// <summary> /// Clear the modifications from the specified sites(s) /// </summary> /// <param name="sites">The sites to remove modifications from</param> public void ClearModifications(ModificationSites sites) { if ((sites & ModificationSites.NPep) == ModificationSites.NPep || (sites & ModificationSites.NProt) == ModificationSites.NProt) { ReplaceMod(0, null); } for (int i = 0; i < Length; i++) { int modIndex = i + 1; if (_modifications[modIndex] == null) { continue; } ModificationSites curSite = residues[i].Site; if ((curSite & sites) == curSite) { ReplaceMod(modIndex, null); } } if ((sites & ModificationSites.PepC) == ModificationSites.PepC || (sites & ModificationSites.ProtC) == ModificationSites.ProtC) { ReplaceMod(Length + 1, null); } }
public static void LoadOmssaModifications(Stream stream, bool userMod = true) { XmlDocument mods_xml = new XmlDocument(); mods_xml.Load(stream); XmlNamespaceManager mods_xml_ns = new XmlNamespaceManager(mods_xml.NameTable); mods_xml_ns.AddNamespace("omssa", mods_xml.ChildNodes[1].Attributes["xmlns"].Value); foreach (XmlNode mod_node in mods_xml.SelectNodes("/omssa:MSModSpecSet/omssa:MSModSpec", mods_xml_ns)) { string name = mod_node.SelectSingleNode("./omssa:MSModSpec_name", mods_xml_ns).FirstChild.Value; int id = int.Parse(mod_node.SelectSingleNode("./omssa:MSModSpec_mod/omssa:MSMod", mods_xml_ns).FirstChild.Value); double mono = double.Parse(mod_node.SelectSingleNode("./omssa:MSModSpec_monomass", mods_xml_ns).FirstChild.Value); double average = double.Parse(mod_node.SelectSingleNode("./omssa:MSModSpec_averagemass", mods_xml_ns).FirstChild.Value); ModificationSites sites = ModificationSites.None; foreach ( XmlNode node in mod_node.SelectNodes("./omssa:MSModSpec_residues/omssa:MSModSpec_residues_E", mods_xml_ns)) { string aa = node.FirstChild.Value; sites = sites.Set(aa[0]); } OmssaModification mod = new OmssaModification(name, id, mono, average, userMod, sites); Modifications.Add(name, mod); _modificationKeyDicitonary[id] = name; } }
public ModificationWithLocation(string id, Tuple <string, string> accession, ModificationMotif motif, ModificationSites terminusLocalization, IDictionary <string, IList <string> > linksToOtherDbs, string modificationType) : base(id, modificationType) { this.accession = accession; this.motif = motif; this.terminusLocalization = terminusLocalization; this.linksToOtherDbs = linksToOtherDbs; }
public Residue(string name, char oneLetterAbbreviation, string threeLetterAbbreviation, ChemicalFormula chemicalFormula, ModificationSites site) { Name = name; Letter = oneLetterAbbreviation; Symbol = threeLetterAbbreviation; ThisChemicalFormula = chemicalFormula; MonoisotopicMass = ThisChemicalFormula.MonoisotopicMass; Site = site; }
internal AminoAcid(string name, char oneLetterAbbreviation, string threeLetterAbbreviation, ChemicalFormula chemicalFormula, ModificationSites site) { Name = name; Letter = oneLetterAbbreviation; Symbol = threeLetterAbbreviation; ChemicalFormula = chemicalFormula; MonoisotopicMass = ChemicalFormula.MonoisotopicMass; Site = site; }
public IMass AddFixedModification(int modID, ModificationSites sites) { OmssaModification modification = null; if (OmssaModification.TryGetModification(modID, out modification)) { _fixedMods.Add(modification); } return modification; }
public static ModificationSites Set(this ModificationSites sites, AminoAcid aminoacid) { if (aminoacid != null) { sites |= aminoacid.Site; } return(sites); }
public static ModificationSites Set(this ModificationSites sites, char aminoacid) { AminoAcid aa; if (AminoAcid.TryGetResidue(aminoacid, out aa)) { sites |= aa.Site; } return(sites); }
public static bool ContainsSite(this ModificationSites sites, ModificationSites otherSites) { // By convention, if the other site is 'Any', they are always equal if (otherSites == ModificationSites.Any) return true; if (otherSites == ModificationSites.None) return sites == ModificationSites.None; return sites == otherSites; }
public static void LoadOmssaModifications(string file, bool userMod = true) { XmlDocument mods_xml = new XmlDocument(); mods_xml.Load(file); XmlNamespaceManager mods_xml_ns = new XmlNamespaceManager(mods_xml.NameTable); mods_xml_ns.AddNamespace("omssa", mods_xml.ChildNodes[1].Attributes["xmlns"].Value); foreach (XmlNode mod_node in mods_xml.SelectNodes("/omssa:MSModSpecSet/omssa:MSModSpec", mods_xml_ns)) { string name = mod_node.SelectSingleNode("./omssa:MSModSpec_name", mods_xml_ns).FirstChild.Value; int id = int.Parse(mod_node.SelectSingleNode("./omssa:MSModSpec_mod/omssa:MSMod", mods_xml_ns).FirstChild.Value); double mono = double.Parse(mod_node.SelectSingleNode("./omssa:MSModSpec_monomass", mods_xml_ns).FirstChild.Value); double average = double.Parse(mod_node.SelectSingleNode("./omssa:MSModSpec_averagemass", mods_xml_ns).FirstChild.Value); int modType = int.Parse(mod_node.SelectSingleNode("./omssa:MSModSpec_type/omssa:MSModType", mods_xml_ns).FirstChild.Value); ModificationSites sites = ModificationSites.None; switch (modType) { case 0: foreach ( XmlNode node in mod_node.SelectNodes("./omssa:MSModSpec_residues/omssa:MSModSpec_residues_E", mods_xml_ns)) { string aa = node.FirstChild.Value; sites = sites.Set(aa[0]); } break; case 1: sites |= ModificationSites.NProt; break; case 3: sites |= ModificationSites.ProtC; break; case 5: sites |= ModificationSites.NPep; break; case 6: sites |= ModificationSites.PepC; break; } OmssaModification mod = new OmssaModification(name, id, mono, average, userMod, sites); Modifications[name] = mod; _modificationKeyDicitonary[id] = name; } }
public static IEnumerable <ModificationSites> EnumerateActiveSites(this ModificationSites sites) { foreach (ModificationSites site in Enum.GetValues(typeof(ModificationSites))) { if (site == ModificationSites.None) { continue; } if ((sites & site) == site) { yield return(site); } } }
/// <summary> /// Load a modification file /// </summary> /// <param name="filePath">The path to the modification file</param> public static void Load(string filePath) { try { var modsXml = new XmlDocument(); modsXml.Load(filePath); foreach (XmlNode modNode in modsXml.SelectNodes("//Modifications/Modification")) { string modName = modNode.Attributes["name"].Value; string chemicalFormula = ""; bool isChemicalFormula = false; double mass = 0; var chemModNode = modNode.SelectSingleNode("ChemicalFormula"); if (chemModNode != null) { chemicalFormula = modNode.SelectSingleNode("ChemicalFormula").InnerText; isChemicalFormula = true; } else { mass = double.Parse(modNode.SelectSingleNode("DeltaMass").InnerText); } ModificationSites sites = ModificationSites.None; foreach (XmlNode siteNode in modNode.SelectNodes("ModificationSite")) { string modSite = siteNode.InnerText; var site = (ModificationSites)Enum.Parse(typeof(ModificationSites), modSite); sites |= site; } var modification = isChemicalFormula ? new ChemicalFormulaModification(chemicalFormula, modName, sites) : new Modification(mass, modName, sites); Modifications.Add(modName, modification); foreach (XmlNode modAltNameNode in modNode.SelectNodes("AlternativeName")) { string altName = modAltNameNode.InnerText; Modifications.Add(altName, modification); } } OnModificationsChanged(false); } catch (XmlException) { //RestoreDefaults(); } }
public static bool ContainsSites(this ModificationSites sites, ModificationSites otherSites) { // By convention, if the other site is 'Any', they are always equal if (otherSites == ModificationSites.Any) { return(true); } if (otherSites == ModificationSites.None) { return(sites == ModificationSites.None); } return((~sites & otherSites) == ModificationSites.None); }
public void WriteModification(IMass modification, ModificationSites sites, bool fixedModification = true) { if (CurrentStage != Stage.SearchSummary) { throw new ArgumentException("You must be in the Search Summary stage to write modifications"); } foreach (ModificationSites singleSite in sites.GetActiveSites()) { double basemass = 0; if (singleSite >= ModificationSites.NPep) { _writer.WriteStartElement("terminal_modification"); if (singleSite.HasFlag(ModificationSites.NPep) || singleSite.HasFlag(ModificationSites.NProt)) { _writer.WriteAttributeString("terminus", "N"); basemass += AminoAcidPolymer.DefaultNTerminus.MonoisotopicMass; } else { _writer.WriteAttributeString("terminus", "C"); basemass += AminoAcidPolymer.DefaultCTerminus.MonoisotopicMass; } _writer.WriteAttributeString("protein_terminus", (singleSite.HasFlag(ModificationSites.NProt) || singleSite.HasFlag(ModificationSites.ProtC)) ? "Y" : "N"); } else { string letter = Enum.GetName(typeof(ModificationSites), singleSite); AminoAcid aa = AminoAcid.GetResidue(letter); _writer.WriteStartElement("aminoacid_modification"); _writer.WriteAttributeString("aminoacid", letter); basemass += aa.MonoisotopicMass; } double massshift = modification.MonoisotopicMass; _writer.WriteAttributeString("variable", (fixedModification) ? "N" : "Y"); _writer.WriteAttributeString("mass", (basemass + massshift).ToString()); _writer.WriteAttributeString("massdiff", massshift.ToString()); _writer.WriteAttributeString("description", modification.ToString()); _writer.WriteEndElement(); } }
public void TestClearModifications() { Peptide a = new Peptide("ACDEFGHIKLMNPQRSTVWY"); a.AddModification(new OldSchoolChemicalFormulaModification(ChemicalFormula.ParseFormula("O"), ModificationSites.D)); a.AddModification(new OldSchoolChemicalFormulaModification(ChemicalFormula.ParseFormula("H"), ModificationSites.E)); Assert.AreEqual(2, a.ModificationCount()); a.ClearModifications(); Assert.AreEqual(0, a.ModificationCount()); a.AddModification(new OldSchoolChemicalFormulaModification(ChemicalFormula.ParseFormula("O"), ModificationSites.NTerminus)); a.AddModification(new OldSchoolModification(1), ModificationSites.TerminusC); Assert.AreEqual(2, a.ModificationCount()); a.Fragment(FragmentTypes.y); Peptide peptide = new Peptide("[C2H3NO]-LLL-[C2H3NO]"); ModificationSites ff = ModificationSites.NPep | ModificationSites.PepC; peptide.ClearModifications(ff); Assert.AreEqual("LLL", peptide.GetSequenceWithModifications()); }
public virtual int AddModification(IHasMass modification, ModificationSites sites) { if (_modifications == null) { _modifications = new IHasMass[Length + 2]; } int count = 0; IHasMass currentMod; if ((sites & ModificationSites.NPep) == ModificationSites.NPep) { currentMod = NTerminusModification; NTerminusModification = currentMod == null ? modification : new ModificationCollection(currentMod, modification); count++; } for (int i = 0; i < Length; i++) { ModificationSites site = residues[i].Site; if ((sites & site) == site) { currentMod = _modifications[i + 1]; ReplaceMod(i + 1, currentMod == null ? modification : new ModificationCollection(currentMod, modification)); count++; } } if ((sites & ModificationSites.PepC) == ModificationSites.PepC) { currentMod = CTerminusModification; CTerminusModification = currentMod == null ? modification : new ModificationCollection(currentMod, modification); count++; } return(count); }
public ChemicalFormulaModification(string chemicalFormula, ModificationSites sites = ModificationSites.Any) : this(new ChemicalFormula(chemicalFormula), "", sites) { Name = ChemicalFormula.ToString(); }
public ChemicalFormulaModification(string chemicalFormula, string name, ModificationSites sites = ModificationSites.Any) : this(new ChemicalFormula(chemicalFormula), name, sites) { }
internal AminoAcid(string name, char oneLetterAbbreviation, string threeLetterAbbreviation, string chemicalFormula, ModificationSites site) : this(name, oneLetterAbbreviation, threeLetterAbbreviation, new ChemicalFormula(chemicalFormula), site) { }
public OmssaModification(string name, int id, double mono, double average, bool userMod, ModificationSites sites = ModificationSites.None) : base(mono, name, sites) { ID = id; UserMod = userMod; }
public ChemicalFormulaModification(ChemicalFormula chemicalFormula, string name, ModificationSites sites = ModificationSites.Any) : base(chemicalFormula.MonoisotopicMass, name, sites) { ChemicalFormula = chemicalFormula; }
public Modification(double monoMass = 0.0, string name = "", ModificationSites sites = ModificationSites.Any) { MonoisotopicMass = monoMass; Name = name; Sites = sites; }
public OldSchoolModification(double monoMass, string name, ModificationSites sites) { MonoisotopicMass = monoMass; Name = name; Sites = sites; }
public OldSchoolChemicalFormulaModification(ChemicalFormula chemicalFormula, string name, ModificationSites sites) : base(chemicalFormula.MonoisotopicMass, name, sites) { ThisChemicalFormula = chemicalFormula; }
public void AddVariableModification(IMass modificaiton, ModificationSites sites) { }
public ModificationWithMassAndCf(string id, Tuple <string, string> accession, ModificationMotif motif, ModificationSites site, ChemicalFormula chemicalFormula, double mm, IDictionary <string, IList <string> > linksToOtherDbs, IEnumerable <double> neutralLosses, IEnumerable <double> diagnosticIons, string modificationType) : base(id, accession, motif, site, mm, linksToOtherDbs, neutralLosses, diagnosticIons, modificationType) { this.chemicalFormula = chemicalFormula; }
public void WriteModification(IMass modification, ModificationSites sites, bool fixedModification = true) { if (CurrentStage != Stage.SearchSummary) throw new ArgumentException("You must be in the Search Summary stage to write modifications"); foreach (ModificationSites singleSite in sites.GetActiveSites()) { double basemass = 0; if (singleSite >= ModificationSites.NPep) { _writer.WriteStartElement("terminal_modification"); if (singleSite.HasFlag(ModificationSites.NPep) || singleSite.HasFlag(ModificationSites.NProt)) { _writer.WriteAttributeString("terminus", "N"); basemass += AminoAcidPolymer.DefaultNTerminus.MonoisotopicMass; } else { _writer.WriteAttributeString("terminus", "C"); basemass += AminoAcidPolymer.DefaultCTerminus.MonoisotopicMass; } _writer.WriteAttributeString("protein_terminus", (singleSite.HasFlag(ModificationSites.NProt) || singleSite.HasFlag(ModificationSites.ProtC)) ? "Y" : "N"); } else { string letter = Enum.GetName(typeof(ModificationSites), singleSite); AminoAcid aa = AminoAcid.GetResidue(letter); _writer.WriteStartElement("aminoacid_modification"); _writer.WriteAttributeString("aminoacid", letter); basemass += aa.MonoisotopicMass; } double massshift = modification.MonoisotopicMass; _writer.WriteAttributeString("variable", (fixedModification) ? "N" : "Y"); _writer.WriteAttributeString("mass", (basemass + massshift).ToString()); _writer.WriteAttributeString("massdiff", massshift.ToString()); _writer.WriteAttributeString("description", modification.ToString()); _writer.WriteEndElement(); } }
public Isotopologue(string name, ModificationSites sites = ModificationSites.None) : base(0, name, sites) { _modifications = new SortedList <double, Modification>(); }
public ModificationWithMultiplePossibilitiesCollection(string name, ModificationSites sites) : base(0, name, sites) { _modifications = new SortedList <double, OldSchoolModification>(); }
public OldSchoolChemicalFormulaModification(ChemicalFormula chemicalFormula, ModificationSites sites) : this(chemicalFormula, "", sites) { Name = ThisChemicalFormula.Formula; }
public static AminoAcid AddResidue(string name, char oneLetterAbbreviation, string threeLetterAbbreviation, string chemicalFormula, ModificationSites site) { var residue = new AminoAcid(name, oneLetterAbbreviation, threeLetterAbbreviation, chemicalFormula, site); AddResidueToDictionary(residue); return residue; }
public ModificationWithMass(string id, Tuple <string, string> accession, ModificationMotif motif, ModificationSites modificationSites, double monoisotopicMass, IDictionary <string, IList <string> > externalDatabaseReferences, IEnumerable <double> neutralLosses, IEnumerable <double> diagnosticIons, string modificationType) : base(id, accession, motif, modificationSites, externalDatabaseReferences, modificationType) { this.monoisotopicMass = monoisotopicMass; if (neutralLosses == null || neutralLosses.Count() == 0) { neutralLosses = new List <double> { 0 } } ; this.neutralLosses = neutralLosses; this.diagnosticIons = diagnosticIons; }
public static AminoAcid AddResidue(string name, char oneLetterAbbreviation, string threeLetterAbbreviation, string chemicalFormula, ModificationSites site) { var residue = new AminoAcid(name, oneLetterAbbreviation, threeLetterAbbreviation, chemicalFormula, site); AddResidueToDictionary(residue); return(residue); }