public static void GenerateDefaultTaskTomls(string folderLocation) { try { if (!Directory.Exists(folderLocation)) { Directory.CreateDirectory(folderLocation); } CalibrationTask c = new CalibrationTask(); Toml.WriteFile(c, Path.Combine(folderLocation, @"CalibrationTask.toml"), MetaMorpheusTask.tomlConfig); GptmdTask g = new GptmdTask(); Toml.WriteFile(g, Path.Combine(folderLocation, @"GptmdTask.toml"), MetaMorpheusTask.tomlConfig); SearchTask s = new SearchTask(); Toml.WriteFile(s, Path.Combine(folderLocation, @"SearchTask.toml"), MetaMorpheusTask.tomlConfig); XLSearchTask xl = new XLSearchTask(); Toml.WriteFile(xl, Path.Combine(folderLocation, @"XLSearchTask.toml"), MetaMorpheusTask.tomlConfig); GlycoSearchTask glyco = new GlycoSearchTask(); Toml.WriteFile(glyco, Path.Combine(folderLocation, @"GlycoSearchTask.toml"), MetaMorpheusTask.tomlConfig); } catch (Exception e) { throw new MetaMorpheusException("Default tomls could not be written: " + e.Message); } }
public static void GlyTest_RunTask() { GlycoSearchTask task = new GlycoSearchTask(); task._glycoSearchParameters.GlycoSearchType = GlycoSearchType.NGlycanSearch; Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, @"TESTGlycoData")); DbForTask db = new DbForTask(Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData/Q9C0Y4.fasta"), false); string raw = Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData/yeast_glycan_25170.mgf"); new EverythingRunnerEngine(new List <(string, MetaMorpheusTask)> { ("Task", task) }, new List <string> {
public GlycoSearchTaskWindow(GlycoSearchTask task) { InitializeComponent(); PopulateChoices(); TheTask = task ?? new GlycoSearchTask(); UpdateFieldsFromTask(TheTask); if (task == null) { this.saveButton.Content = "Add GlycoSearch Task"; } DataContextForSearchTaskWindow = new DataContextForSearchTaskWindow() { ExpanderTitle = string.Join(", ", SearchModesForThisTask.Where(b => b.Use).Select(b => b.Name)), AnalysisExpanderTitle = "Some analysis properties...", SearchModeExpanderTitle = "Some search properties..." }; this.DataContext = DataContextForSearchTaskWindow; SearchModifications.Timer.Tick += new EventHandler(TextChangeTimerHandler); base.Closing += this.OnClosing; }
private void UpdateFieldsFromTask(GlycoSearchTask task) { RbtOGlycoSearch.IsChecked = task._glycoSearchParameters.GlycoSearchType == EngineLayer.GlycoSearch.GlycoSearchType.OGlycanSearch; RbtNGlycoSearch.IsChecked = task._glycoSearchParameters.GlycoSearchType == EngineLayer.GlycoSearch.GlycoSearchType.NGlycanSearch; Rbt_N_O_GlycoSearch.IsChecked = task._glycoSearchParameters.GlycoSearchType == EngineLayer.GlycoSearch.GlycoSearchType.N_O_GlycanSearch; TbMaxOGlycanNum.Text = task._glycoSearchParameters.MaximumOGlycanAllowed.ToString(CultureInfo.InvariantCulture); CkbOxoniumIonFilt.IsChecked = task._glycoSearchParameters.OxoniumIonFilt; txtTopNum.Text = task._glycoSearchParameters.GlycoSearchTopNum.ToString(CultureInfo.InvariantCulture); CmbOGlycanDatabase.SelectedItem = task._glycoSearchParameters.OGlycanDatabasefile; CmbNGlycanDatabase.SelectedItem = task._glycoSearchParameters.NGlycanDatabasefile; cbbPrecusorMsTl.SelectedIndex = task.CommonParameters.PrecursorMassTolerance is AbsoluteTolerance ? 0 : 1; PrecusorMsTlTextBox.Text = task.CommonParameters.PrecursorMassTolerance.Value.ToString(CultureInfo.InvariantCulture); trimMs1.IsChecked = task.CommonParameters.TrimMs1Peaks; trimMsMs.IsChecked = task.CommonParameters.TrimMsMsPeaks; TopNPeaksTextBox.Text = task.CommonParameters.NumberOfPeaksToKeepPerWindow == int.MaxValue || !task.CommonParameters.NumberOfPeaksToKeepPerWindow.HasValue ? "" : task.CommonParameters.NumberOfPeaksToKeepPerWindow.Value.ToString(CultureInfo.InvariantCulture); MinRatioTextBox.Text = task.CommonParameters.MinimumAllowedIntensityRatioToBasePeak == double.MaxValue || !task.CommonParameters.MinimumAllowedIntensityRatioToBasePeak.HasValue ? "" : task.CommonParameters.MinimumAllowedIntensityRatioToBasePeak.Value.ToString(CultureInfo.InvariantCulture); DissociationTypeComboBox.SelectedItem = task.CommonParameters.DissociationType.ToString(); ChildScanDissociationTypeComboBox.SelectedItem = "Null"; if (task.CommonParameters.MS2ChildScanDissociationType != DissociationType.Unknown) { ChildScanDissociationTypeComboBox.SelectedItem = task.CommonParameters.MS2ChildScanDissociationType.ToString(); } CheckBoxDecoy.IsChecked = task._glycoSearchParameters.DecoyType != DecoyType.None; RadioButtonReverseDecoy.IsChecked = task._glycoSearchParameters.DecoyType == DecoyType.Reverse; RadioButtonSlideDecoy.IsChecked = task._glycoSearchParameters.DecoyType == DecoyType.Slide; deconvolutePrecursors.IsChecked = task.CommonParameters.DoPrecursorDeconvolution; useProvidedPrecursor.IsChecked = task.CommonParameters.UseProvidedPrecursorInfo; missedCleavagesTextBox.Text = task.CommonParameters.DigestionParams.MaxMissedCleavages.ToString(CultureInfo.InvariantCulture); MinPeptideLengthTextBox.Text = task.CommonParameters.DigestionParams.MinPeptideLength.ToString(CultureInfo.InvariantCulture); MaxPeptideLengthTextBox.Text = task.CommonParameters.DigestionParams.MaxPeptideLength == int.MaxValue ? "" : task.CommonParameters.DigestionParams.MaxPeptideLength.ToString(CultureInfo.InvariantCulture); proteaseComboBox.SelectedItem = task.CommonParameters.DigestionParams.Protease; maxModificationIsoformsTextBox.Text = task.CommonParameters.DigestionParams.MaxModificationIsoforms.ToString(CultureInfo.InvariantCulture); TxtBoxMaxModPerPep.Text = task.CommonParameters.DigestionParams.MaxModsForPeptide.ToString(CultureInfo.InvariantCulture); initiatorMethionineBehaviorComboBox.SelectedIndex = (int)task.CommonParameters.DigestionParams.InitiatorMethionineBehavior; productMassToleranceTextBox.Text = task.CommonParameters.ProductMassTolerance.Value.ToString(CultureInfo.InvariantCulture); productMassToleranceComboBox.SelectedIndex = task.CommonParameters.ProductMassTolerance is AbsoluteTolerance ? 0 : 1; minScoreAllowed.Text = task.CommonParameters.ScoreCutoff.ToString(CultureInfo.InvariantCulture); numberOfDatabaseSearchesTextBox.Text = task.CommonParameters.TotalPartitions.ToString(CultureInfo.InvariantCulture); maxThreadsTextBox.Text = task.CommonParameters.MaxThreadsToUsePerFile.ToString(CultureInfo.InvariantCulture); CustomFragmentationWindow = new CustomFragmentationWindow(task.CommonParameters.CustomIons); OutputFileNameTextBox.Text = task.CommonParameters.TaskDescriptor; foreach (var mod in task.CommonParameters.ListOfModsFixed) { var theModType = FixedModTypeForTreeViewObservableCollection.FirstOrDefault(b => b.DisplayName.Equals(mod.Item1)); if (theModType != null) { var theMod = theModType.Children.FirstOrDefault(b => b.ModName.Equals(mod.Item2)); if (theMod != null) { theMod.Use = true; } else { theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } else { theModType = new ModTypeForTreeView(mod.Item1, true); FixedModTypeForTreeViewObservableCollection.Add(theModType); theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } foreach (var mod in task.CommonParameters.ListOfModsVariable) { var theModType = VariableModTypeForTreeViewObservableCollection.FirstOrDefault(b => b.DisplayName.Equals(mod.Item1)); if (theModType != null) { var theMod = theModType.Children.FirstOrDefault(b => b.ModName.Equals(mod.Item2)); if (theMod != null) { theMod.Use = true; } else { theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } else { theModType = new ModTypeForTreeView(mod.Item1, true); VariableModTypeForTreeViewObservableCollection.Add(theModType); theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } foreach (var ye in VariableModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } foreach (var ye in FixedModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } }
public static void MetaDraw_GlycoSearchTaskWithChildScansTest() { string outputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"MetaDraw_GlycoSearchTaskTest"); string proteinDatabase = Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData\leukosialin.fasta"); string spectraFile = Path.Combine(TestContext.CurrentContext.TestDirectory, @"GlycoTestData\sliced_glyco_hcd_ethcd.raw"); // run task CommonParameters commonParameters = new CommonParameters(dissociationType: DissociationType.HCD, ms2childScanDissociationType: DissociationType.EThcD); Directory.CreateDirectory(outputFolder); var glycoSearchTask = new GlycoSearchTask() { CommonParameters = commonParameters }; glycoSearchTask.RunTask(outputFolder, new List <DbForTask> { new DbForTask(proteinDatabase, false) }, new List <string> { spectraFile }, ""); var psmFile = Path.Combine(outputFolder, @"oglyco.psmtsv"); // load results into metadraw var metadrawLogic = new MetaDrawLogic(); metadrawLogic.SpectraFilePaths.Add(spectraFile); metadrawLogic.PsmResultFilePaths.Add(psmFile); var errors = metadrawLogic.LoadFiles(true, true); Assert.That(!errors.Any()); Assert.That(metadrawLogic.FilteredListOfPsms.Any()); // test results filter MetaDrawSettings.QValueFilter = 0.01; MetaDrawSettings.ShowDecoys = false; metadrawLogic.FilterPsms(); Assert.That(metadrawLogic.FilteredListOfPsms.All(p => p.DecoyContamTarget == "T")); Assert.That(metadrawLogic.FilteredListOfPsms.All(p => p.QValue <= 0.01)); // test text search filter (filter by full sequence) string filterString = @"STTAVQ"; metadrawLogic.FilterPsmsByString(filterString); int c = 0; foreach (var filteredPsm in metadrawLogic.PeptideSpectralMatchesView) { var psmObj = (PsmFromTsv)filteredPsm; Assert.That(psmObj.FullSequence.Contains(filterString)); c++; } Assert.Greater(c, 0); // test text search filter (filter by MS2 scan number) filterString = @"2"; metadrawLogic.FilterPsmsByString(filterString); c = 0; foreach (var filteredPsm in metadrawLogic.PeptideSpectralMatchesView) { var psmObj = (PsmFromTsv)filteredPsm; Assert.That(psmObj.Ms2ScanNumber.ToString().Contains(filterString)); c++; } Assert.Greater(c, 0); // draw PSM var plotView = new OxyPlot.Wpf.PlotView(); var canvas = new Canvas(); var parentChildView = new ParentChildScanPlotsView(); var psm = metadrawLogic.FilteredListOfPsms.First(); metadrawLogic.DisplaySpectrumMatch(plotView, canvas, psm, parentChildView, out errors); Assert.That(errors == null || !errors.Any()); // test that plot was drawn var peak = (LineSeries)plotView.Model.Series[0]; // the first m/z peak var peakPoints = peak.Points; Assert.That(Math.Round(peakPoints[0].X, 2) == 101.07); // m/z Assert.That(Math.Round(peakPoints[1].X, 2) == 101.07); Assert.That((int)peakPoints[0].Y == 0); // intensity Assert.That((int)peakPoints[1].Y == 3847); var plotAxes = plotView.Model.Axes; Assert.AreEqual(2, plotAxes.Count); // test that base sequence annotation was drawn Assert.Greater(canvas.Children.Count, 0); // test that the plots were drawn in the parent/child view Assert.AreEqual(2, parentChildView.Plots.Count); // test parent scan var parentPlot = parentChildView.Plots[0]; Assert.AreEqual("Scan: 27 Dissociation Type: HCD MsOrder: 2 Selected Mz: 924.12 Retention Time: 32.65", parentPlot.SpectrumLabel); int numAnnotatedResidues = psm.BaseSeq.Length; int numAnnotatedIons = psm.MatchedIons.Count(p => p.NeutralTheoreticalProduct.ProductType != ProductType.M && p.NeutralTheoreticalProduct.ProductType != ProductType.D); int numAnnotatedMods = psm.FullSequence.Count(p => p == '['); Assert.AreEqual(numAnnotatedResidues + numAnnotatedIons + numAnnotatedMods, parentPlot.TheCanvas.Children.Count); peak = (LineSeries)parentPlot.Plot.Model.Series[0]; // the first m/z peak peakPoints = peak.Points; Assert.AreEqual(101.07, Math.Round(peakPoints[0].X, 2)); // m/z Assert.AreEqual(101.07, (Math.Round(peakPoints[1].X, 2))); Assert.AreEqual(0, (int)peakPoints[0].Y); // intensity Assert.AreEqual(3847, (int)peakPoints[1].Y); // test child scan var childPlot = parentChildView.Plots[1]; Assert.AreEqual("Scan: 30 Dissociation Type: EThcD MsOrder: 2 Selected Mz: 924.12 RetentionTime: 32.66", childPlot.SpectrumLabel); Assert.Greater(childPlot.TheCanvas.Children.Count, 0); numAnnotatedResidues = psm.BaseSeq.Length; numAnnotatedIons = psm.ChildScanMatchedIons[30] .Count(p => p.NeutralTheoreticalProduct.ProductType != ProductType.M && p.NeutralTheoreticalProduct.ProductType != ProductType.D); numAnnotatedMods = psm.FullSequence.Count(p => p == '['); Assert.AreEqual(numAnnotatedResidues + numAnnotatedIons + numAnnotatedMods, childPlot.TheCanvas.Children.Count); peak = (LineSeries)childPlot.Plot.Model.Series[0]; // the first m/z peak peakPoints = peak.Points; Assert.AreEqual(126.06, Math.Round(peakPoints[0].X, 2)); // m/z Assert.AreEqual(126.06, Math.Round(peakPoints[1].X, 2)); Assert.AreEqual(0, (int)peakPoints[0].Y); // intensity Assert.AreEqual(8496, (int)peakPoints[1].Y); // write pdf var psmsToExport = metadrawLogic.FilteredListOfPsms.Where(p => p.FullSequence == "STTAVQTPTSGEPLVST[O-Glycosylation:H1N1 on X]SEPLSSK").ToList(); metadrawLogic.ExportToPdf(plotView, canvas, psmsToExport, parentChildView, outputFolder, out errors); // test that pdf exists Assert.That(File.Exists(Path.Combine(outputFolder, @"27_STTAVQTPTSGEPLVST[O-Glycosylat.pdf"))); // parent scan Assert.That(File.Exists(Path.Combine(outputFolder, @"30_STTAVQTPTSGEPLVST[O-Glycosylat.pdf"))); // child scan // clean up resources metadrawLogic.CleanUpResources(); Assert.That(!metadrawLogic.FilteredListOfPsms.Any()); Assert.That(!metadrawLogic.PsmResultFilePaths.Any()); Assert.That(!metadrawLogic.SpectraFilePaths.Any()); // delete output Directory.Delete(outputFolder, true); }