// write the toml settings file on clicking "save" private void Save_Click(object sender, RoutedEventArgs e) { var parametersToWrite = new FileSpecificParameters(); // parse the file-specific parameters to text int paramsToSaveCount = 0; if (fileSpecificPrecursorMassTolEnabled.IsChecked.Value) { paramsToSaveCount++; if (GlobalGuiSettings.CheckPrecursorMassTolerance(precursorMassToleranceTextBox.Text)) { double value = double.Parse(precursorMassToleranceTextBox.Text, CultureInfo.InvariantCulture); if (precursorMassToleranceComboBox.SelectedIndex == 0) { parametersToWrite.PrecursorMassTolerance = new AbsoluteTolerance(value); } else { parametersToWrite.PrecursorMassTolerance = new PpmTolerance(value); } } else { return; } } if (fileSpecificProductMassTolEnabled.IsChecked.Value) { paramsToSaveCount++; if (GlobalGuiSettings.CheckProductMassTolerance(productMassToleranceTextBox.Text)) { double value = double.Parse(productMassToleranceTextBox.Text, CultureInfo.InvariantCulture); if (productMassToleranceComboBox.SelectedIndex == 0) { parametersToWrite.ProductMassTolerance = new AbsoluteTolerance(value); } else { parametersToWrite.ProductMassTolerance = new PpmTolerance(value); } } else { return; } } if (fileSpecificProteaseEnabled.IsChecked.Value) { paramsToSaveCount++; parametersToWrite.Protease = (Protease)fileSpecificProtease.SelectedItem; } if (fileSpecificMinPeptideLengthEnabled.IsChecked.Value) { paramsToSaveCount++; if (int.TryParse(MinPeptideLengthTextBox.Text, out int i) && i > 0) { parametersToWrite.MinPeptideLength = i; } else { MessageBox.Show("The minimum peptide length must be a positive integer"); return; } } if (fileSpecificMaxPeptideLengthEnabled.IsChecked.Value) { paramsToSaveCount++; string lengthMaxPeptide = GlobalGuiSettings.MaxValueConversion(MaxPeptideLengthTextBox.Text); if (GlobalGuiSettings.CheckPeptideLength(MinPeptideLengthTextBox.Text, lengthMaxPeptide)) { parametersToWrite.MaxPeptideLength = int.Parse(lengthMaxPeptide); } else { return; } } if (fileSpecificMissedCleavagesEnabled.IsChecked.Value) { paramsToSaveCount++; string lengthCleavage = GlobalGuiSettings.MaxValueConversion(missedCleavagesTextBox.Text); if (GlobalGuiSettings.CheckMaxMissedCleavages(lengthCleavage)) { parametersToWrite.MaxMissedCleavages = int.Parse(lengthCleavage); } else { return; } } if (fileSpecificMaxModNumEnabled.IsChecked.Value) { paramsToSaveCount++; if (GlobalGuiSettings.CheckMaxModsPerPeptide(MaxModNumTextBox.Text)) { parametersToWrite.MaxModsForPeptide = int.Parse(MaxModNumTextBox.Text); } else { return; } } //if (fileSpecificIonTypesEnabled.IsChecked.Value) //{ // paramsToSaveCount++; // // don't think there's any way to mess up checkboxes... no error message needed // parametersToWrite.BIons = bCheckBox.IsChecked; // parametersToWrite.YIons = yCheckBox.IsChecked; // parametersToWrite.CIons = cCheckBox.IsChecked; // parametersToWrite.ZdotIons = zdotCheckBox.IsChecked; //} // write parameters to toml files for the selected spectra files var tomlPathsForSelectedFiles = SelectedSpectra.Select(p => Path.Combine(Directory.GetParent(p.FilePath).ToString(), Path.GetFileNameWithoutExtension(p.FileName)) + ".toml"); foreach (var tomlToWrite in tomlPathsForSelectedFiles) { if (paramsToSaveCount > 0) { Toml.WriteFile(parametersToWrite, tomlToWrite, MetaMorpheusTask.tomlConfig); // make sure the settings are able to be parsed... var tempTomlTable = Toml.ReadFile(tomlToWrite, MetaMorpheusTask.tomlConfig); FileSpecificParameters tempParams = new FileSpecificParameters(tempTomlTable); } else { // user has specified that no file-specific settings should be used; delete the file-specific toml if it exists File.Delete(tomlToWrite); } } // done DialogResult = true; }
// write the toml settings file on clicking "save" private void Save_Click(object sender, RoutedEventArgs e) { var parametersToWrite = new FileSpecificParameters(); bool fileSpecificParameterExists = false; // parse the file-specific parameters to text if (fileSpecificPrecursorMassTolEnabled.IsChecked.Value) { fileSpecificParameterExists = true; if (GlobalGuiSettings.CheckPrecursorMassTolerance(precursorMassToleranceTextBox.Text)) { double value = double.Parse(precursorMassToleranceTextBox.Text, CultureInfo.InvariantCulture); if (precursorMassToleranceComboBox.SelectedIndex == 0) { parametersToWrite.PrecursorMassTolerance = new AbsoluteTolerance(value); } else { parametersToWrite.PrecursorMassTolerance = new PpmTolerance(value); } } else { return; } } if (fileSpecificProductMassTolEnabled.IsChecked.Value) { fileSpecificParameterExists = true; if (GlobalGuiSettings.CheckProductMassTolerance(productMassToleranceTextBox.Text)) { double value = double.Parse(productMassToleranceTextBox.Text, CultureInfo.InvariantCulture); if (productMassToleranceComboBox.SelectedIndex == 0) { parametersToWrite.ProductMassTolerance = new AbsoluteTolerance(value); } else { parametersToWrite.ProductMassTolerance = new PpmTolerance(value); } } else { return; } } if (fileSpecificProteaseEnabled.IsChecked.Value) { fileSpecificParameterExists = true; parametersToWrite.Protease = (Protease)fileSpecificProtease.SelectedItem; } if (fileSpecificSeparationTypesEnabled.IsChecked.Value) { fileSpecificParameterExists = true; parametersToWrite.SeparationType = (string)fileSpecificSeparationType.SelectedItem; } if (fileSpecificMinPeptideLengthEnabled.IsChecked.Value) { fileSpecificParameterExists = true; if (int.TryParse(MinPeptideLengthTextBox.Text, out int i) && i > 0) { parametersToWrite.MinPeptideLength = i; } else { MessageBox.Show("The minimum peptide length must be a positive integer"); return; } } if (fileSpecificMaxPeptideLengthEnabled.IsChecked.Value) { fileSpecificParameterExists = true; string lengthMaxPeptide = GlobalGuiSettings.MaxValueConversion(MaxPeptideLengthTextBox.Text); if (GlobalGuiSettings.CheckPeptideLength(MinPeptideLengthTextBox.Text, lengthMaxPeptide)) { parametersToWrite.MaxPeptideLength = int.Parse(lengthMaxPeptide); } else { return; } } if (fileSpecificMissedCleavagesEnabled.IsChecked.Value) { fileSpecificParameterExists = true; string lengthCleavage = GlobalGuiSettings.MaxValueConversion(missedCleavagesTextBox.Text); if (GlobalGuiSettings.CheckMaxMissedCleavages(lengthCleavage)) { parametersToWrite.MaxMissedCleavages = int.Parse(lengthCleavage); } else { return; } } if (fileSpecificMaxModNumEnabled.IsChecked.Value) { fileSpecificParameterExists = true; if (GlobalGuiSettings.CheckMaxModsPerPeptide(MaxModNumTextBox.Text)) { parametersToWrite.MaxModsForPeptide = int.Parse(MaxModNumTextBox.Text); } else { return; } } //if (fileSpecificIonTypesEnabled.IsChecked.Value) //{ // paramsToSaveCount++; // // don't think there's any way to mess up checkboxes... no error message needed // parametersToWrite.BIons = bCheckBox.IsChecked; // parametersToWrite.YIons = yCheckBox.IsChecked; // parametersToWrite.CIons = cCheckBox.IsChecked; // parametersToWrite.ZdotIons = zdotCheckBox.IsChecked; //} // write parameters to toml files for the selected spectra files foreach (var spectra in SelectedSpectra) { string directoryForThisMsFile = Directory.GetParent(spectra.FilePath).ToString(); string filename = Path.GetFileNameWithoutExtension(spectra.FileName) + ".toml"; string tomlToWrite = Path.Combine(directoryForThisMsFile, filename); //check if a toml file already exists if (File.Exists(tomlToWrite)) { //store the previous file-specific tomls (if any) in a folder for reproducibility AccomodateNewFileSpecificToml(directoryForThisMsFile, filename); //check that an old toml doesn't already exist. If it does, move it to another nested folder. } if (fileSpecificParameterExists) { Toml.WriteFile(parametersToWrite, tomlToWrite, MetaMorpheusTask.tomlConfig); // make sure the settings are able to be parsed... var tempTomlTable = Toml.ReadFile(tomlToWrite, MetaMorpheusTask.tomlConfig); FileSpecificParameters tempParams = new FileSpecificParameters(tempTomlTable); } else { // user has specified that no file-specific settings should be used; delete the file-specific toml if it exists File.Delete(tomlToWrite); } } // done DialogResult = true; }