private Task Process() { Counter readerCounter = new Counter(); Counter searchCounter = new Counter(); readerCounter.progressChange += ReadProgressChanged; searchCounter.progressChange += SearchProgressChanged; // build pepeptides Peptide.To.SetCysteine(ConfigureParameters.Access.Cysteine); IProteinReader proteinReader = new FastaReader(); List <IProtein> proteins = proteinReader.Read(SearchingParameters.Access.FastaFile); List <IProtein> decoyProteins = new List <IProtein>(); foreach (IProtein protein in proteins) { IProtein p = new BaseProtein(); p.SetSequence(MultiThreadingSearchHelper.Reverse(protein.Sequence())); decoyProteins.Add(p); } List <string> peptides = MultiThreadingSearchHelper.GeneratePeptides(proteins); List <string> decoyPeptides = MultiThreadingSearchHelper.GeneratePeptides(decoyProteins); // build glycans GlycanBuilder glycanBuilder = new GlycanBuilder( SearchingParameters.Access.HexNAc, SearchingParameters.Access.Hex, SearchingParameters.Access.Fuc, SearchingParameters.Access.NeuAc, SearchingParameters.Access.NeuGc, SearchingParameters.Access.ComplexInclude, SearchingParameters.Access.HybridInclude, SearchingParameters.Access.MannoseInclude); glycanBuilder.Build(); int index = 1; foreach (string file in SearchingParameters.Access.MSMSFiles) { ReadingCounter = 0; ProgressCounter = 0; UpdateProgress(100); Readingprogress(100); UpdateSignal($"Searching...({index++}/{SearchingParameters.Access.MSMSFiles.Count})"); MultiThreadingSearch search = new MultiThreadingSearch(file, readerCounter, searchCounter, peptides, decoyPeptides, glycanBuilder); search.Run(); UpdateSignal("Analyzing..."); Analyze(file, search.Target(), search.Decoy(), glycanBuilder); } UpdateSignal("Done"); return(Task.CompletedTask); }
private void Analyze(string msPath, List <SearchResult> targets, List <SearchResult> decoys, GlycanBuilder glycanBuilder) { FDRFilter filter = new FDRFilter(SearchingParameters.Access.FDRValue); filter.set_data(targets, decoys); filter.Init(); List <SearchResult> results = filter.Filter(); string path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(msPath), System.IO.Path.GetFileNameWithoutExtension(msPath) + ".csv"); MultiThreadingSearchHelper.ReportResults(path, results, glycanBuilder.GlycanMaps()); }