private void AddNeoTaskButton_Click(object sender, RoutedEventArgs e) { var dialog = new NeoSearchTaskWindow(); if (dialog.ShowDialog() == true) { var ye5 = dialog.TheTask; foreach (MetaMorpheusTask task in NeoLoadTomls.LoadTomls(ye5)) { AddTaskToCollection(task); } UpdateTaskGuiStuff(); } }
private static void Main(string[] args) { Console.WriteLine("Welcome to MetaMorpheus"); Console.WriteLine(GlobalVariables.MetaMorpheusVersion); var p = new FluentCommandLineParser <ApplicationArguments>(); p.Setup(arg => arg.Tasks) .As('t', "tasks") .SetDefault(new List <string>()); p.Setup(arg => arg.MetaTasks) .As('m', "meta-task") .SetDefault(new List <string>()); p.Setup(arg => arg.Spectra) .As('s', "spectra") .Required(); p.Setup(arg => arg.Databases) .As('d', "databases") .Required(); var result = p.Parse(args); if (p.Object.MetaTasks.Count != 0 || p.Object.Tasks.Count != 0) { if (!result.HasErrors) { MetaMorpheusEngine.WarnHandler += WarnHandler; MetaMorpheusEngine.OutProgressHandler += MyEngine_outProgressHandler; MetaMorpheusEngine.StartingSingleEngineHander += MyEngine_startingSingleEngineHander; MetaMorpheusEngine.FinishedSingleEngineHandler += MyEngine_finishedSingleEngineHandler; MetaMorpheusTask.WarnHandler += WarnHandler; MetaMorpheusTask.LogHandler += LogHandler; MetaMorpheusTask.StartingSingleTaskHander += MyTaskEngine_startingSingleTaskHander; MetaMorpheusTask.FinishedSingleTaskHandler += MyTaskEngine_finishedSingleTaskHandler; MetaMorpheusTask.FinishedWritingFileHandler += MyTaskEngine_finishedWritingFileHandler; foreach (var db in p.Object.Databases) { if (!Path.GetExtension(db).Equals(".fasta")) { GlobalVariables.AddMods(UsefulProteomicsDatabases.ProteinDbLoader.GetPtmListFromProteinXml(db).OfType <ModificationWithLocation>()); } } List <(string, MetaMorpheusTask)> taskList = new List <(string, MetaMorpheusTask)>(); for (int i = 0; i < p.Object.Tasks.Count; i++) { var filePath = p.Object.Tasks[i]; var uhum = Toml.ReadFile(filePath, MetaMorpheusTask.tomlConfig); switch (uhum.Get <string>("TaskType")) { case "Search": var ye1 = Toml.ReadFile <SearchTask>(filePath, MetaMorpheusTask.tomlConfig); taskList.Add(("Task" + (i + 1) + "SearchTask", ye1)); break; case "Calibrate": var ye2 = Toml.ReadFile <CalibrationTask>(filePath, MetaMorpheusTask.tomlConfig); taskList.Add(("Task" + (i + 1) + "CalibrationTask", ye2)); break; case "Gptmd": var ye3 = Toml.ReadFile <GptmdTask>(filePath, MetaMorpheusTask.tomlConfig); taskList.Add(("Task" + (i + 1) + "GptmdTask", ye3)); break; case "XLSearch": var ye4 = Toml.ReadFile <XLSearchTask>(filePath, MetaMorpheusTask.tomlConfig); taskList.Add(("Task" + (i + 1) + "XLSearchTask", ye4)); break; case "Neo": Console.WriteLine("Neo tasks are meta-tasks that rely on several other tasks. Please use -m for meta instead of -t. Skipping."); break; default: Console.WriteLine(uhum.Get <string>("TaskType") + " is not a known task type! Skipping."); break; } } for (int i = 0; i < p.Object.MetaTasks.Count; i++) { var filePath = p.Object.MetaTasks[i]; var uhum = Toml.ReadFile(filePath, MetaMorpheusTask.tomlConfig); switch (uhum.Get <string>("TaskType")) { case "Search": Console.WriteLine("Search tasks are individual tasks. Please use -t for task instead of -m. Skipping."); break; case "Calibrate": Console.WriteLine("Calibrate tasks are individual tasks. Please use -t for task instead of -m. Skipping."); break; case "Gptmd": Console.WriteLine("Gptmd tasks are individual tasks. Please use -t for task instead of -m. Skipping."); break; case "XLSearch": Console.WriteLine("XLSearch tasks are individual tasks. Please use -t for task instead of -m. Skipping."); break; case "Neo": var ye5 = Toml.ReadFile <NeoSearchTask>(filePath, MetaMorpheusTask.tomlConfig); foreach (MetaMorpheusTask task in NeoLoadTomls.LoadTomls(ye5)) { taskList.Add(("Task" + (taskList.Count + 1) + ye5.TaskType, ye5)); } break; default: Console.WriteLine(uhum.Get <string>("TaskType") + " is not a known task type! Skipping."); break; } } List <string> startingRawFilenameList = p.Object.Spectra.Select(b => Path.GetFullPath(b)).ToList(); List <DbForTask> startingXmlDbFilenameList = p.Object.Databases.Select(b => new DbForTask(Path.GetFullPath(b), IsContaminant(b))).ToList(); var MatchingChars = from len in Enumerable.Range(0, startingRawFilenameList.Min(s => s.Length)).Reverse() let possibleMatch = startingRawFilenameList.First().Substring(0, len) where startingRawFilenameList.All(f => f.StartsWith(possibleMatch, StringComparison.Ordinal)) select possibleMatch; string outputFolder = Path.Combine(Path.GetDirectoryName(MatchingChars.First()), @"$DATETIME"); EverythingRunnerEngine a = new EverythingRunnerEngine(taskList, startingRawFilenameList, startingXmlDbFilenameList, outputFolder); try { a.Run(); } catch (Exception e) { while (e.InnerException != null) { e = e.InnerException; } var message = "Run failed, Exception: " + e.Message; Console.WriteLine(message); } } else { Console.WriteLine("Error Text:" + result.ErrorText); } } else { Console.WriteLine("Error Text: No toml file was specified. Use -t for tasks or -m for meta-tasks."); } }
private void AddAFile(string draggedFilePath) { // this line is NOT used because .xml.gz (extensions with two dots) mess up with Path.GetExtension //var theExtension = Path.GetExtension(draggedFilePath).ToLowerInvariant(); // we need to get the filename before parsing out the extension because if we assume that everything after the dot // is the extension and there are dots in the file path (i.e. in a folder name), this will mess up var filename = Path.GetFileName(draggedFilePath); var theExtension = filename.Substring(filename.IndexOf(".")).ToLowerInvariant(); switch (theExtension) { case ".raw": var versionCheckerResult = MyFileManager.ValidateThermoMsFileReaderVersion(); if (versionCheckerResult.Equals(MyFileManager.ThermoMsFileReaderVersionCheck.IncorrectVersion)) { GuiWarnHandler(null, new StringEventArgs("Warning! Thermo MSFileReader is not version 3.0 SP2; a crash may result from searching this .raw file", null)); } else if (versionCheckerResult.Equals(MyFileManager.ThermoMsFileReaderVersionCheck.DllsNotFound)) { GuiWarnHandler(null, new StringEventArgs("Warning! Cannot find Thermo MSFileReader (v3.0 SP2 is preferred); a crash may result from searching this .raw file", null)); } goto case ".mzml"; case ".mzml": RawDataForDataGrid zz = new RawDataForDataGrid(draggedFilePath); if (!ExistRaw(rawDataObservableCollection, zz)) { rawDataObservableCollection.Add(zz); } UpdateFileSpecificParamsDisplayJustAdded(Path.ChangeExtension(draggedFilePath, ".toml")); UpdateOutputFolderTextbox(); break; case ".mzml.gz": // not implemented yet case ".fasta.gz": // not implemented yet GuiWarnHandler(null, new StringEventArgs("Cannot read, try uncompressing: " + draggedFilePath, null)); break; case ".xml": case ".xml.gz": case ".fasta": case ".fa": ProteinDbForDataGrid uu = new ProteinDbForDataGrid(draggedFilePath); if (!ExistDa(proteinDbObservableCollection, uu)) { proteinDbObservableCollection.Add(uu); if (theExtension.Equals(".xml") || theExtension.Equals(".xml.gz")) { try { GlobalVariables.AddMods(UsefulProteomicsDatabases.ProteinDbLoader.GetPtmListFromProteinXml(draggedFilePath).OfType <ModificationWithLocation>()); } catch (Exception ee) { MessageBox.Show(ee.ToString()); GuiWarnHandler(null, new StringEventArgs("Cannot read: " + draggedFilePath, null)); proteinDbObservableCollection.Remove(uu); } } } break; case ".toml": var tomlFile = Toml.ReadFile(draggedFilePath, MetaMorpheusTask.tomlConfig); if (tomlFile.Keys.Contains("PrecursorMassTolerance") && tomlFile.Keys.Contains("ProductMassTolerance") && tomlFile.Keys.Count == 2) { // do nothing; it's a ppm suggested tolerance toml from calibration, this gets read in elsewhere } else { try { switch (tomlFile.Get <string>("TaskType")) { case "Search": var ye1 = Toml.ReadFile <SearchTask>(draggedFilePath, MetaMorpheusTask.tomlConfig); AddTaskToCollection(ye1); break; case "Calibrate": var ye2 = Toml.ReadFile <CalibrationTask>(draggedFilePath, MetaMorpheusTask.tomlConfig); AddTaskToCollection(ye2); break; case "Gptmd": var ye3 = Toml.ReadFile <GptmdTask>(draggedFilePath, MetaMorpheusTask.tomlConfig); AddTaskToCollection(ye3); break; case "XLSearch": var ye4 = Toml.ReadFile <XLSearchTask>(draggedFilePath, MetaMorpheusTask.tomlConfig); AddTaskToCollection(ye4); break; case "Neo": var ye5 = Toml.ReadFile <NeoSearchTask>(draggedFilePath, MetaMorpheusTask.tomlConfig); foreach (MetaMorpheusTask task in NeoLoadTomls.LoadTomls(ye5)) { AddTaskToCollection(task); } break; } } catch (Exception e) { GuiWarnHandler(null, new StringEventArgs("Could not parse .toml: " + e.Message, null)); } } break; default: GuiWarnHandler(null, new StringEventArgs("Unrecognized file type: " + theExtension, null)); break; } }