Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 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;
 }
Esempio n. 6
0
 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;
 }
Esempio n. 7
0
 public IMass AddFixedModification(int modID, ModificationSites sites)
 {
     OmssaModification modification = null;
     if (OmssaModification.TryGetModification(modID, out modification))
     {
         _fixedMods.Add(modification);
     }
     return modification;
 }
Esempio n. 8
0
 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;
 }
Esempio n. 9
0
        public static ModificationSites Set(this ModificationSites sites, AminoAcid aminoacid)
        {
            if (aminoacid != null)
            {
                sites |= aminoacid.Site;
            }

            return(sites);
        }
Esempio n. 10
0
        public static ModificationSites Set(this ModificationSites sites, char aminoacid)
        {
            AminoAcid aa;

            if (AminoAcid.TryGetResidue(aminoacid, out aa))
            {
                sites |= aa.Site;
            }
            return(sites);
        }
Esempio n. 11
0
        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;
        }
Esempio n. 12
0
        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;
            }
        }
Esempio n. 13
0
 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();
            }
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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();
            }
        }
Esempio n. 17
0
        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());
        }
Esempio n. 18
0
        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)
 {
 }
Esempio n. 21
0
 internal AminoAcid(string name, char oneLetterAbbreviation, string threeLetterAbbreviation, string chemicalFormula, ModificationSites site)
     : this(name, oneLetterAbbreviation, threeLetterAbbreviation, new ChemicalFormula(chemicalFormula), site)
 {
 }
Esempio n. 22
0
 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;
 }
Esempio n. 24
0
 public Modification(double monoMass = 0.0, string name = "", ModificationSites sites = ModificationSites.Any)
 {
     MonoisotopicMass = monoMass;
     Name             = name;
     Sites            = sites;
 }
Esempio n. 25
0
 public OldSchoolModification(double monoMass, string name, ModificationSites sites)
 {
     MonoisotopicMass = monoMass;
     Name             = name;
     Sites            = sites;
 }
Esempio n. 26
0
 public OldSchoolChemicalFormulaModification(ChemicalFormula chemicalFormula, string name, ModificationSites sites)
     : base(chemicalFormula.MonoisotopicMass, name, sites)
 {
     ThisChemicalFormula = chemicalFormula;
 }
 public ChemicalFormulaModification(string chemicalFormula, string name, ModificationSites sites = ModificationSites.Any)
     : this(new ChemicalFormula(chemicalFormula), name, sites)
 {
 }
Esempio n. 28
0
 public void AddVariableModification(IMass modificaiton, ModificationSites sites)
 {
 }
Esempio n. 29
0
 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;
 }
Esempio n. 30
0
        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();
            }
        }
Esempio n. 31
0
 public Isotopologue(string name, ModificationSites sites = ModificationSites.None)
     : base(0, name, sites)
 {
     _modifications = new SortedList <double, Modification>();
 }
 public ChemicalFormulaModification(ChemicalFormula chemicalFormula, string name, ModificationSites sites = ModificationSites.Any)
     : base(chemicalFormula.MonoisotopicMass, name, sites)
 {
     ChemicalFormula = chemicalFormula;
 }
 public ModificationWithMultiplePossibilitiesCollection(string name, ModificationSites sites)
     : base(0, name, sites)
 {
     _modifications = new SortedList <double, OldSchoolModification>();
 }
Esempio n. 34
0
 public OldSchoolChemicalFormulaModification(ChemicalFormula chemicalFormula, ModificationSites sites)
     : this(chemicalFormula, "", sites)
 {
     Name = ThisChemicalFormula.Formula;
 }
Esempio n. 35
0
 public OmssaModification(string name, int id, double mono, double average, bool userMod, ModificationSites sites = ModificationSites.None)
     : base(mono, name, sites)
 {
     ID = id;
     UserMod = userMod;
 }
Esempio n. 36
0
 public void AddVariableModification(IMass modificaiton, ModificationSites sites)
 {
 }
Esempio n. 37
0
 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;
 }
Esempio n. 38
0
 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;
 }
Esempio n. 39
0
 internal AminoAcid(string name, char oneLetterAbbreviation, string threeLetterAbbreviation, string chemicalFormula, ModificationSites site)
     : this(name, oneLetterAbbreviation, threeLetterAbbreviation, new ChemicalFormula(chemicalFormula), site)
 {
 }
 public ChemicalFormulaModification(string chemicalFormula, ModificationSites sites = ModificationSites.Any)
     : this(new ChemicalFormula(chemicalFormula), "", sites)
 {
     Name = ChemicalFormula.ToString();
 }
Esempio n. 41
0
        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);
        }