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); }
public override IEnumerable <string> Process(string fileName) { var format = new SequestResultTextFormat(); format.Progress = this.Progress; Progress.SetMessage("Reading identified result from " + fileName + " ..."); IIdentifiedResult ir = format.ReadFromFile(fileName); Progress.SetMessage("Removing duplicated peptide ..."); Progress.SetRange(0, ir.Count); for (int i = 0; i < ir.Count; i++) { Progress.SetPosition(i); IIdentifiedProteinGroup group = ir[i]; List <IIdentifiedSpectrum> peps = UniquePeptideDistiller.KeepMaxScorePeptideOnly(group.GetPeptides()); foreach (var protein in group) { protein.Peptides.RemoveAll(m => !peps.Contains(m.Spectrum)); } } string resultFileName = fileName + ".unique"; Progress.SetMessage("Saving proteins to " + resultFileName + " ..."); format.WriteToFile(resultFileName, ir); List <IIdentifiedSpectrum> spectra = ir.GetSpectra(); var peptideFormat = new SequestPeptideTextFormat(format.PeptideFormat.GetHeader()); string peptideFileName = fileName + ".unique.peptides"; Progress.SetMessage("Saving peptides to " + peptideFileName + " ..."); peptideFormat.WriteToFile(peptideFileName, spectra); Progress.SetMessage("Finished."); return(new[] { resultFileName, peptideFileName }); }