Example #1
0
    public void TestAddDigestFeatures()
    {
      Sequence seq = new Sequence("Test", "AAANESAARBBBNPSBBKFFFNITFFRGGGNDTGGR");

      Digest digest = new Digest();
      digest.DigestProtease = ProteaseManager.CreateProtease("Trypsin_TestAddDigestFeatures", true, "RK", "P");
      digest.ProteinSequence = seq;

      digest.MaxMissedCleavages = 0;
      digest.AddDigestFeatures();
      List<DigestPeptideInfo> peptides = (List<DigestPeptideInfo>)seq.Annotation[Digest.PEPTIDE_FEATURE_TYPE];
      Assert.AreEqual(4, peptides.Count);

      digest.MaxMissedCleavages = 1;
      digest.AddDigestFeatures();
      List<DigestPeptideInfo> missedPeptides = (List<DigestPeptideInfo>)seq.Annotation[Digest.PEPTIDE_FEATURE_TYPE];
      Assert.AreEqual(7, missedPeptides.Count);

      IRangeLocationFilter nglycanFilter = new NGlycanFilter();
      digest.MaxMissedCleavages = 0;
      digest.Filter = nglycanFilter;
      digest.AddDigestFeatures();
      List<DigestPeptideInfo> nglycanPeptides = (List<DigestPeptideInfo>)seq.Annotation[Digest.PEPTIDE_FEATURE_TYPE];
      Assert.AreEqual(2, nglycanPeptides.Count);
      Assert.AreEqual("AAANESAAR", nglycanPeptides[0].PeptideSeq);
      Assert.AreEqual("FFFNITFFR", nglycanPeptides[1].PeptideSeq);
    }
 public void TestNGlycanFilter()
 {
   NGlycanFilter filter = new NGlycanFilter();
   filter.SetSequence(new Seq.Sequence("Test", "AAANESAAR"));
   Assert.IsTrue(filter.Accept(new RangeLocation(1, 9)));
   filter.SetSequence(new Seq.Sequence("Test", "BBBNPSBBK"));
   Assert.IsFalse(filter.Accept(new RangeLocation(1, 9)));
   filter.SetSequence(new Seq.Sequence("Test", "FFFNITFFR"));
   Assert.IsTrue(filter.Accept(new RangeLocation(1, 9)));
   filter.SetSequence(new Seq.Sequence("Test", "GGGNDTGGR"));
   Assert.IsFalse(filter.Accept(new RangeLocation(1, 9)));
 }
Example #3
0
        public override IEnumerable <string> Process(string filename)
        {
            FastaFormat ff     = new FastaFormat();
            Digest      digest = new Digest();

            digest.DigestProtease     = ProteaseManager.FindOrCreateProtease("Trypsin", true, "RK", "P");
            digest.MaxMissedCleavages = 1;

            NGlycanFilter filter = new NGlycanFilter();

            digest.Filter = filter;

            string resultFile = filename + ".nglycan";
            Dictionary <string, NGlycanValue> peptideProteinMap = new Dictionary <string, NGlycanValue>();

            using (StreamReader sr = new StreamReader(filename))
            {
                Sequence seq;
                while ((seq = ff.ReadSequence(sr)) != null)
                {
                    digest.ProteinSequence = seq;
                    digest.AddDigestFeatures();

                    if (seq.Annotation.ContainsKey(Digest.PEPTIDE_FEATURE_TYPE))
                    {
                        bool[] isGlycans = filter.IsNglycan;

                        List <DigestPeptideInfo> nglycanPeptides = (List <DigestPeptideInfo>)seq.Annotation[Digest.PEPTIDE_FEATURE_TYPE];
                        foreach (DigestPeptideInfo dpi in nglycanPeptides)
                        {
                            if (!peptideProteinMap.ContainsKey(dpi.PeptideSeq))
                            {
                                StringBuilder sb = new StringBuilder();
                                for (int i = 0; i < dpi.PeptideSeq.Length; i++)
                                {
                                    if (isGlycans[dpi.PeptideLoc.Min - 1 + i])
                                    {
                                        sb.Append(1);
                                    }
                                    else
                                    {
                                        sb.Append(0);
                                    }
                                }

                                NGlycanValue value = new NGlycanValue();
                                value.NGlycanSites = sb.ToString();

                                peptideProteinMap[dpi.PeptideSeq] = value;
                            }

                            peptideProteinMap[dpi.PeptideSeq].Proteins.Add(parser.GetValue(dpi.ProteinName));
                        }
                    }
                }
            }

            List <string> peptides = new List <string>(peptideProteinMap.Keys);

            peptides.Sort();

            using (StreamWriter sw = new StreamWriter(resultFile))
            {
                foreach (string pep in peptides)
                {
                    NGlycanValue value = peptideProteinMap[pep];
                    sw.Write(pep + "\t" + value.NGlycanSites + "\t");
                    bool bFirst = true;
                    foreach (string protein in value.Proteins)
                    {
                        if (bFirst)
                        {
                            bFirst = false;
                            sw.Write(protein);
                        }
                        else
                        {
                            sw.Write(" ! " + protein);
                        }
                    }
                    sw.WriteLine();
                }
            }

            return(new[] { resultFile });
        }