public ScatterSeries MakePredictedAnalysisScatterSeries(AnalysisJobItem analysisJobItem, Options options)
        {
            var color = m_SeriesColorDictionary[analysisJobItem.FilePath];

            var scatterSeries = new ScatterSeries
            {
                MarkerSize = 2,
                // Use Cross MarkerType and MarkerStroke (instead of MarkerFill) to improve the graphing performance
                MarkerStroke = OxyColor.FromArgb(color.A, color.R, color.G, color.B),
                MarkerType   = MarkerType.Cross,
                Title        = analysisJobItem.Title,
                Tag          = analysisJobItem,
            };

            foreach (var evidence in analysisJobItem.DataSet.Evidences)
            {
                var filter = AlignmentFilterFactory.Create(analysisJobItem.Format, options);

                if (!filter.ShouldFilter(evidence))
                {
                    var scatterPoint = new ScatterPoint(evidence.ObservedNet, evidence.PredictedNet)
                    {
                        Tag = evidence
                    };

                    scatterSeries.Points.Add(scatterPoint);
                }
            }

            return(scatterSeries);
        }
示例#2
0
        /// <summary>
        /// Process Analysis Job Items according to their individual file types
        /// </summary>
        /// <param name="analysisJobItems">Analysis Job Items</param>
        /// <param name="bWorker"></param>
        /// <returns>Processed Analysis Job Items</returns>
        public IEnumerable <AnalysisJobItem> Process(IEnumerable <AnalysisJobItem> analysisJobItems, BackgroundWorker bWorker)
        {
            // analysisJobItems should have LcmsDataSet field be null
            m_abortRequested = false;

            m_currentItem = 0;
            m_totalItems  = analysisJobItems.Count();

            foreach (var jobItem in analysisJobItems)
            {
                if (bWorker.CancellationPending || m_abortRequested)
                {
                    break;
                }

                OnProgressChanged(new MtdbProgressChangedEventArgs(m_currentItem, m_totalItems, jobItem));
                m_currentJob = jobItem;

                m_analysisReader = PhrpReaderFactory.Create(jobItem.FilePath, ProcessorOptions);

                m_analysisReader.ProgressChanged += analysisReader_ProgressChanged;

                // Reads the jobItem using the reader returned by the Reader Factory
                jobItem.DataSet = m_analysisReader.Read(jobItem.FilePath);

                m_currentItem++;
            }

            return(analysisJobItems);
        }
 public LineAnnotation MakeRegressionLineAnnotation(AnalysisJobItem analysisJobItem)
 {
     return(new LineAnnotation
     {
         Type = LineAnnotationType.LinearEquation,
         Color = OxyColors.Black,
         Intercept = analysisJobItem.DataSet.RegressionResult.Intercept,
         Slope = analysisJobItem.DataSet.RegressionResult.Slope,
         StrokeThickness = 2,
         Layer = AnnotationLayer.AboveSeries,
         LineStyle = LineStyle.Solid,
         Tag = analysisJobItem
     });
 }
        private void ProcessAnalysisJob(object param)
        {
            // Insert database save location here
            var saveDatabaseDialog = new SaveFileDialog();

            if (Options.DatabaseType != DatabaseType.NotSaved)
            {
                if (RestoreDirectory == null)
                {
                    RestoreDirectory = "C:\\";
                }
                saveDatabaseDialog.InitialDirectory = RestoreDirectory;
                saveDatabaseDialog.RestoreDirectory = true;

                if (Options.DatabaseType == DatabaseType.SQLite)
                {
                    saveDatabaseDialog.Filter = "Mass Tag Database (*.mtdb)|*.mtdb|All Files (*.*)|*.*";
                    saveDatabaseDialog.Title  = "Save to MTDB";
                }
                else
                {
                    saveDatabaseDialog.Filter = "Access Database (*.mdb)|*.mdb|All Files (*.*)|*.*";
                    saveDatabaseDialog.Title  = "Save to Access Database";
                }
                saveDatabaseDialog.ShowDialog();
                if (saveDatabaseDialog.FileName != "")
                {
                    RestoreDirectory  = Path.GetDirectoryName(saveDatabaseDialog.FileName);
                    SavedDatabasePath = saveDatabaseDialog.FileName;
                }
            }



            DateTime start  = DateTime.Now;
            var      result = ProcessAnalysisTargets();

            OnAnalysisJobProcessed(new MtdbResultChangedEventArgs(result));
            DateTime end = DateTime.Now;

            Console.WriteLine("Analysis processed after " + (end - start));

            if (File.Exists(SavedDatabasePath))
            {
                ITargetDatabaseReader     reader;
                IEnumerable <LcmsDataSet> databaseDatasets = null;
                var loaded = false;
                MessageBoxResult errorResult = MessageBoxResult.OK;
                if (SavedDatabasePath.EndsWith("mtdb"))
                {
                    reader = new SqLiteTargetDatabaseReader();
                }
                else
                {
                    reader = new AccessTargetDatabaseReader();
                }
                try
                {
                    databaseDatasets = reader.Read(SavedDatabasePath);
                    loaded           = true;
                }
                catch (Exception)
                {
                    errorResult = MessageBox.Show(string.Format("{0} does not contain valid data to be imported into MTDBCreator", SavedDatabasePath),
                                                  "Error loading file", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation);
                }

                if (loaded)
                {
                    foreach (var dataset in databaseDatasets)
                    {
                        var exists        = false;
                        var priorAnalysis = new AnalysisJobItem(dataset.Name, dataset.Tool);
                        priorAnalysis.DataSet = dataset;
                        foreach (var item in AnalysisJobItems)
                        {
                            if (item.Title == priorAnalysis.Title)
                            {
                                item.DataSet = dataset;
                                exists       = true;
                            }
                        }
                        if (!exists)
                        {
                            AnalysisJobItems.Add(priorAnalysis);
                        }
                    }
                }
                else if (errorResult == MessageBoxResult.Cancel)
                {
                    // User cancelled processing
                    var squelch = 1;
                    squelch++;
                    return;
                }
            }

            if (result != null && param == null)
            {
                DateTime procStart = DateTime.Now;
                result = ProcessAnalysisDatabase();

                if (result == null && BackgroundWorkProcessHelper.MostRecentResult != null)
                {
                    // This condition will be true if MultithreadingEnabled = false
                    result = BackgroundWorkProcessHelper.MostRecentResult;

                    if (Database == null && result is TargetDatabase)
                    {
                        Database = (TargetDatabase)result;
                    }
                }

                OnAnalysisJobProcessed(new MtdbResultChangedEventArgs(result));
                end = DateTime.Now;
                Console.WriteLine("Alignment processed after " + (end - start) + " total");
                Console.WriteLine("Alignment took " + (end - procStart));

                if (result != null && saveDatabaseDialog.FileName != "")
                {
                    DateTime saveStart = DateTime.Now;

                    SaveAnalysisDatabase(saveDatabaseDialog.FileName);
                    IsDatabaseSaved = true;
                    end             = DateTime.Now;
                    Console.WriteLine("Database Save took " + (end - saveStart));
                }
            }
        }
示例#5
0
        /// <summary>
        /// Create a MTDB with the given files
        /// </summary>
        /// <param name="paths">Paths to the files to process</param>
        /// <param name="dbFileName">Name of MTDB to create</param>
        /// <returns></returns>
        public static TargetDatabase CreateDB(List <string> paths, string dbFileName)
        {
            var options           = new Options();
            var analysisProcessor = new AnalysisJobProcessor(options);
            var mtdbProcessor     = new MtdbProcessor(options);
            var bWorker           = new BackgroundWorker();
            var writer            = new SqLiteTargetDatabaseWriter();

            var reader           = new SqLiteTargetDatabaseReader();
            var existingDatabase = new TargetDatabase();

            IEnumerable <LcmsDataSet> priorDataSets = new List <LcmsDataSet>();

            if (File.Exists(dbFileName))
            {
                priorDataSets    = reader.Read(dbFileName);
                existingDatabase = reader.ReadDb(dbFileName);
            }
            var priorDatasetList = priorDataSets.Select(x => x.Name).ToList();
            var listJobs         = new List <AnalysisJobItem>();

            foreach (var path in paths)
            {
                if (File.Exists(path))
                {
                    var tool    = DetermineTool(path);
                    var jobName = path.Split('\\').Last();
                    if (tool == LcmsIdentificationTool.NOT_SUPPORTED)
                    {
                        Console.WriteLine(jobName + " is not a supported LCMS format for MTDBCreator;\nExcluding this file from MTDB creation\n");
                    }
                    else if (priorDatasetList.Any(x => jobName.Contains(x)))
                    {
                        Console.WriteLine(jobName + " is part of prior analysis;\nExcluding from reading portion of MTDB creation\n");
                    }
                    else
                    {
                        var individualJob = new AnalysisJobItem(path, tool);
                        listJobs.Add(individualJob);
                    }
                }
                else
                {
                    Console.WriteLine(path + " does not exist;\nExcluding this file in MTDB creation\n");
                }
            }
            if (listJobs.Count != 0)
            {
                var processedjobs = analysisProcessor.Process(listJobs, bWorker);

                var datasetList = processedjobs.Select(job => job.DataSet).ToList();
                if (priorDataSets != null)
                {
                    datasetList.AddRange(priorDataSets);
                }
                var database = mtdbProcessor.Process(datasetList, bWorker);

                writer.Write(database, options, dbFileName);

                return(database);
            }

            return(existingDatabase);
        }