public void OnProcessAllTarget(double hcdError, double cidError, FragmentationMode fragmentationMode, int numResultsPerScanToInclude) { IProgress <int> progress = new Progress <int>(ReportGlobalWorkflowProgress); // Make sure to only look at targets that match the fragmentation mode var targetsToProcess = LipidTargetList.Where(x => x.LipidTarget.FragmentationMode == fragmentationMode); // Run global analysis LipidGroupSearchResultList = new List <LipidGroupSearchResult>(); IEnumerable <IGrouping <double, LipidGroupSearchResult> > resultsGrouped; List <LipidGroupSearchResult> lipidGroupSearchResultList; if (AverageSpec) { lipidGroupSearchResultList = GlobalWorkflow.RunGlobalWorkflowAvgSpec(targetsToProcess, LcMsRun, hcdError, cidError, ScoreModel, progress); resultsGrouped = lipidGroupSearchResultList.GroupBy(x => x.SpectrumSearchResult.HcdSpectrum?.IsolationWindow.IsolationWindowTargetMz ?? x.SpectrumSearchResult.CidSpectrum.IsolationWindow.IsolationWindowTargetMz); } else { lipidGroupSearchResultList = GlobalWorkflow.RunGlobalWorkflow(targetsToProcess, LcMsRun, hcdError, cidError, ScoreModel, progress); resultsGrouped = lipidGroupSearchResultList.GroupBy(x => x.SpectrumSearchResult.HcdSpectrum?.ScanNum ?? (double)x.SpectrumSearchResult.CidSpectrum.ScanNum); } // Group results of same scan together // Grab the result(s) with the best score foreach (var group in resultsGrouped) { var groupOrdered = group.OrderByDescending(x => x.Score).ToList(); for (var i = 0; i < numResultsPerScanToInclude && i < groupOrdered.Count; i++) { var resultToAdd = groupOrdered[i]; LipidGroupSearchResultList.Add(resultToAdd); } } OnPropertyChanged("LipidGroupSearchResultList"); progress.Report(0); }
public void LoadMoreLipidTargets(string fileLocation) { IProgress <int> progress = new Progress <int>(ReportLipidTargetLoadProgress); var fileInfo = new FileInfo(fileLocation); var lipidReader = new LipidMapsDbReader <Lipid>(); var lipidList = lipidReader.ReadFile(fileInfo, progress); foreach (var lipid in lipidList) { LipidTargetList.Add(lipid); } OnPropertyChanged("LipidTargetList"); //// Reset and populate the list of lipid classes //this.LipidClassList = new List<LipidClass>(); //var groupByLipidClass = this.LipidTargetList.GroupBy(x => x.LipidTarget.LipidClass); //foreach (LipidClass lipidClass in groupByLipidClass.Select(@group => @group.Key)) //{ // this.LipidClassList.Add(lipidClass); //} //if (this.LipidClassList.Count > 0) //{ // LipidClass lipidClass = this.LipidClassList[0]; // this.CurrentLipidClass = lipidClass; // this.CurrentLipidTargetList = this.LipidTargetList.Where(x => x.LipidClass == lipidClass).ToList(); // OnPropertyChanged("CurrentLipidClass"); //} //OnPropertyChanged("LipidClassList"); //OnPropertyChanged("CurrentLipidTargetList"); // Reset the progress bar back to 0 progress.Report(0); }