From 52d5e6dda03943cc53db14e403dc1608254b0b33 Mon Sep 17 00:00:00 2001 From: nbollis Date: Tue, 28 Jan 2025 15:00:02 -0600 Subject: [PATCH 1/5] Added decon choice to calibration --- .../GUI/TaskWindows/CalibrateTaskWindow.xaml | 37 +++++++++++++++++++ .../TaskWindows/CalibrateTaskWindow.xaml.cs | 29 +++++++++++++-- 2 files changed, 62 insertions(+), 4 deletions(-) diff --git a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml index 99c3f48de..bf16a9521 100644 --- a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml +++ b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml @@ -45,6 +45,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs index 12b88340b..30462fdb2 100644 --- a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs @@ -28,6 +28,7 @@ public partial class CalibrateTaskWindow : Window private readonly ObservableCollection LocalizeModTypeForTreeViewObservableCollection = new ObservableCollection(); private bool AutomaticallyAskAndOrUpdateParametersBasedOnProtease = true; private CustomFragmentationWindow CustomFragmentationWindow; + private DeconHostViewModel DeconHostViewModel; public CalibrateTaskWindow(CalibrationTask myCalibrateTask) { @@ -38,6 +39,7 @@ public CalibrateTaskWindow(CalibrationTask myCalibrateTask) PopulateChoices(); UpdateFieldsFromTask(TheTask); AutomaticallyAskAndOrUpdateParametersBasedOnProtease = true; + DeisotopingControl.DataContext = DeconHostViewModel; if (myCalibrateTask == null) { @@ -51,6 +53,9 @@ public CalibrateTaskWindow(CalibrationTask myCalibrateTask) private void UpdateFieldsFromTask(CalibrationTask task) { + DeconHostViewModel = new DeconHostViewModel(TheTask.CommonParameters.PrecursorDeconvolutionParameters, + TheTask.CommonParameters.ProductDeconvolutionParameters, + TheTask.CommonParameters.UseProvidedPrecursorInfo, TheTask.CommonParameters.DoPrecursorDeconvolution); ProteaseComboBox.SelectedItem = task.CommonParameters.DigestionParams.Protease; //protease needs to come first or recommended settings can overwrite the actual settings MissedCleavagesTextBox.Text = task.CommonParameters.DigestionParams.MaxMissedCleavages == int.MaxValue ? "" : task.CommonParameters.DigestionParams.MaxMissedCleavages.ToString(CultureInfo.InvariantCulture); MinPeptideLengthTextBox.Text = task.CommonParameters.DigestionParams.MinPeptideLength.ToString(CultureInfo.InvariantCulture); @@ -255,6 +260,10 @@ private void SaveButton_Click(object sender, RoutedEventArgs e) } bool parseMaxThreadsPerFile = int.Parse(MaxThreadsTextBox.Text, CultureInfo.InvariantCulture) <= Environment.ProcessorCount && int.Parse(MaxThreadsTextBox.Text, CultureInfo.InvariantCulture) > 0; + DeconvolutionParameters precursorDeconvolutionParameters = DeconHostViewModel.PrecursorDeconvolutionParameters.Parameters; + DeconvolutionParameters productDeconvolutionParameters = DeconHostViewModel.ProductDeconvolutionParameters.Parameters; + bool useProvidedPrecursorInfo = DeconHostViewModel.UseProvidedPrecursors; + bool doPrecursorDeconvolution = DeconHostViewModel.DoPrecursorDeconvolution; //the below parameters are optimized for top-down but do not exist in the GUI as of Nov. 13, 2019 if (((Protease)ProteaseComboBox.SelectedItem).Name.Contains("top-down")) @@ -272,9 +281,11 @@ private void SaveButton_Click(object sender, RoutedEventArgs e) assumeOrphanPeaksAreZ1Fragments: protease.Name != "top-down", minVariantDepth: minVariantDepth, maxHeterozygousVariants: maxHeterozygousVariants, - useProvidedPrecursorInfo: false, //Updated - deconvolutionMaxAssumedChargeState: 60, //Updated - trimMsMsPeaks: false); //Updated + trimMsMsPeaks: false, + doPrecursorDeconvolution: doPrecursorDeconvolution, + precursorDeconParams: precursorDeconvolutionParameters, + productDeconParams: productDeconvolutionParameters, + useProvidedPrecursorInfo: useProvidedPrecursorInfo); TheTask.CommonParameters = commonParamsToSave; } else //bottom-up @@ -291,7 +302,11 @@ private void SaveButton_Click(object sender, RoutedEventArgs e) precursorMassTolerance: precursorMassTolerance, assumeOrphanPeaksAreZ1Fragments: protease.Name != "top-down", minVariantDepth: minVariantDepth, - maxHeterozygousVariants: maxHeterozygousVariants); + maxHeterozygousVariants: maxHeterozygousVariants, + useProvidedPrecursorInfo: useProvidedPrecursorInfo, + doPrecursorDeconvolution: doPrecursorDeconvolution, + precursorDeconParams: precursorDeconvolutionParameters, + productDeconParams: productDeconvolutionParameters); TheTask.CommonParameters = commonParamsToSave; } @@ -381,6 +396,12 @@ private void ProteaseSpecificUpdate(object sender, SelectionChangedEventArgs e) { //many variables are not present in the calibrate task gui, but we modify them when saving //uncheck all variable mods + DeconHostViewModel.UseProvidedPrecursors = false; + DeconHostViewModel.DoPrecursorDeconvolution = true; + DeconHostViewModel.SetAllPrecursorMaxChargeState(60); + DeconHostViewModel.SetAllProductMaxChargeState(20); + TrimMsMs.IsChecked = false; + foreach (var mod in VariableModTypeForTreeViewObservableCollection) { mod.Use = false; From ee361e78d17bb5dfe54b9ba6d49968570caac208 Mon Sep 17 00:00:00 2001 From: nbollis Date: Tue, 28 Jan 2025 15:05:12 -0600 Subject: [PATCH 2/5] Add DetermineAnalyteType call in UpdateFieldsFromTask Added MetaMorpheusTask.DetermineAnalyteType(TheTask.CommonParameters) at the beginning of the UpdateFieldsFromTask method in task windows. This ensures analyte type is determined before updating fields from the task. --- MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs | 1 + MetaMorpheus/GUI/TaskWindows/GPTMDTaskWindow.xaml.cs | 1 + MetaMorpheus/GUI/TaskWindows/GlycoSearchTaskWindow.xaml.cs | 1 + MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs | 1 + MetaMorpheus/GUI/TaskWindows/XLSearchTaskWindow.xaml.cs | 1 + 5 files changed, 5 insertions(+) diff --git a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs index 30462fdb2..3c528f26f 100644 --- a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs @@ -53,6 +53,7 @@ public CalibrateTaskWindow(CalibrationTask myCalibrateTask) private void UpdateFieldsFromTask(CalibrationTask task) { + MetaMorpheusTask.DetermineAnalyteType(TheTask.CommonParameters); DeconHostViewModel = new DeconHostViewModel(TheTask.CommonParameters.PrecursorDeconvolutionParameters, TheTask.CommonParameters.ProductDeconvolutionParameters, TheTask.CommonParameters.UseProvidedPrecursorInfo, TheTask.CommonParameters.DoPrecursorDeconvolution); diff --git a/MetaMorpheus/GUI/TaskWindows/GPTMDTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/GPTMDTaskWindow.xaml.cs index 37d595cfa..bd6dd0639 100644 --- a/MetaMorpheus/GUI/TaskWindows/GPTMDTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/GPTMDTaskWindow.xaml.cs @@ -64,6 +64,7 @@ private void Row_DoubleClick(object sender, MouseButtonEventArgs e) private void UpdateFieldsFromTask(GptmdTask task) { + MetaMorpheusTask.DetermineAnalyteType(TheTask.CommonParameters); DeconHostViewModel = new DeconHostViewModel(TheTask.CommonParameters.PrecursorDeconvolutionParameters, TheTask.CommonParameters.ProductDeconvolutionParameters, TheTask.CommonParameters.UseProvidedPrecursorInfo, TheTask.CommonParameters.DoPrecursorDeconvolution); diff --git a/MetaMorpheus/GUI/TaskWindows/GlycoSearchTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/GlycoSearchTaskWindow.xaml.cs index 59034fe9c..38960b5d8 100644 --- a/MetaMorpheus/GUI/TaskWindows/GlycoSearchTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/GlycoSearchTaskWindow.xaml.cs @@ -114,6 +114,7 @@ private void PopulateChoices() private void UpdateFieldsFromTask(GlycoSearchTask task) { + MetaMorpheusTask.DetermineAnalyteType(TheTask.CommonParameters); 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; diff --git a/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs index 124ceebd5..3765c6bbc 100644 --- a/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/SearchTaskWindow.xaml.cs @@ -161,6 +161,7 @@ private void PopulateChoices() /// private void UpdateFieldsFromTask(SearchTask task) { + MetaMorpheusTask.DetermineAnalyteType(TheTask.CommonParameters); ProteaseComboBox.SelectedItem = task.CommonParameters.DigestionParams.SpecificProtease; //needs to be first, so nonspecific can override if necessary ClassicSearchRadioButton.IsChecked = task.SearchParameters.SearchType == SearchType.Classic; ModernSearchRadioButton.IsChecked = task.SearchParameters.SearchType == SearchType.Modern; diff --git a/MetaMorpheus/GUI/TaskWindows/XLSearchTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/XLSearchTaskWindow.xaml.cs index 47c07d2cb..a1f8f6bea 100644 --- a/MetaMorpheus/GUI/TaskWindows/XLSearchTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/XLSearchTaskWindow.xaml.cs @@ -121,6 +121,7 @@ private void PopulateChoices() private void UpdateFieldsFromTask(XLSearchTask task) { + MetaMorpheusTask.DetermineAnalyteType(TheTask.CommonParameters); cbCrosslinkers.SelectedItem = task.XlSearchParameters.Crosslinker; txtXLTopNum.Text = task.XlSearchParameters.CrosslinkSearchTopNum.ToString(CultureInfo.InvariantCulture); ckbAddCompIon.IsChecked = task.CommonParameters.AddCompIons; From 7dee9663fde52e19ee6aee6321e77dd08de14f47 Mon Sep 17 00:00:00 2001 From: nbollis Date: Tue, 28 Jan 2025 15:20:13 -0600 Subject: [PATCH 3/5] Refactor charge state settings in CalibrateTaskWindow Replaced method calls for setting max charge states with direct assignment to PrecursorDeconvolutionParameters.MaxAssumedChargeState. This change simplifies the configuration of deconvolution parameters. --- MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs index 3c528f26f..4dd4e3358 100644 --- a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs @@ -399,8 +399,7 @@ private void ProteaseSpecificUpdate(object sender, SelectionChangedEventArgs e) //uncheck all variable mods DeconHostViewModel.UseProvidedPrecursors = false; DeconHostViewModel.DoPrecursorDeconvolution = true; - DeconHostViewModel.SetAllPrecursorMaxChargeState(60); - DeconHostViewModel.SetAllProductMaxChargeState(20); + DeconHostViewModel.PrecursorDeconvolutionParameters.MaxAssumedChargeState = 60; TrimMsMs.IsChecked = false; foreach (var mod in VariableModTypeForTreeViewObservableCollection) From 9152b8288a2618eb05f97337215ded64ff78706f Mon Sep 17 00:00:00 2001 From: nbollis Date: Thu, 30 Jan 2025 13:52:45 -0600 Subject: [PATCH 4/5] Removed Peak Filtering from calibration --- .../GUI/TaskWindows/CalibrateTaskWindow.xaml | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml index bf16a9521..5cc863f3e 100644 --- a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml +++ b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml @@ -49,36 +49,6 @@ - - - - - - - - - - - - - - - - - - From 9ef6f77e4b203a8dd94798982ff81d17f49a6a67 Mon Sep 17 00:00:00 2001 From: nbollis Date: Thu, 30 Jan 2025 13:53:23 -0600 Subject: [PATCH 5/5] oof --- MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs index 4dd4e3358..2f7fc775a 100644 --- a/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs +++ b/MetaMorpheus/GUI/TaskWindows/CalibrateTaskWindow.xaml.cs @@ -400,7 +400,6 @@ private void ProteaseSpecificUpdate(object sender, SelectionChangedEventArgs e) DeconHostViewModel.UseProvidedPrecursors = false; DeconHostViewModel.DoPrecursorDeconvolution = true; DeconHostViewModel.PrecursorDeconvolutionParameters.MaxAssumedChargeState = 60; - TrimMsMs.IsChecked = false; foreach (var mod in VariableModTypeForTreeViewObservableCollection) {