Exemple #1
0
        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);
        }
Exemple #2
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);
        }