public void RemoveConflictSpectrum(List <IIdentifiedSpectrum> conflicted) { if (conflicted.Count > 0) { IFalseDiscoveryRateCalculator calc = Options.Parent.FalseDiscoveryRate.GetFalseDiscoveryRateCalculator(); var map = OptimalResults.ToDictionary(m => m.Condition); var bin = Options.Parent.Classification.BuildSpectrumBin(conflicted); foreach (var oi in bin) { var oldOi = map[oi.Condition]; foreach (var s in oi.Spectra) { if (s.FromDecoy) { oldOi.Result.PeptideCountFromDecoyDB--; } else { oldOi.Result.PeptideCountFromTargetDB--; } oldOi.Spectra.Remove(s); } oldOi.Result.FalseDiscoveryRate = calc.Calculate(oldOi.Result.PeptideCountFromDecoyDB, oldOi.Result.PeptideCountFromTargetDB); } } }
/// <summary> /// 获取筛选后的谱图列表。 /// </summary> /// <returns></returns> public List <IIdentifiedSpectrum> GetOptimalSpectra() { List <IIdentifiedSpectrum> result = new List <IIdentifiedSpectrum>(); OptimalResults.ForEach(m => result.AddRange(m.Spectra)); return(result); }
public void CalculateToleranceScore() { var scoreFunc = this.Options.ScoreFunction; OptimalResults.ForEach(m => m.CalculateToleranceScore(scoreFunc)); }
public void KeepOptimalResultInSetOnly(HashSet <IIdentifiedSpectrum> spectra) { OptimalResults.ForEach(m => m.KeepOptimalResultInSetOnly(spectra)); CalculateToleranceScore(); }