public static int DescendingProbabilityScore(ProteinGroupMatch left, ProteinGroupMatch right) { int comparison = -(left.ProbabilityScore().CompareTo(right.ProbabilityScore())); if (comparison != 0) { return(comparison); } else { return(left.Target.CompareTo(right.Target)); } }
public ProteinGroupMatches SearchLatest(List <PeptideMatch> peptides)//, IDictionary<string, List<Protein>> dicOfProteins)//, List<Protein> AllProteins)// Dictionary<string, List<Protein>> dicOfPeptides) { Dictionary <string, PeptideMatch> dicOfPeptideMatches = new Dictionary <string, PeptideMatch>(); foreach (PeptideMatch match in peptides) { dicOfPeptideMatches.Add(match.peptide.BaseSequence, match); } Dictionary <Protein, List <string> > allPossibleProteins = new Dictionary <Protein, List <string> >(); foreach (PeptideMatch match in peptides) //foreach (string peptideSequence in dicOfProteins.Keys) { Protein protein = match.peptide.Parent; //foreach (Protein protein in dicOfProteins[peptideSequence]) { if (!allPossibleProteins.ContainsKey(protein)) { allPossibleProteins.Add(protein, new List <string>()); } allPossibleProteins[protein].Add(match.peptide.Sequence); } } options.ConSole.WriteLine("Merging undistinguishable proteins..."); foreach (Protein protein in allPossibleProteins.Keys) { allPossibleProteins[protein].Sort(); } //Merge only undistinguishable protein sequences //Dictionary<Protein, List<Protein>> dicOfSimilarProteins = new Dictionary<Protein,List<Protein>>(); ProteinGroupMatches proteinMatches = new ProteinGroupMatches(); List <Protein> proteins = new List <Protein>(allPossibleProteins.Keys); for (int i = 0; i < proteins.Count; i++) { ProteinGroupMatch groupMatch = new ProteinGroupMatch(); groupMatch.Proteins.Add(proteins[i]); foreach (string sequence in allPossibleProteins[proteins[i]]) { if (dicOfPeptideMatches.ContainsKey(sequence)) { groupMatch.PeptideMatches.Add(dicOfPeptideMatches[sequence]); } } for (int j = i + 1; j < proteins.Count;) { bool isSame = false; if (allPossibleProteins[proteins[i]].Count == allPossibleProteins[proteins[j]].Count) { isSame = true; for (int k = 0; k < allPossibleProteins[proteins[i]].Count; k++) { if (allPossibleProteins[proteins[i]][k].CompareTo(allPossibleProteins[proteins[j]][k]) != 0) { isSame = false; } } } if (isSame) { proteins.RemoveAt(j); groupMatch.Proteins.Add(proteins[j]); } else { j++; } } proteinMatches.Add(groupMatch); } options.ConSole.WriteLine("Found " + proteinMatches.Count + " protein groups."); return(proteinMatches); }
public static int AscendingProbabilityScore(ProteinGroupMatch left, ProteinGroupMatch right) { return(left.ProbabilityScore().CompareTo(right.ProbabilityScore())); }