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); }
/// <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)); } } }
/// <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); }