public double GetPep(IIdentifiedPeptideList peptides, string[] sequences, int minPeptides, int minUniquePeptides, PeptideScoring peptideScoring, int nsilac) { if (peptideSequences.Length < minPeptides) { return(1.1); } double result = 1; int uniqueCount = 0; for (int i = 0; i < peptideSequences.Length; i++) { int index = Array.BinarySearch(sequences, peptideSequences[i]); if (peptides.IsUniqueGroup(index)) { uniqueCount++; } result *= peptides.GetPep(index, peptideScoring, nsilac); } if (uniqueCount < minUniquePeptides) { return(1.1); } return(result); }
public static int[] ExtractProteinGroups(TmpIdentifiedProteinGroup[] tmpProteinGroups, IIdentifiedPeptideList peptides, double proteinFDR, PeptideScoring peptideScoring, int nsilac, int minPeptides, int minUniquePeptides, string reversePrefix) { double[] peps = new double[tmpProteinGroups.Length]; string[] sequences = AllPeptideSequences(peptides); for (int i = 0; i < tmpProteinGroups.Length; i++) { peps[i] = tmpProteinGroups[i].GetPep(peptides, sequences, minPeptides, minUniquePeptides, peptideScoring, nsilac); } int[] o = ArrayUtil.Order(peps); int revCount = 0; List <double> goodThresholdValues = new List <double>(); for (int i = 0; i < tmpProteinGroups.Length; i++) { if (tmpProteinGroups[o[i]].HasReverseProteins(reversePrefix)) { revCount++; } double forwCount = i + 1.0 - revCount; if (revCount / forwCount <= proteinFDR && peps[o[i]] < 1.01) { goodThresholdValues.Add(peps[o[i]]); } } double thresholdValue = ArrayUtil.Max(goodThresholdValues.ToArray()); revCount = 0; List <int> oo = new List <int>(); for (int i = 0; i < tmpProteinGroups.Length; i++) { if (tmpProteinGroups[o[i]].HasReverseProteins(reversePrefix)) { revCount++; } double forwCount = i + 1.0 - revCount; if (revCount / forwCount <= proteinFDR || peps[o[i]] < thresholdValue) { oo.Add(o[i]); } } string[] dummy1 = new string[oo.Count]; for (int i = 0; i < oo.Count; i++) { dummy1[i] = tmpProteinGroups[oo[i]].ProteinIds[0]; } int[] ooo = ArrayUtil.Order(dummy1); o = ArrayUtil.SubArray(oo, ooo); return(o); }