private void AddAdditionalButton_Click(object sender, RoutedEventArgs e) { if (ValidateClick()) { //save current label SilacLabel savedLabel = new SilacLabel(AminoAcid, '\0', ChemicalFormula.Text, Convert.ToDouble(MassDifference.Text)); SilacLabelStorageForMultiLabeledConditions = new SilacInfoForDataGrid(savedLabel); //open a new window to allow for more mods on this condition var dialog = new SilacModificationWindow(); if (dialog.ShowDialog() == true) { char originalAminoAcid = SilacLabelStorageForMultiLabeledConditions.SilacLabel[0].OriginalAminoAcid; //As you loop throught this, the process looks something like addAdditional->addAdditional->Save (for 3 labels). //But the saving actually happens as Save->add->add by storing the list of labels in each dialog.SilacLabel //So you need to search against the dialog.silacLabel instead of the storage, which is only temporarily populated at the end. if (dialog.SilacLabel.SilacLabel.Any(x => x.OriginalAminoAcid == originalAminoAcid)) { MessageBox.Show("The amino acid '" + originalAminoAcid.ToString() + "' was labeled multiple times for this condition. Please try again."); CancelSilacButton_Click(sender, e); } else { SilacLabelStorageForMultiLabeledConditions.AddAdditionalLabel(dialog.SilacLabel); SaveSilacLabelsButton_Click(sender, e); } } } }
private void SaveSilacLabelsButton_Click(object sender, RoutedEventArgs e) { if (ValidateClick()) { SilacLabel = SilacLabelStorageForMultiLabeledConditions ?? //use if labels have been added new SilacInfoForDataGrid(new SilacLabel(AminoAcid, '\0', ChemicalFormula.Text, Convert.ToDouble(MassDifference.Text)), DetermineExperimentType()); DialogResult = true; } }
private void UpdateFieldsFromTask(SearchTask task) { 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; //do these in if statements so as not to trigger the change if (task.SearchParameters.SearchType == SearchType.NonSpecific && task.CommonParameters.DigestionParams.SearchModeType == CleavageSpecificity.None) { nonSpecificSearchRadioButton.IsChecked = true; //when this is changed it overrides the protease if (task.CommonParameters.DigestionParams.SpecificProtease.Name.Equals("singleC") || task.CommonParameters.DigestionParams.SpecificProtease.Name.Equals("singleN")) { Protease nonspecific = ProteaseDictionary.Dictionary["non-specific"]; proteaseComboBox.SelectedItem = nonspecific; } else { proteaseComboBox.SelectedItem = task.CommonParameters.DigestionParams.SpecificProtease; } } if (task.SearchParameters.SearchType == SearchType.NonSpecific && task.CommonParameters.DigestionParams.SearchModeType != CleavageSpecificity.None) { semiSpecificSearchRadioButton.IsChecked = true; } checkBoxParsimony.IsChecked = task.SearchParameters.DoParsimony; checkBoxNoOneHitWonders.IsChecked = task.SearchParameters.NoOneHitWonders; checkBoxNoQuant.IsChecked = !task.SearchParameters.DoQuantification; checkBoxLFQ.IsChecked = task.SearchParameters.DoQuantification; if (task.SearchParameters.SilacLabels != null && task.SearchParameters.SilacLabels.Count != 0) { checkBoxSILAC.IsChecked = true; List <Proteomics.SilacLabel> labels = task.SearchParameters.SilacLabels; foreach (Proteomics.SilacLabel label in labels) { SilacInfoForDataGrid infoToAdd = new SilacInfoForDataGrid(label); if (label.AdditionalLabels != null) { foreach (Proteomics.SilacLabel additionalLabel in label.AdditionalLabels) { infoToAdd.AddAdditionalLabel(new SilacInfoForDataGrid(additionalLabel)); } } StaticSilacLabelsObservableCollection.Add(infoToAdd); } } CheckBoxQuantifyUnlabeledForSilac.IsChecked = task.CommonParameters.DigestionParams.GeneratehUnlabeledProteinsForSilac; peakFindingToleranceTextBox.Text = task.SearchParameters.QuantifyPpmTol.ToString(CultureInfo.InvariantCulture); checkBoxMatchBetweenRuns.IsChecked = task.SearchParameters.MatchBetweenRuns; checkBoxNormalize.IsChecked = task.SearchParameters.Normalize; modPepsAreUnique.IsChecked = task.SearchParameters.ModPeptidesAreDifferent; checkBoxHistogramAnalysis.IsChecked = task.SearchParameters.DoHistogramAnalysis; histogramBinWidthTextBox.Text = task.SearchParameters.HistogramBinTolInDaltons.ToString(CultureInfo.InvariantCulture); checkBoxTarget.IsChecked = task.SearchParameters.SearchTarget; checkBoxDecoy.IsChecked = task.SearchParameters.DecoyType != DecoyType.None; radioButtonReverseDecoy.IsChecked = task.SearchParameters.DecoyType == DecoyType.Reverse; radioButtonSlideDecoy.IsChecked = task.SearchParameters.DecoyType == DecoyType.Slide; missedCleavagesTextBox.Text = task.CommonParameters.DigestionParams.MaxMissedCleavages == int.MaxValue ? "" : 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); MaxFragmentMassTextBox.Text = task.SearchParameters.MaxFragmentSize.ToString(CultureInfo.InvariantCulture); //put after max peptide length to allow for override of auto maxModificationIsoformsTextBox.Text = task.CommonParameters.DigestionParams.MaxModificationIsoforms.ToString(CultureInfo.InvariantCulture); MaxModNumTextBox.Text = task.CommonParameters.DigestionParams.MaxModsForPeptide.ToString(CultureInfo.InvariantCulture); initiatorMethionineBehaviorComboBox.SelectedIndex = (int)task.CommonParameters.DigestionParams.InitiatorMethionineBehavior; dissociationTypeComboBox.SelectedItem = task.CommonParameters.DissociationType.ToString(); nTerminalIons.IsChecked = task.CommonParameters.DigestionParams.FragmentationTerminus == FragmentationTerminus.Both || task.CommonParameters.DigestionParams.FragmentationTerminus == FragmentationTerminus.N; cTerminalIons.IsChecked = task.CommonParameters.DigestionParams.FragmentationTerminus == FragmentationTerminus.Both || task.CommonParameters.DigestionParams.FragmentationTerminus == FragmentationTerminus.C; productMassToleranceTextBox.Text = task.CommonParameters.ProductMassTolerance.Value.ToString(CultureInfo.InvariantCulture); productMassToleranceComboBox.SelectedIndex = task.CommonParameters.ProductMassTolerance is AbsoluteTolerance ? 0 : 1; precursorMassToleranceTextBox.Text = task.CommonParameters.PrecursorMassTolerance.Value.ToString(CultureInfo.InvariantCulture); precursorMassToleranceComboBox.SelectedIndex = task.CommonParameters.PrecursorMassTolerance is AbsoluteTolerance ? 0 : 1; addCompIonCheckBox.IsChecked = task.CommonParameters.AddCompIons; numberOfDatabaseSearchesTextBox.Text = task.CommonParameters.TotalPartitions.ToString(CultureInfo.InvariantCulture); deconvolutePrecursors.IsChecked = task.CommonParameters.DoPrecursorDeconvolution; useProvidedPrecursor.IsChecked = task.CommonParameters.UseProvidedPrecursorInfo; allAmbiguity.IsChecked = task.CommonParameters.ReportAllAmbiguity; DeconvolutionMaxAssumedChargeStateTextBox.Text = task.CommonParameters.DeconvolutionMaxAssumedChargeState.ToString(); minScoreAllowed.Text = task.CommonParameters.ScoreCutoff.ToString(CultureInfo.InvariantCulture); deltaScoreCheckBox.IsChecked = task.CommonParameters.UseDeltaScore; trimMs1.IsChecked = task.CommonParameters.TrimMs1Peaks; trimMsMs.IsChecked = task.CommonParameters.TrimMsMsPeaks; NumberOfPeaksToKeepPerWindowTextBox.Text = task.CommonParameters.NumberOfPeaksToKeepPerWindow == int.MaxValue || !task.CommonParameters.NumberOfPeaksToKeepPerWindow.HasValue ? "" : task.CommonParameters.NumberOfPeaksToKeepPerWindow.Value.ToString(CultureInfo.InvariantCulture); MinimumAllowedIntensityRatioToBasePeakTexBox.Text = task.CommonParameters.MinimumAllowedIntensityRatioToBasePeak == double.MaxValue || !task.CommonParameters.MinimumAllowedIntensityRatioToBasePeak.HasValue ? "" : task.CommonParameters.MinimumAllowedIntensityRatioToBasePeak.Value.ToString(CultureInfo.InvariantCulture); WindowWidthThomsonsTextBox.Text = task.CommonParameters.WindowWidthThomsons == double.MaxValue || !task.CommonParameters.WindowWidthThomsons.HasValue ? "" : task.CommonParameters.WindowWidthThomsons.Value.ToString(CultureInfo.InvariantCulture); NumberOfWindowsTextBox.Text = task.CommonParameters.NumberOfWindows == int.MaxValue || !task.CommonParameters.NumberOfWindows.HasValue ? "" : task.CommonParameters.NumberOfWindows.Value.ToString(CultureInfo.InvariantCulture); normalizePeaksInWindowCheckBox.IsChecked = task.CommonParameters.NormalizePeaksAccrossAllWindows; maxThreadsTextBox.Text = task.CommonParameters.MaxThreadsToUsePerFile.ToString(CultureInfo.InvariantCulture); MinVariantDepthTextBox.Text = task.CommonParameters.MinVariantDepth.ToString(CultureInfo.InvariantCulture); MaxHeterozygousVariantsTextBox.Text = task.CommonParameters.MaxHeterozygousVariants.ToString(CultureInfo.InvariantCulture); CustomFragmentationWindow = new CustomFragmentationWindow(task.CommonParameters.CustomIons); if (task.CommonParameters.QValueOutputFilter < 1) { QValueTextBox.Text = task.CommonParameters.QValueOutputFilter.ToString(CultureInfo.InvariantCulture); QValueCheckBox.IsChecked = true; } else { QValueTextBox.Text = "0.01"; QValueCheckBox.IsChecked = false; } OutputFileNameTextBox.Text = task.CommonParameters.TaskDescriptor; ckbMzId.IsChecked = task.SearchParameters.WriteMzId; writeDecoyCheckBox.IsChecked = task.SearchParameters.WriteDecoys; writeContaminantCheckBox.IsChecked = task.SearchParameters.WriteContaminants; 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 heh in LocalizeModTypeForTreeViewObservableCollection) { heh.Use = false; } foreach (var ye in VariableModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } foreach (var ye in FixedModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } massDiffAcceptExact.IsChecked = task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.Exact; massDiffAccept1mm.IsChecked = task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.OneMM; massDiffAccept2mm.IsChecked = task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.TwoMM; massDiffAccept3mm.IsChecked = task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.ThreeMM; massDiffAccept187.IsChecked = task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.ModOpen; massDiffAcceptOpen.IsChecked = task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.Open; massDiffAcceptCustom.IsChecked = task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.Custom; if (task.SearchParameters.MassDiffAcceptorType == MassDiffAcceptorType.Custom) { customkMdacTextBox.Text = task.SearchParameters.CustomMdac; } writePrunedDBCheckBox.IsChecked = task.SearchParameters.WritePrunedDatabase; UpdateModSelectionGrid(); }
public void AddAdditionalLabel(SilacInfoForDataGrid label) { SilacLabel.AddRange(label.SilacLabel); LabelFormula.AddRange(label.LabelFormula); AminoAcidLabels += " & " + label.AminoAcidLabels; }