CSMSL.IO.PepXML.PepXmlReader.GetModifications C# (CSharp) Method

GetModifications() private method

private GetModifications ( bool fixedMod ) : List
fixedMod bool
return List
        private List<Modification> GetModifications(bool fixedMod)
        {
            var modifications = new Dictionary<string, Modification>();
            var node = _root.SelectSingleNode("//pepxml:search_summary", _nsmgr);
            XmlNodeList nodes;
            if (fixedMod)
            {
                nodes = node.SelectNodes("//pepxml:aminoacid_modification[@variable='N'] | //pepxml:terminal_modification[@variable='N']", _nsmgr);
            }
            else
            {
                nodes = node.SelectNodes("//pepxml:aminoacid_modification[@variable='Y'] | //pepxml:terminal_modification[@variable='Y']", _nsmgr);
            }
            foreach (XmlNode modNode in nodes)
            {
                string name = modNode.Attributes["description"].Value;
                Modification mod = null;
                if (!modifications.TryGetValue(name, out mod))
                {
                    double mass = double.Parse(modNode.Attributes["massdiff"].Value);
                    mod = new Modification(mass, name);
                    modifications.Add(name, mod);
                }

                if (modNode.Name == "aminoacid_modification")
                {
                    char position = modNode.Attributes["aminoacid"].Value[0];
                    mod.Sites = mod.Sites.Set(position);
                }
                else
                {
                    string terminus = modNode.Attributes["terminus"].Value;
                    bool proteinOnly = modNode.Attributes["protein_terminus"].Value == "Y";
                    if (terminus == "N")
                    {
                        if (proteinOnly)
                        {
                            mod.Sites |= ModificationSites.NProt;
                        }
                        else
                        {
                            mod.Sites |= ModificationSites.NPep;
                        }
                    }
                    else
                    {
                        if (proteinOnly)
                        {
                            mod.Sites |= ModificationSites.ProtC;
                        }
                        else
                        {
                            mod.Sites |= ModificationSites.PepC;
                        }
                    }
                }
            }

            return modifications.Values.ToList();
        }