public IdentifiedSpectrumBuilderResult Build(string parameterFile) { Options = new BuildSummaryOptions(parameterFile); Options.DatasetList.RemoveDisabled(); IIdentifiedProteinBuilder proteinBuilder = new IdentifiedProteinBuilder(); IIdentifiedProteinGroupBuilder groupBuilder = new IdentifiedProteinGroupBuilder(); var fdrCalc = Options.FalseDiscoveryRate.GetFalseDiscoveryRateCalculator(); BuildResult = new DatasetList(); //从配置进行初始化 BuildResult.InitFromOptions(Options.DatasetList, this.Progress, parameterFile); var totalCount = BuildResult.GetOptimalSpectrumCount(); string optimalResultFile = FileUtils.ChangeExtension(parameterFile, ".optimal"); using (var sw = new StreamWriter(optimalResultFile)) { new OptimalFileTextWriter().WriteToStream(sw, BuildResult); UniformProteinFdrOptimalResultCalculator proteinCalc = new UniformProteinFdrOptimalResultCalculator(fdrCalc, Options.GetDecoyGroupFilter()) { Progress = this.Progress }; Progress.SetMessage("Filtering PSMs by protein fdr {0}, using peptide fdr {1}...", Options.FalseDiscoveryRate.FdrValue, Options.FalseDiscoveryRate.MaxPeptideFdr); var groupFilter = Options.FalseDiscoveryRate.FilterOneHitWonder ? new IdentifiedProteinGroupSingleWonderPeptideCountFilter(Options.FalseDiscoveryRate.MinOneHitWonderPeptideCount) : null; var ret = proteinCalc.GetOptimalResultForGroupFilter(BuildResult, Options.FalseDiscoveryRate.MaxPeptideFdr, Options.FalseDiscoveryRate.FdrValue, groupFilter); //只保留通过筛选的蛋白质包含的PSMs。 BuildResult.KeepOptimalResultInSetOnly(ret.AcceptedSpectra); GC.Collect(); GC.WaitForPendingFinalizers(); sw.WriteLine("After SimpleProteinFDR filter {0} with condition {1}, required peptide fdr = {2} ", ret.ProteinFdr, ret.ProteinCondition, ret.PeptideFdr); BuildResult.ForEach(ds => { sw.WriteLine("Dataset {0}", ds.Options.Name); OptimalResultConditionUtils.WriteSpectrumBin(sw, ds, f1, f2); }); //sw.WriteLine(); //new OptimalFileTextWriter().WriteToStream(sw, BuildResult); return(new IdentifiedSpectrumBuilderResult() { Spectra = ret.AcceptedSpectra.ToList(), PeptideFDR = ret.PeptideFdr, ProteinFDR = ret.ProteinFdr }); } }
private void WriteScoreMap(StreamWriter sw, DatasetList BuildResult, ProteinFdrFilteredItem item) { if (item.ProteinCount == 0) { return; } BuildResult.BuildSpectrumBin(); BuildResult.KeepOptimalResultInSetOnly(item.AcceptedSpectra); sw.WriteLine(MyConvert.Format("Filtering condition = {0}, PeptideFdr = {1}", item.ProteinCondition, item.PeptideFdr)); BuildResult.ForEach(ds => { sw.WriteLine("Dataset {0}", ds.Options.Name); OptimalResultConditionUtils.WriteSpectrumBin(sw, ds, f1, f2); }); sw.WriteLine(); }