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
                });
            }
        }
        public void LoadFromFile(string fileName)
        {
            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException("Parameter file not found", fileName);
            }

            XElement docRoot = XElement.Load(fileName);

            ApplicationTitle = docRoot.Element("Version").Value;

            MergeResult = Convert.ToBoolean(docRoot.Element("MergeResult").Value);

            ConflictType = ResolveSearchEngineConflictTypeFactory.Find(docRoot.GetChildValue("ConflictType", ResolveSearchEngineConflictTypeFactory.DiscardAll.Name));

            if (docRoot.Element("MinimumEngineAgreeCount") != null)
            {
                MinimumEngineAgreeCount = int.Parse(docRoot.Element("MinimumEngineAgreeCount").Value);
            }

            if (docRoot.Element("MergeResultFromSameEngineButDifferentSearchParameters") != null)
            {
                KeepTopPeptideFromSameEngineButDifferentSearchParameters = bool.Parse(docRoot.Element("MergeResultFromSameEngineButDifferentSearchParameters").Value);
            }

            if (docRoot.Element("PeptideRetrieval") != null)
            {
                PeptideRetrieval = bool.Parse(docRoot.Element("PeptideRetrieval").Value);
            }

            Database.Load(docRoot);

            FalseDiscoveryRate.Load(docRoot);

            Classification.Load(docRoot);

            PeptideFilter.Load(docRoot);

            try
            {
                DatasetList.Load(docRoot);
                DatasetList.ForEach(m => m.Parent = this);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Load dataset error :" + ex.Message);
            }
        }
Exemple #3
0
        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();
        }