public void TestSort()
        {
            var mph1     = new IdentifiedSpectrum();
            var peptide1 = new IdentifiedPeptide(mph1);

            var mph2     = new IdentifiedSpectrum();
            var peptide2 = new IdentifiedPeptide(mph2);

            var mpro1 = new IdentifiedProtein("Protein1");

            mpro1.Peptides.Add(peptide1);
            mpro1.Peptides.Add(peptide2);

            var mpro2 = new IdentifiedProtein("Protein2");

            mpro2.Peptides.Add(peptide1);

            var mpro3 = new IdentifiedProtein("Protein3");

            mpro3.Peptides.Add(peptide2);

            var mpros = new List <IdentifiedProtein>();

            mpros.Add(mpro3);
            mpros.Add(mpro2);
            mpros.Add(mpro1);

            mpros.Sort();

            Assert.AreEqual(mpro1, mpros[0]);
            Assert.AreEqual(mpro2, mpros[1]);
            Assert.AreEqual(mpro3, mpros[2]);
        }
Example #2
0
        public List <IIdentifiedSpectrum> ReadFromFile(string fileName)
        {
            var      result = new List <IIdentifiedSpectrum>();
            XElement root   = XElement.Load(fileName);
            var      psms   = root.FindElement("psms").FindElements("psm");

            foreach (var psm in psms)
            {
                IIdentifiedSpectrum spec = new IdentifiedSpectrum();
                spec.Id            = psm.FindAttribute("psm_id").Value.StringAfter("decoy_");
                spec.FromDecoy     = psm.FindAttribute("decoy").Value.Equals("true");
                spec.SpScore       = double.Parse(psm.FindElement("svm_score").Value);
                spec.QValue        = double.Parse(psm.FindElement("q_value").Value);
                spec.Score         = double.Parse(psm.FindElement("pep").Value);
                spec.Probability   = double.Parse(psm.FindElement("p_value").Value);
                spec.TheoreticalMH = double.Parse(psm.FindElement("calc_mass").Value);
                spec.Query.FileScan.Experimental = Path.GetFileName(fileName).StringBefore(".");
                var pep    = new IdentifiedPeptide(spec);
                var pepseq = psm.FindElement("peptide_seq");
                pep.Sequence = pepseq.FindAttribute("seq").Value;
                pep.AddProtein(psm.FindElement("protein_id").Value);
                result.Add(spec);
            }

            return(result);
        }
        public Dictionary <int, IIdentifiedSpectrum> ParseSpectrumMap(string fileName)
        {
            SQLiteDBHelper sqlite = new SQLiteDBHelper(fileName);

            Dictionary <int, IIdentifiedSpectrum> result = new Dictionary <int, IIdentifiedSpectrum>();

            var fileMap = ParseFileMap(fileName);

            //读取肽段列表
            var peptideReader = sqlite.ExecuteReader("select sh.SpectrumID, sh.FirstScan, sh.LastScan, sh.RetentionTime, sh.Charge, mp.FileID, sh.Mass from spectrumheaders as sh, MassPeaks as mp where sh.MassPeakID=mp.MassPeakID", null);

            Progress.SetMessage("Parsing peptides ...");

            while (peptideReader.Read())
            {
                var specid = peptideReader.GetInt32(0);

                IIdentifiedSpectrum spectrum = new IdentifiedSpectrum();
                result[specid] = spectrum;

                spectrum.Query.FileScan.FirstScan = peptideReader.GetInt32(1);
                spectrum.Query.FileScan.LastScan  = peptideReader.GetInt32(2);
                //retention time
                spectrum.Query.FileScan.Charge       = peptideReader.GetInt32(4);
                spectrum.Query.FileScan.Experimental = fileMap[peptideReader.GetInt32(5)];
                spectrum.ExperimentalMH = peptideReader.GetDouble(6);
                spectrum.Rank           = 1;
            }

            return(result);
        }
Example #4
0
    public void TestSort()
    {
      var mph1 = new IdentifiedSpectrum();
      var peptide1 = new IdentifiedPeptide(mph1);

      var mph2 = new IdentifiedSpectrum();
      var peptide2 = new IdentifiedPeptide(mph2);

      var mpro1 = new IdentifiedProtein("Protein1");
      mpro1.Peptides.Add(peptide1);
      mpro1.Peptides.Add(peptide2);

      var mpro2 = new IdentifiedProtein("Protein2");
      mpro2.Peptides.Add(peptide1);

      var mpro3 = new IdentifiedProtein("Protein3");
      mpro3.Peptides.Add(peptide2);

      var mpros = new List<IdentifiedProtein>();
      mpros.Add(mpro3);
      mpros.Add(mpro2);
      mpros.Add(mpro1);

      mpros.Sort();

      Assert.AreEqual(mpro1, mpros[0]);
      Assert.AreEqual(mpro2, mpros[1]);
      Assert.AreEqual(mpro3, mpros[2]);
    }
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumReferenceConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            var mp1 = new IdentifiedPeptide(mph);

            mp1.AddProtein("11111");

            var mp2 = new IdentifiedPeptide(mph);

            mp2.AddProtein("22222");
            mp2.AddProtein("33333");

            Assert.AreEqual("Reference", io.Name);
            Assert.AreEqual("11111 ! 22222/33333", io.GetProperty(mph));

            io.SetProperty(mph, "44444/55555 ! 66666");

            Assert.AreEqual(2, mph.Peptides[0].Proteins.Count);
            Assert.AreEqual("44444", mph.Peptides[0].Proteins[0]);
            Assert.AreEqual("55555", mph.Peptides[0].Proteins[1]);

            Assert.AreEqual(1, mph.Peptides[1].Proteins.Count);
            Assert.AreEqual("66666", mph.Peptides[1].Proteins[0]);
        }
    public void TestSort()
    {
      IdentifiedSpectrum sp1 = new IdentifiedSpectrum();
      sp1.Query.FileScan.LongFileName = "YEAST_0612_G1_SAX_080806_09.17702.17702.2.out";
      new IdentifiedPeptide(sp1) { Sequence = "K.GFFSFATQK.L" };

      IdentifiedSpectrum sp2 = new IdentifiedSpectrum();
      sp2.Query.FileScan.LongFileName = "YEAST_0612_G1_SAX_080806_09.17707.17708.1.out";
      new IdentifiedPeptide(sp2) { Sequence = "K.GFFSFATQK.L" };

      IdentifiedSpectrum sp3 = new IdentifiedSpectrum();
      sp3.Query.FileScan.LongFileName = "YEAST_0612_G1_SAX_080806_09.7707.7708.2.out";
      new IdentifiedPeptide(sp3) { Sequence = "K.GFFSFATQK.L" };

      IdentifiedSpectrum sp4 = new IdentifiedSpectrum();
      sp4.Query.FileScan.LongFileName = "YEAST_0612_G1_SAX_080806_09.7707.7708.2.out";
      new IdentifiedPeptide(sp4) { Sequence = "K.AAAAAAAK.L" };

      List<IIdentifiedSpectrum> spectra = new List<IIdentifiedSpectrum>();
      spectra.Add(sp2);
      spectra.Add(sp1);
      spectra.Add(sp3);
      spectra.Add(sp4);

      spectra.Sort();

      Assert.AreSame(sp4, spectra[0]);
      Assert.AreSame(sp3, spectra[1]);
      Assert.AreSame(sp1, spectra[2]);
      Assert.AreSame(sp2, spectra[3]);
    }
Example #7
0
    private static List<IIdentifiedProtein> InitProteins()
    {
      var mph1 = new IdentifiedSpectrum();
      mph1.Query.FileScan.Experimental = "EXP1";
      var mp1 = new IdentifiedPeptide(mph1);
      mp1.AddProtein("Protein1");
      mp1.AddProtein("Protein2");
      mp1.Sequence = "SEQ1";

      var mph2 = new IdentifiedSpectrum();
      mph2.Query.FileScan.Experimental = "EXP2";
      var mp2 = new IdentifiedPeptide(mph2);
      mp2.AddProtein("Protein1");
      mp2.AddProtein("Protein3");
      mp2.Sequence = "SEQ2";

      var mpro1 = new IdentifiedProtein("Protein1");
      mpro1.Peptides.Add(mp1);
      mpro1.Peptides.Add(mp2);

      var mpro2 = new IdentifiedProtein("Protein2");
      mpro2.Peptides.Add(mp1);

      var mpro3 = new IdentifiedProtein("Protein3");
      mpro3.Peptides.Add(mp2);

      var result = new List<IIdentifiedProtein>();

      result.Add(mpro3);
      result.Add(mpro2);
      result.Add(mpro1);

      return result;
    }
Example #8
0
        public void TestKeepDistinctPeptideOnly()
        {
            var spectrum1 = new IdentifiedSpectrum();
            var pep1      = spectrum1.NewPeptide();

            var spectrum2 = new IdentifiedSpectrum();
            var pep2      = spectrum2.NewPeptide();

            var spectrum3 = new IdentifiedSpectrum();
            var pep3      = spectrum3.NewPeptide();

            var spectrum4 = new IdentifiedSpectrum();
            var pep4      = spectrum4.NewPeptide();

            var protein1 = new IdentifiedProtein();

            protein1.Peptides.Add(pep1);
            protein1.Peptides.Add(pep2);

            var protein2 = new IdentifiedProtein();

            protein2.Peptides.Add(pep1);
            protein2.Peptides.Add(pep3);

            var protein3 = new IdentifiedProtein();

            protein3.Peptides.Add(pep2);
            protein3.Peptides.Add(pep4);

            var g1 = new IdentifiedProteinGroup();

            g1.Add(protein1);

            var g2 = new IdentifiedProteinGroup();

            g2.Add(protein2);

            var g3 = new IdentifiedProteinGroup();

            g3.Add(protein3);

            IIdentifiedResult ir = new IdentifiedResult();

            ir.Add(g1);
            ir.Add(g2);
            ir.Add(g3);

            new DistinctResultDistiller().KeepDistinctPeptideOnly(ir);

            Assert.AreEqual(2, ir.Count);
            Assert.AreEqual(g2, ir[0]);
            Assert.AreEqual(g3, ir[1]);

            Assert.AreEqual(1, ir[0].GetPeptides().Count);
            Assert.AreEqual(spectrum3, ir[0].GetPeptides()[0]);

            Assert.AreEqual(1, ir[1].GetPeptides().Count);
            Assert.AreEqual(spectrum4, ir[1].GetPeptides()[0]);
        }
 public void TestDiffOfMassPPM()
 {
   var sp = new IdentifiedSpectrum();
   sp.TheoreticalMH = 1000;
   sp.ExperimentalMH = 999.95;
   sp.Query.Charge = 1;
   Assert.AreEqual(0.05, sp.TheoreticalMinusExperimentalMass, 0.01);
 }
        public void TestDiffOfMassPPM()
        {
            var sp = new IdentifiedSpectrum();

            sp.TheoreticalMH  = 1000;
            sp.ExperimentalMH = 999.95;
            sp.Query.Charge   = 1;
            Assert.AreEqual(0.05, sp.TheoreticalMinusExperimentalMass, 0.01);
        }
        /// <summary>
        ///
        /// Get the query/peptide map from pNovo result.
        ///
        /// </summary>
        /// <param name="filename">pNovo proteins file</param>
        /// <param name="minRank">Minimum rank of peptide identified in same spectrum</param>
        /// <param name="minScore">Minimum score of peptide identified in same spectrum</param>
        /// <returns>Query/peptide map</returns>
        public List <IIdentifiedSpectrum> ParsePeptides(string filename, int maxRank, double minScore)
        {
            var result = new List <IIdentifiedSpectrum>();

            SequestFilename sf = null;

            int    charge = 2;
            double expmh  = 0;

            using (var sr = new StreamReader(filename))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    var parts = line.Split('\t');
                    if (parts.Length <= 5)
                    { //spectrum information
                        var seqcount = Convert.ToInt32(parts.Last());
                        if (seqcount == 0)
                        {
                            continue;
                        }

                        sf     = parser.GetValue(parts[0]);
                        expmh  = MyConvert.ToDouble(parts[1]);
                        charge = Convert.ToInt32(parts[2]);
                    }
                    else
                    {
                        int curIndex = Convert.ToInt32(parts[0]);

                        if (curIndex <= maxRank)
                        {
                            var score = MyConvert.ToDouble(parts[2]);
                            if (score < minScore)
                            {
                                continue;
                            }

                            var curSpectrum = new IdentifiedSpectrum();
                            curSpectrum.Query.FileScan = sf;
                            curSpectrum.Query.Charge   = charge;
                            curSpectrum.ExperimentalMH = expmh;
                            curSpectrum.Score          = score;
                            result.Add(curSpectrum);

                            IdentifiedPeptide pep = new IdentifiedPeptide(curSpectrum);
                            pep.Sequence = ModifySequence(parts[9]);
                            pep.Spectrum.TheoreticalMH = MyConvert.ToDouble(parts[11]);
                            pep.Spectrum.Rank          = curIndex;
                        }
                    }
                }
            }
            return(result);
        }
 private static void AddSpectrum(List<IIdentifiedSpectrum> isoSpectra, string seq, string site)
 {
   var spec = new IdentifiedSpectrum();
   spec.AddPeptide(new IdentifiedPeptide(spec)
   {
     Sequence = seq,
     SiteProbability = site
   });
   isoSpectra.Add(spec);
 }
Example #13
0
        private IIdentifiedProteinGroup ReadNextProteinGroup(StreamReader filein,
                                                             Dictionary <string, IIdentifiedSpectrum> peptideMap,
                                                             ref string lastLine)
        {
            while (!IsProteinLine(lastLine) && (lastLine = filein.ReadLine()) != null)
            {
            }

            if (lastLine == null)
            {
                return(null);
            }

            IIdentifiedProteinGroup result = new IdentifiedProteinGroup();

            while (IsProteinLine(lastLine))
            {
                IIdentifiedProtein protein = new IdentifiedProtein();
                this.proteinConverter.SetProperty(protein, lastLine);
                result.Add(protein);

                lastLine = filein.ReadLine();
            }

            var peptides = new List <IIdentifiedSpectrum>();

            while (!IsProteinLine(lastLine))
            {
                IIdentifiedSpectrum mphit = new IdentifiedSpectrum();
                this.peptideConverter.SetProperty(mphit, lastLine);
                string id = mphit.Query.FileScan.LongFileName + "-" + mphit.Rank;
                if (!peptideMap.ContainsKey(id))
                {
                    peptideMap[id] = mphit;
                }
                else
                {
                    mphit = peptideMap[id];
                }

                peptides.Add(mphit);

                lastLine = filein.ReadLine();

                if (lastLine == null || lastLine.Trim().Length == 0)
                {
                    break;
                }
            }

            peptides.Sort();
            result.AddIdentifiedSpectra(peptides);

            return(result);
        }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumModificationConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      Assert.AreEqual("Modification", io.Name);
      io.SetProperty(mph, "O18(2)");
      Assert.AreEqual("O18(2)", io.GetProperty(mph));

      Assert.AreEqual("O18(2)", mph.Modifications);
    }
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumScoreConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            Assert.AreEqual("Score", io.Name);
            io.SetProperty(mph, "32.1");
            Assert.AreEqual("32.1", io.GetProperty(mph));

            Assert.AreEqual(32.1, mph.Score, 0.01);
        }
    public void Test()
    {
      AbstractPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumRankConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      Assert.AreEqual("Rank", io.Name);
      io.SetProperty(mph, "2");
      Assert.AreEqual("2", io.GetProperty(mph));

      Assert.AreEqual(2, mph.Rank);
    }
Example #17
0
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumMissCleavageConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            Assert.AreEqual("MissCleavage", io.Name);
            io.SetProperty(mph, "1");
            Assert.AreEqual("1", io.GetProperty(mph));

            Assert.AreEqual(1, mph.NumMissedCleavages);
        }
    public void Test()
    {
      AbstractPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumChargeConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      Assert.AreEqual("Charge", io.Name);
      io.SetProperty(mph, "1");
      Assert.AreEqual("1", io.GetProperty(mph));

      Assert.AreEqual(1, mph.Query.Charge);
    }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumScoreConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      Assert.AreEqual("Score", io.Name);
      io.SetProperty(mph, "32.1");
      Assert.AreEqual("32.1", io.GetProperty(mph));

      Assert.AreEqual(32.1, mph.Score, 0.01);
    }
        public void Test()
        {
            AbstractPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumChargeConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            Assert.AreEqual("Charge", io.Name);
            io.SetProperty(mph, "1");
            Assert.AreEqual("1", io.GetProperty(mph));

            Assert.AreEqual(1, mph.Query.Charge);
        }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumExpectValueConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      Assert.AreEqual("ExpectValue", io.Name);
      io.SetProperty(mph, "0.1234");
      Assert.AreEqual("1.23E-001", io.GetProperty(mph));

      Assert.AreEqual(0.1234, mph.ExpectValue, 0.0001);
    }
Example #22
0
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumModificationConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            Assert.AreEqual("Modification", io.Name);
            io.SetProperty(mph, "O18(2)");
            Assert.AreEqual("O18(2)", io.GetProperty(mph));

            Assert.AreEqual("O18(2)", mph.Modifications);
        }
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumDeltaScoreConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            Assert.AreEqual("DeltaScore", io.Name);
            io.SetProperty(mph, "0.12");
            Assert.AreEqual("0.12", io.GetProperty(mph));

            Assert.AreEqual(0.12, mph.DeltaScore, 0.01);
        }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumDeltaScoreConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      Assert.AreEqual("DeltaScore", io.Name);
      io.SetProperty(mph, "0.12");
      Assert.AreEqual("0.12", io.GetProperty(mph));

      Assert.AreEqual(0.12, mph.DeltaScore, 0.01);
    }
        private static void AddSpectrum(List <IIdentifiedSpectrum> isoSpectra, string seq, string site)
        {
            var spec = new IdentifiedSpectrum();

            spec.AddPeptide(new IdentifiedPeptide(spec)
            {
                Sequence        = seq,
                SiteProbability = site
            });
            isoSpectra.Add(spec);
        }
Example #26
0
        protected bool ParseFromOutfileLineWithoutId(List <string> sLines, IdentifiedSpectrum entry)
        {
            if (sLines.Count < 11)
            {
                return(false);
            }

            sLines.Insert(3, "0");

            return(ParseFromOutfileLineWithId(sLines, entry));
        }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumMissCleavageConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      Assert.AreEqual("MissCleavage", io.Name);
      io.SetProperty(mph, "1");
      Assert.AreEqual("1", io.GetProperty(mph));

      Assert.AreEqual(1, mph.NumMissedCleavages);
    }
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumExpectValueConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            Assert.AreEqual("ExpectValue", io.Name);
            io.SetProperty(mph, "0.1234");
            Assert.AreEqual("1.23E-001", io.GetProperty(mph));

            Assert.AreEqual(0.1234, mph.ExpectValue, 0.0001);
        }
Example #29
0
        public void Test()
        {
            AbstractPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumRankConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            Assert.AreEqual("Rank", io.Name);
            io.SetProperty(mph, "2");
            Assert.AreEqual("2", io.GetProperty(mph));

            Assert.AreEqual(2, mph.Rank);
        }
    public void TestGetSequenceString()
    {
      var mph = new IdentifiedSpectrum();

      var mp1 = new IdentifiedPeptide(mph);
      mp1.Sequence = "P1";

      var mp2 = new IdentifiedPeptide(mph);
      mp2.Sequence = "P2";

      Assert.AreEqual("P1 ! P2", MascotPeptideHitTextWriter.GetSequenceString(mph));
    }
    public void Test()
    {
      AbstractPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumFileScanConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();
      mph.Query.FileScan.ShortFileName = "ABC,1-2";

      Assert.AreEqual("\"File, Scan(s)\"", io.Name);
      Assert.AreEqual("ABC,1 - 2", io.GetProperty(mph));

      io.SetProperty(mph, "DEF,3");
      Assert.AreEqual("DEF,3", mph.Query.FileScan.ShortFileName);
    }
        private void CheckPlexType(IsobaricType plexType, string expectHeader, string expectValue)
        {
            var ann = new IdentifiedSpectrum();

            var pqr = new IsobaricItem()
            {
                PlexType         = plexType,
                Valid            = true,
                ValidProbability = 0.0005
            };

            var refItems = plexType.GetDefinition().Items;

            foreach (var item in refItems)
            {
                pqr[item.Index] = item.Mass;
            }

            ann.SetIsobaricItem(pqr);

            //从实例构建converter
            var converter = new ITraqItemPlexConverter <IAnnotation>();
            List <IPropertyConverter <IAnnotation> > converters = new List <IPropertyConverter <IAnnotation> >();

            converters.Add(converter);
            converters.AddRange(converter.GetRelativeConverter(new IAnnotation[] { ann }.ToList()));
            CompositePropertyConverter <IAnnotation> finalConverter = new CompositePropertyConverter <IAnnotation>(converters, ',');

            if (exportToConsole)
            {
                Console.WriteLine(finalConverter.Name);
            }
            Assert.AreEqual(expectHeader, finalConverter.Name);

            var line1 = finalConverter.GetProperty(ann);

            if (exportToConsole)
            {
                Console.WriteLine(line1);
            }
            Assert.AreEqual(expectValue, line1);

            var protein2 = new IdentifiedSpectrum();

            //从factory根据header构建converter
            var finalC = IdentifiedSpectrumPropertyConverterFactory.GetInstance().GetConverters(finalConverter.Name, ',');

            finalC.SetProperty(protein2, line1);

            var line2 = finalConverter.GetProperty(protein2);

            Assert.AreEqual(line1, line2);
        }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumTheoreticalMHConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();
      mph.IsPrecursorMonoisotopic = true;

      Assert.AreEqual("MH+", io.Name);
      io.SetProperty(mph, "2000.0000");
      Assert.AreEqual("2000.00000", io.GetProperty(mph));

      Assert.AreEqual(2000.0000 - Atom.H.MonoMass + Atom.ElectronMass, mph.TheoreticalMass, 0.0001);
    }
    public void TestKeepDistinctPeptideOnly()
    {
      var spectrum1 = new IdentifiedSpectrum();
      var pep1 = spectrum1.NewPeptide();

      var spectrum2 = new IdentifiedSpectrum();
      var pep2 = spectrum2.NewPeptide();

      var spectrum3 = new IdentifiedSpectrum();
      var pep3 = spectrum3.NewPeptide();

      var spectrum4 = new IdentifiedSpectrum();
      var pep4 = spectrum4.NewPeptide();

      var protein1 = new IdentifiedProtein();
      protein1.Peptides.Add(pep1);
      protein1.Peptides.Add(pep2);

      var protein2 = new IdentifiedProtein();
      protein2.Peptides.Add(pep1);
      protein2.Peptides.Add(pep3);

      var protein3 = new IdentifiedProtein();
      protein3.Peptides.Add(pep2);
      protein3.Peptides.Add(pep4);

      var g1 = new IdentifiedProteinGroup();
      g1.Add(protein1);

      var g2 = new IdentifiedProteinGroup();
      g2.Add(protein2);

      var g3 = new IdentifiedProteinGroup();
      g3.Add(protein3);

      IIdentifiedResult ir = new IdentifiedResult();
      ir.Add(g1);
      ir.Add(g2);
      ir.Add(g3);

      new DistinctResultDistiller().KeepDistinctPeptideOnly(ir);

      Assert.AreEqual(2, ir.Count);
      Assert.AreEqual(g2, ir[0]);
      Assert.AreEqual(g3, ir[1]);

      Assert.AreEqual(1, ir[0].GetPeptides().Count);
      Assert.AreEqual(spectrum3, ir[0].GetPeptides()[0]);

      Assert.AreEqual(1, ir[1].GetPeptides().Count);
      Assert.AreEqual(spectrum4, ir[1].GetPeptides()[0]);
    }
        private IIdentifiedSpectrum ParsePeptide(string line)
        {
            IIdentifiedSpectrum result = new IdentifiedSpectrum();

            string[] parts = line.Split(splits);
            result.Query.FileScan.Experimental = parts[bestLocalizationRawFileIndex];
            result.Query.FileScan.FirstScan    = int.Parse(parts[bestLocalizationScanNumberIndex]);
            result.Query.FileScan.LastScan     = result.Query.FileScan.FirstScan;
            result.Query.FileScan.Charge       = int.Parse(parts[chargeIndex]);
            result.Score       = MyConvert.ToDouble(parts[scoreIndex]);
            result.DeltaScore  = MyConvert.ToDouble(parts[scoreDiffIndex]);
            result.ExpectValue = MyConvert.ToDouble(parts[pepIndex]);
            result.Probability = MyConvert.ToDouble(parts[localizationProbIndex]);

            string seq           = parts[sequenceWindowIndex];
            string modifications = parts[modificationWindowIndex];

            seq = GetModifiedSequence(seq, modifications);
            seq = seq.Replace("_", "");

            Match m = modReg.Match(seq);

            if (m.Success)
            {
                while (m.Success)
                {
                    string mod = m.Groups[1].Value;
                    if (!modCharMap.ContainsKey(mod))
                    {
                        modCharMap[mod] = ModificationConsts.MODIFICATION_CHAR.Substring(modCharMap.Count + 1, 1);
                    }
                    m = m.NextMatch();
                }

                seq = ReplaceModificationStringToChar(seq);
            }

            result.NewPeptide().Sequence = seq;

            StringBuilder sb = new StringBuilder();

            foreach (var mod in modCharMap)
            {
                if (seq.Contains(mod.Value))
                {
                    sb.Append(MyConvert.Format("{0}={1};", mod.Value, mod.Key));
                }
            }
            result.Modifications = sb.ToString();

            return(result);
        }
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumTheoreticalMHConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            mph.IsPrecursorMonoisotopic = true;

            Assert.AreEqual("MH+", io.Name);
            io.SetProperty(mph, "2000.0000");
            Assert.AreEqual("2000.00000", io.GetProperty(mph));

            Assert.AreEqual(2000.0000 - Atom.H.MonoMass + Atom.ElectronMass, mph.TheoreticalMass, 0.0001);
        }
    public void TestSetIons()
    {
      var sp = new IdentifiedSpectrum();
      sp.Ions = "10/20";
      Assert.AreEqual(10, sp.MatchedIonCount);
      Assert.AreEqual(20, sp.TheoreticalIonCount);

      sp.Ions = "10|20";
      Assert.AreEqual(10, sp.MatchedIonCount);
      Assert.AreEqual(20, sp.TheoreticalIonCount);

      Assert.AreEqual("10/20", sp.Ions);
    }
Example #38
0
        public void Test()
        {
            AbstractPropertyConverter <IdentifiedSpectrum> io = new IdentifiedSpectrumFileScanConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            mph.Query.FileScan.ShortFileName = "ABC,1-2";

            Assert.AreEqual("\"File, Scan(s)\"", io.Name);
            Assert.AreEqual("ABC,1 - 2", io.GetProperty(mph));

            io.SetProperty(mph, "DEF,3");
            Assert.AreEqual("DEF,3", mph.Query.FileScan.ShortFileName);
        }
    public void TestGetProteinString()
    {
      var mph = new IdentifiedSpectrum();

      var mp1 = new IdentifiedPeptide(mph);
      mp1.AddProtein("P1");

      var mp2 = new IdentifiedPeptide(mph);
      mp2.AddProtein("P2");
      mp2.AddProtein("P3");

      Assert.AreEqual("P1 ! P2/P3", MascotPeptideHitTextWriter.GetProteinString(mph));
    }
        public void TestSetIons()
        {
            var sp = new IdentifiedSpectrum();

            sp.Ions = "10/20";
            Assert.AreEqual(10, sp.MatchedIonCount);
            Assert.AreEqual(20, sp.TheoreticalIonCount);

            sp.Ions = "10|20";
            Assert.AreEqual(10, sp.MatchedIonCount);
            Assert.AreEqual(20, sp.TheoreticalIonCount);

            Assert.AreEqual("10/20", sp.Ions);
        }
Example #41
0
        public void TestBuildProteins()
        {
            var mph1 = new IdentifiedSpectrum();

            mph1.Query.FileScan.Experimental = "EXP1";
            var mp1 = new IdentifiedPeptide(mph1);

            mp1.AddProtein("Protein1");
            mp1.AddProtein("Protein2");

            var mph2 = new IdentifiedSpectrum();

            mph2.Query.FileScan.Experimental = "EXP2";
            var mp2 = new IdentifiedPeptide(mph2);

            mp2.AddProtein("Protein1");
            mp2.AddProtein("Protein3");

            var mphs = new List <IIdentifiedSpectrum>();

            mphs.Add(mph1);
            mphs.Add(mph2);

            List <IIdentifiedProtein> proteins = MascotUtils.BuildProteins(mphs);

            Assert.AreEqual(3, proteins.Count);

            foreach (IdentifiedProtein mp in proteins)
            {
                if (mp.Name.Equals("Protein1"))
                {
                    Assert.AreEqual(2, mp.Peptides.Count);
                    continue;
                }

                if (mp.Name.Equals("Protein2"))
                {
                    Assert.AreEqual(1, mp.Peptides.Count);
                    Assert.AreEqual(mp1, mp.Peptides[0]);
                    continue;
                }

                if (mp.Name.Equals("Protein3"))
                {
                    Assert.AreEqual(1, mp.Peptides.Count);
                    Assert.AreEqual(mp2, mp.Peptides[0]);
                    continue;
                }
            }
        }
        protected override void ParseUserParams(IdentifiedSpectrum spectrum, Dictionary <string, string> userParams)
        {
            base.ParseUserParams(spectrum, userParams);
            string value;

            if (userParams.TryGetValue("IsotopeError", out value))
            {
                spectrum.IsotopeError = int.Parse(value);
            }
            if (userParams.TryGetValue("MS2IonCurrent", out value))
            {
                spectrum.MatchedTIC = double.Parse(value);
            }
        }
        public void TestGetSequenceString()
        {
            var mph = new IdentifiedSpectrum();

            var mp1 = new IdentifiedPeptide(mph);

            mp1.Sequence = "P1";

            var mp2 = new IdentifiedPeptide(mph);

            mp2.Sequence = "P2";

            Assert.AreEqual("P1 ! P2", MascotPeptideHitTextWriter.GetSequenceString(mph));
        }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io =
        new IdentifiedSpectrumTheoreticalMinusExperimentalMassConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();
      mph.TheoreticalMass = 1000.1234;

      Assert.AreEqual("Diff(MH+)", io.Name);

      io.SetProperty(mph, "0.12340");
      Assert.AreEqual(1000.0000, mph.ExperimentalMass, 0.0001);

      Assert.AreEqual("0.12340", io.GetProperty(mph));
    }
Example #45
0
    public void TestModifications()
    {
      var mphit = new IdentifiedSpectrum();
      Assert.AreEqual(new string[0], mphit.GetModifications());

      string expect = "Oxidation (M)";
      mphit.Modifications = expect;
      Assert.AreEqual(1, mphit.GetModifications().Length);
      Assert.AreEqual(expect, mphit.GetModifications()[0]);

      mphit.Modifications = "Oxidation (M); Label:18O(1) (C-term)";
      Assert.AreEqual(2, mphit.GetModifications().Length);
      Assert.AreEqual("Oxidation (M)", mphit.GetModifications()[0]);
      Assert.AreEqual("Label:18O(1) (C-term)", mphit.GetModifications()[1]);
    }
    public void TestDistinctPeptides()
    {
      IdentifiedProtein protein = new IdentifiedProtein();

      IdentifiedSpectrum sp1 = new IdentifiedSpectrum();
      IdentifiedSpectrum sp2 = new IdentifiedSpectrum();

      protein.Peptides.Add(new IdentifiedPeptide(sp1));
      protein.Peptides.Add(new IdentifiedPeptide(sp1));
      protein.Peptides.Add(new IdentifiedPeptide(sp2));

      Assert.AreEqual(3, protein.Peptides.Count);
      Assert.AreEqual(2, protein.GetSpectra().Count);
      Assert.AreEqual(2, protein.GetDistinctPeptides().Count());
    }
        public void TestGetProteinString()
        {
            var mph = new IdentifiedSpectrum();

            var mp1 = new IdentifiedPeptide(mph);

            mp1.AddProtein("P1");

            var mp2 = new IdentifiedPeptide(mph);

            mp2.AddProtein("P2");
            mp2.AddProtein("P3");

            Assert.AreEqual("P1 ! P2/P3", MascotPeptideHitTextWriter.GetProteinString(mph));
        }
        public void Test()
        {
            IPropertyConverter <IdentifiedSpectrum> io =
                new IdentifiedSpectrumTheoreticalMinusExperimentalMassConverter <IdentifiedSpectrum>();
            var mph = new IdentifiedSpectrum();

            mph.TheoreticalMass = 1000.1234;

            Assert.AreEqual("Diff(MH+)", io.Name);

            io.SetProperty(mph, "0.12340");
            Assert.AreEqual(1000.0000, mph.ExperimentalMass, 0.0001);

            Assert.AreEqual("0.12340", io.GetProperty(mph));
        }
    private void CheckPlexType(IsobaricType plexType, string expectHeader, string expectValue)
    {
      var ann = new IdentifiedSpectrum();

      var pqr = new IsobaricItem()
      {
        PlexType = plexType,
        Valid = true,
        ValidProbability = 0.0005
      };

      var refItems = plexType.GetDefinition().Items;
      foreach (var item in refItems)
      {
        pqr[item.Index] = item.Mass;
      }

      ann.SetIsobaricItem(pqr);

      //从实例构建converter
      var converter = new ITraqItemPlexConverter<IAnnotation>();
      List<IPropertyConverter<IAnnotation>> converters = new List<IPropertyConverter<IAnnotation>>();
      converters.Add(converter);
      converters.AddRange(converter.GetRelativeConverter(new IAnnotation[] { ann }.ToList()));
      CompositePropertyConverter<IAnnotation> finalConverter = new CompositePropertyConverter<IAnnotation>(converters, ',');

      if (exportToConsole)
      {
        Console.WriteLine(finalConverter.Name);
      }
      Assert.AreEqual(expectHeader, finalConverter.Name);

      var line1 = finalConverter.GetProperty(ann);
      if (exportToConsole)
      {
        Console.WriteLine(line1);
      }
      Assert.AreEqual(expectValue, line1);

      var protein2 = new IdentifiedSpectrum();

      //从factory根据header构建converter
      var finalC = IdentifiedSpectrumPropertyConverterFactory.GetInstance().GetConverters(finalConverter.Name, ',');
      finalC.SetProperty(protein2, line1);

      var line2 = finalConverter.GetProperty(protein2);
      Assert.AreEqual(line1, line2);
    }
        public void Test()
        {
            var mph = new IdentifiedSpectrum();

            var io = new AnnotationConverter <IdentifiedSpectrum>("TEST");

            Assert.AreEqual("TEST", io.Name);
            Assert.AreEqual("", io.GetProperty(mph));

            io = new AnnotationConverter <IdentifiedSpectrum>("TEST", "DEFAULT_VALUE");
            Assert.AreEqual("DEFAULT_VALUE", io.GetProperty(mph));

            io.SetProperty(mph, "TEST_VALUE");
            Assert.AreEqual("TEST_VALUE", io.GetProperty(mph));
            Assert.AreEqual("TEST_VALUE", mph.Annotations["TEST"]);
        }
    public void Test()
    {
      var mph = new IdentifiedSpectrum();

      var io = new AnnotationConverter<IdentifiedSpectrum>("TEST");

      Assert.AreEqual("TEST", io.Name);
      Assert.AreEqual("", io.GetProperty(mph));

      io = new AnnotationConverter<IdentifiedSpectrum>("TEST", "DEFAULT_VALUE");
      Assert.AreEqual("DEFAULT_VALUE", io.GetProperty(mph));

      io.SetProperty(mph, "TEST_VALUE");
      Assert.AreEqual("TEST_VALUE", io.GetProperty(mph));
      Assert.AreEqual("TEST_VALUE", mph.Annotations["TEST"]);
    }
        public void TestModifications()
        {
            var mphit = new IdentifiedSpectrum();

            Assert.AreEqual(new string[0], mphit.GetModifications());

            string expect = "Oxidation (M)";

            mphit.Modifications = expect;
            Assert.AreEqual(1, mphit.GetModifications().Length);
            Assert.AreEqual(expect, mphit.GetModifications()[0]);

            mphit.Modifications = "Oxidation (M); Label:18O(1) (C-term)";
            Assert.AreEqual(2, mphit.GetModifications().Length);
            Assert.AreEqual("Oxidation (M)", mphit.GetModifications()[0]);
            Assert.AreEqual("Label:18O(1) (C-term)", mphit.GetModifications()[1]);
        }
Example #53
0
    public void TestBuildProteins()
    {
      var mph1 = new IdentifiedSpectrum();
      mph1.Query.FileScan.Experimental = "EXP1";
      var mp1 = new IdentifiedPeptide(mph1);
      mp1.AddProtein("Protein1");
      mp1.AddProtein("Protein2");

      var mph2 = new IdentifiedSpectrum();
      mph2.Query.FileScan.Experimental = "EXP2";
      var mp2 = new IdentifiedPeptide(mph2);
      mp2.AddProtein("Protein1");
      mp2.AddProtein("Protein3");

      var mphs = new List<IIdentifiedSpectrum>();
      mphs.Add(mph1);
      mphs.Add(mph2);

      List<IIdentifiedProtein> proteins = MascotUtils.BuildProteins(mphs);

      Assert.AreEqual(3, proteins.Count);

      foreach (IdentifiedProtein mp in proteins)
      {
        if (mp.Name.Equals("Protein1"))
        {
          Assert.AreEqual(2, mp.Peptides.Count);
          continue;
        }

        if (mp.Name.Equals("Protein2"))
        {
          Assert.AreEqual(1, mp.Peptides.Count);
          Assert.AreEqual(mp1, mp.Peptides[0]);
          continue;
        }

        if (mp.Name.Equals("Protein3"))
        {
          Assert.AreEqual(1, mp.Peptides.Count);
          Assert.AreEqual(mp2, mp.Peptides[0]);
          continue;
        }
      }
    }
    public void SetUp()
    {
      s1 = new IdentifiedSpectrum();
      s1.Query.FileScan.ShortFileName = "YEAST_0610_G1_SAX_080811_01,11110";
      s1.Query.Charge = 2;
      s1.Score = 3.0;
      s1.AddPeptide(new IdentifiedPeptide(s1) { Sequence = "R.#VK*PDR.T" });

      s2 = new IdentifiedSpectrum();
      s2.Query.FileScan.ShortFileName = "YEAST_0610_G1_SAX_080811_01,11110";
      s2.Query.Charge = 2;
      s2.Score = 2.0;
      s2.AddPeptide(new IdentifiedPeptide(s2) { Sequence = "R.#VK*PDR.T" });

      s3 = new IdentifiedSpectrum();
      s3.Score = 1.0;
      s3.Query.FileScan.ShortFileName = "YEAST_0610_G1_SAX_080811_01,11110";
      s3.Query.Charge = 3;
      s3.AddPeptide(new IdentifiedPeptide(s3) { Sequence = "R.#VK*PDDEFER.T" });

      s4 = new IdentifiedSpectrum();
      s4.Query.FileScan.ShortFileName = "YEAST_0610_G1_SAX_080811_01,11111";
      s4.Query.Charge = 3;
      s4.Score = 5.0;
      s4.AddPeptide(new IdentifiedPeptide(s4) { Sequence = "R.#VK*PDDSKEIEFER.T" });

      s5 = new IdentifiedSpectrum();
      s5.Query.FileScan.ShortFileName = "YEAST_0610_G1_SAX_080811_01,11111";
      s5.Query.Charge = 3;
      s5.Score = 4.0;
      s5.AddPeptide(new IdentifiedPeptide(s5) { Sequence = "R.#VK*PEESKEIEFER.T" });

      s6 = new IdentifiedSpectrum();
      s6.Query.FileScan.ShortFileName = "YEAST_0610_G1_SAX_080811_01,11111";
      s6.Query.Charge = 2;
      s6.Score = 3.0;
      s6.AddPeptide(new IdentifiedPeptide(s6) { Sequence = "R.#VK*PEESEFER.T" });

      s7 = new IdentifiedSpectrum();
      s7.Query.FileScan.ShortFileName = "YEAST_0610_G1_SAX_080811_01,11111";
      s7.Query.Charge = 2;
      s7.Score = 3.0;
      s7.AddPeptide(new IdentifiedPeptide(s7) { Sequence = "R.#VKPEESEFER*.T" });
    }
Example #55
0
        //  1.   1 /  1          0 1964.9940  0.0000  5.6970  2133.9  21/30  sw|P02666|CASBBOVIN   +1  K.FQSEEQQQTEDELQDK.I
        protected bool ParseFromOutfileLine(string line, IdentifiedSpectrum entry)
        {
            //  Console.Out.WriteLine(line);
            //   dfadfas  entry.IsProteinFromOutFile = true;
            string sLine = line.Trim().Replace('/', ' ');

            string[] sLines = this.reg.Split(sLine);
            if (sLines.Length < itemIndex.MinCount)
            {
                return(false);
            }

            entry.Rank                = int.Parse(sLines[itemIndex.RankIndex]);
            entry.SpRank              = int.Parse(sLines[itemIndex.SpRankIndex]);
            entry.TheoreticalMH       = MyConvert.ToDouble(sLines[itemIndex.TheoreticalMHIndex]);
            entry.DeltaScore          = MyConvert.ToDouble(sLines[itemIndex.DeltaScoreIndex]);
            entry.Score               = MyConvert.ToDouble(sLines[itemIndex.ScoreIndex]);
            entry.SpScore             = MyConvert.ToDouble(sLines[itemIndex.SpScoreIndex]);
            entry.MatchedIonCount     = int.Parse(sLines[itemIndex.MatchedIonCountIndex]);
            entry.TheoreticalIonCount = int.Parse(sLines[itemIndex.TheoreticalIonCountIndex]);

            entry.ClearPeptides();
            string sequence;

            if ('+' != sLines[itemIndex.SequenceIndex][0])
            {
                entry.DuplicatedCount = 0;
                sequence = sLines[itemIndex.SequenceIndex];
            }
            else
            {
                entry.DuplicatedCount = int.Parse(sLines[itemIndex.SequenceIndex].Substring(1, sLines[itemIndex.SequenceIndex].Length - 1));
                sequence = sLines[itemIndex.SequenceIndex + 1];
            }

            CheckSequenceValid(ref sequence);

            var sp = new IdentifiedPeptide(entry);

            sp.Sequence = sequence;
            sp.AddProtein(sLines[itemIndex.ProteinIndex]);

            return(true);
        }
    public void Test()
    {
      IPropertyConverter<IdentifiedSpectrum> io = new IdentifiedSpectrumSequenceConverter<IdentifiedSpectrum>();
      var mph = new IdentifiedSpectrum();

      var mp1 = new IdentifiedPeptide(mph);
      mp1.Sequence = "AAAAA";

      var mp2 = new IdentifiedPeptide(mph);
      mp2.Sequence = "BBBBB";

      Assert.AreEqual("Sequence", io.Name);
      Assert.AreEqual("AAAAA ! BBBBB", io.GetProperty(mph));

      io.SetProperty(mph, "CCCCC ! DDDDD ! EEEEE");
      Assert.AreEqual(3, mph.Peptides.Count);
      Assert.AreEqual("CCCCC", mph.Peptides[0].Sequence);
      Assert.AreEqual("DDDDD", mph.Peptides[1].Sequence);
      Assert.AreEqual("EEEEE", mph.Peptides[2].Sequence);
    }
Example #57
0
    public void TestFilter2()
    {
      var spectrum = new IdentifiedSpectrum();
      spectrum.Query.FileScan.LongFileName = "ABDCDD.12.123.2.dat";

      var pro1 = new IdentifiedProtein("P1");
      pro1.Peptides.Add(new IdentifiedPeptide(spectrum) { Sequence = "AAAAAAA" });

      var pro2 = new IdentifiedProtein("P2");
      pro2.Peptides.Add(new IdentifiedPeptide(spectrum) { Sequence = "BBBBBBB" });

      var g1 = new IdentifiedProteinGroup();
      g1.Add(pro1);
      g1.Add(pro2);

      IdentifiedResult ir = new IdentifiedResult();
      ir.Add(g1);

      Assert.AreEqual(1, ir.Count);
      Assert.AreEqual(2, ir[0].Count);
      Assert.AreEqual(1, ir.GetSpectra().Count);

      ir.Filter(m =>
      {
        return m.Sequence.Contains('A');
      });

      Assert.AreEqual(1, ir.Count);
      Assert.AreEqual(1, ir[0].Count);
      Assert.AreEqual(1, ir.GetSpectra().Count);
      Assert.AreSame(pro1, ir[0][0]);

      ir.Filter(m =>
      {
        return m.Sequence.Contains('C');
      });

      Assert.AreEqual(0, ir.Count);
    }
    public void TestCalculateCoverage()
    {
      IdentifiedProtein protein = new IdentifiedProtein();
      //total 30 amino acids
      protein.Sequence = "ABCDEDFDEFDSESLKJFDJLSLGFGDDGD";

      IdentifiedSpectrum s1 = new IdentifiedSpectrum();
      IdentifiedPeptide p1 = new IdentifiedPeptide(s1);
      p1.Sequence = "B.CDEDF.D";
      protein.Peptides.Add(p1);

      protein.CalculateCoverage();
      Assert.AreEqual(16.67, protein.Coverage, 0.01);

      IdentifiedSpectrum s2 = new IdentifiedSpectrum();
      IdentifiedPeptide p2 = new IdentifiedPeptide(s2);
      p2.Sequence = "F.DSESL.K";
      protein.Peptides.Add(p2);

      protein.CalculateCoverage();
      Assert.AreEqual(33.33, protein.Coverage, 0.01);

      IdentifiedSpectrum s3 = new IdentifiedSpectrum();
      IdentifiedPeptide p3 = new IdentifiedPeptide(s3);
      p3.Sequence = "L.SLGF.G";
      protein.Peptides.Add(p3);

      protein.CalculateCoverage();
      Assert.AreEqual(46.67, protein.Coverage, 0.01);

      IdentifiedSpectrum s4 = new IdentifiedSpectrum();
      IdentifiedPeptide p4 = new IdentifiedPeptide(s4);
      p4.Sequence = "L.SLGFG.D";
      protein.Peptides.Add(p4);

      protein.CalculateCoverage();
      Assert.AreEqual(50.00, protein.Coverage, 0.01);
    }
    public void TestUniqueCount()
    {
      var protein = new IdentifiedProtein();
      var spectrum = new IdentifiedSpectrum();

      var peptides = new List<IIdentifiedPeptide>();
      peptides.Add(new IdentifiedPeptide(spectrum){
        Sequence = "ILLLAR"
      });

      peptides.Add(new IdentifiedPeptide(spectrum){
        Sequence = "LILIAR"
      });

      Assert.AreEqual(1, IdentifiedPeptideUtils.GetUniquePeptideCount(peptides));

      peptides.Add(new IdentifiedPeptide(new IdentifiedSpectrum())
      {
        Sequence = "LIIIAR"
      });

      Assert.AreEqual(1, IdentifiedPeptideUtils.GetUniquePeptideCount(peptides));
    }
    public void TestKeepMaxScorePeptideOnly()
    {
      List<IIdentifiedSpectrum> spectra = new List<IIdentifiedSpectrum>();
      spectra.Add(new IdentifiedSpectrum() { Score = 3.0 });
      spectra.Add(new IdentifiedSpectrum() { Score = 2.0 });
      
      spectra.ForEach(m =>
      {
        m.AddPeptide(new IdentifiedPeptide(m) { Sequence = "A1" });
        m.Charge = 2;
      });

      IdentifiedSpectrum other = new IdentifiedSpectrum() { Score = 2.0, Charge = 2 };
      other.AddPeptide(new IdentifiedPeptide(other) { Sequence = "B1" });
      spectra.Add(other);

      List<IIdentifiedSpectrum> filtered = UniquePeptideDistiller.KeepMaxScorePeptideOnly(spectra);
      Assert.AreEqual(2, filtered.Count);
      Assert.AreEqual(3.0, filtered[0].Score);
      Assert.AreEqual("A1", filtered[0].Sequence);
      Assert.AreEqual(2.0, filtered[1].Score);
      Assert.AreEqual("B1", filtered[1].Sequence);
    }