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();
        }
Beispiel #4
0
 public void AddAdditionalLabel(SilacInfoForDataGrid label)
 {
     SilacLabel.AddRange(label.SilacLabel);
     LabelFormula.AddRange(label.LabelFormula);
     AminoAcidLabels += " & " + label.AminoAcidLabels;
 }