Exemplo n.º 1
0
        public PepXmlModifications ParseModifications(XElement searchSummary)
        {
            PepXmlModifications result  = new PepXmlModifications();
            var aminoacid_modifications = searchSummary.FindDescendants("aminoacid_modification");

            foreach (var am in aminoacid_modifications)
            {
                PepXmlModificationItem item = new PepXmlModificationItem();
                item.IsVariable        = am.Attribute("variable").Value.Equals("Y");
                item.IsAminoacid       = true;
                item.IsProteinTerminal = false;
                item.IsTerminalN       = false;
                item.Aminoacid         = am.Attribute("aminoacid").Value;
                item.Mass     = MyConvert.ToDouble(am.Attribute("mass").Value);
                item.MassDiff = MyConvert.ToDouble(am.Attribute("massdiff").Value);
                result.Add(item);
            }

            var terminal_modifications = searchSummary.FindDescendants("terminal_modification");

            foreach (var am in terminal_modifications)
            {
                PepXmlModificationItem item = new PepXmlModificationItem();
                item.IsVariable        = am.Attribute("variable").Value.Equals("Y");
                item.IsAminoacid       = false;
                item.IsProteinTerminal = am.Attribute("protein_terminus").Value.Equals("Y");
                item.IsTerminalN       = am.Attribute("terminus").Value.Equals("n");;
                item.Mass     = MyConvert.ToDouble(am.Attribute("mass").Value);
                item.MassDiff = MyConvert.ToDouble(am.Attribute("massdiff").Value);
                result.Add(item);
            }

            result.AssignModificationChar();
            return(result);
        }
Exemplo n.º 2
0
        private void ParseSearchHit(IIdentifiedSpectrum sph, XElement searchHit, PepXmlModifications ppmods)
        {
            var sp = new IdentifiedPeptide(sph);

            var mod_info = searchHit.FindFirstDescendant("modification_info");

            string seq = searchHit.Attribute("peptide").Value;

            if (mod_info != null)
            {
                var modified_peptide = mod_info.Attribute("modified_peptide");
                if (modified_peptide != null && !modReg.Match(modified_peptide.Value).Success)
                {
                    seq = modified_peptide.Value;
                }
                else
                {
                    var pureSeq = seq;
                    var modaas  = PeptideProphetUtils.ParseModificationAminoacidMass(mod_info);
                    if (modaas != null && modaas.Count > 0)
                    {
                        modaas.Reverse();
                        foreach (var modaa in modaas)
                        {
                            string modchar = FindModificationChar(ppmods, modaa, pureSeq);
                            seq = seq.Insert(modaa.Position, modchar);
                        }
                    }
                }
            }

            if (searchHit.Attribute("peptide_prev_aa") != null)
            {
                sp.Sequence = searchHit.Attribute("peptide_prev_aa").Value + "." +
                              seq + "." +
                              searchHit.Attribute("peptide_next_aa").Value;
            }
            else
            {
                sp.Sequence = seq;
            }

            sph.NumMissedCleavages = GetAttributeValue(searchHit, "num_missed_cleavages", 0);
            sph.NumProteaseTermini = GetAttributeValue(searchHit, "num_tol_term", 2);

            sp.AddProtein(searchHit.Attribute("protein").Value);

            var NumTotalProteins = int.Parse(searchHit.Attribute("num_tot_proteins").Value);

            if (NumTotalProteins > 1)
            {
                var alternative_proteins = searchHit.FindDescendants("alternative_protein");
                foreach (var alternative_protein in alternative_proteins)
                {
                    sp.AddProtein(alternative_protein.Attribute("protein").Value);
                }
            }

            ParseScoreAndOtherInformation(sph, searchHit);
        }
Exemplo n.º 3
0
        private void WriteModifications(StreamWriter sw, PepXmlModifications sp)
        {
            var aas = new Aminoacids();

            foreach (var ssm in sp)
            {
                if (ssm.MassDiff != 0.0)
                {
                    if (ssm.IsAminoacid)
                    {
                        sw.Write("      <aminoacid_modification aminoacid=\"{0}\" massdiff=\"{1:0.0000}\" mass=\"{2:0.0000}\" variable=\"{3}\"",
                                 ssm.Aminoacid,
                                 ssm.MassDiff,
                                 ssm.Mass,
                                 ssm.IsVariable ? "Y" : "N");
                    }
                    else
                    {
                        sw.Write("      <terminal_modification terminus=\"{0}\" massdiff=\"{1:0.0000}\" mass=\"{2:0.0000}\" variable=\"{3}\" protein_terminus=\"{4}\"",
                                 ssm.IsTerminalN ? "n" : "c",
                                 ssm.MassDiff,
                                 ssm.Mass,
                                 ssm.IsVariable ? "Y" : "N",
                                 ssm.IsProteinTerminal ? (ssm.IsTerminalN ? "n" : "c") : "");
                    }

                    if (string.IsNullOrEmpty(ssm.Symbol))
                    {
                        sw.WriteLine("/>");
                    }
                    else
                    {
                        sw.WriteLine(" symbol=\"{0}\"/>", ssm.Symbol);
                    }
                }
            }
        }
Exemplo n.º 4
0
 protected virtual string FindModificationChar(PepXmlModifications ppmods, ModificationAminoacidMass modaa, string pureSeq)
 {
     return(ppmods.FindModificationChar(modaa.Mass));
 }