public List <TypedExplicitModifications> PermuteTypedExplicitModifications(IList <IsotopeLabelType> partialLabelTypes, PeptideDocNode peptideDocNode, IList <int> potentiallyModifiedResidues)
        {
            var typedExplicitMods = new List <TypedExplicitModifications>();
            List <ImmutableList <int> > permutations;

            if (SimplePermutation)
            {
                permutations = GenerateSimplePermutations(potentiallyModifiedResidues).ToList();
            }
            else
            {
                permutations = GenerateComplexPermutations(potentiallyModifiedResidues).ToList();
            }

            for (int i = 1; i < permutations.Count; i++)
            {
                IsotopeLabelType labelType;
                if (i == permutations.Count - 1)
                {
                    labelType = FullyHeavyLabelType;
                }
                else
                {
                    labelType = partialLabelTypes[i];
                }

                var explicitMods = permutations[i].Select(indexAA => new ExplicitMod(indexAA, IsotopeModification)).ToList();
                var typedMods    = new TypedExplicitModifications(peptideDocNode.Peptide, labelType, explicitMods);
                typedExplicitMods.Add(typedMods);
            }

            return(typedExplicitMods);
        }
示例#2
0
        public void OkDialog()
        {
            var peptide             = NodePeptide.Peptide;
            var explicitModsCurrent = NodePeptide.ExplicitMods;
            var modsDoc             = DocSettings.PeptideSettings.Modifications;
            var implicitMods        = new ExplicitMods(NodePeptide,
                                                       modsDoc.StaticModifications, Settings.Default.StaticModList,
                                                       modsDoc.GetHeavyModifications(), Settings.Default.HeavyModList);

            // Get static modifications from the dialog, and check for equality with
            // the document implicit modifications.
            TypedExplicitModifications staticTypedMods = null;
            bool isVariableStaticMods = false;
            var  staticMods           = GetExplicitMods(_listComboStatic, Settings.Default.StaticModList);

            if (ArrayUtil.EqualsDeep(staticMods, implicitMods.StaticModifications))
            {
                if (!NodePeptide.HasVariableMods)
                {
                    staticMods = null;  // Use implicit modifications
                }
                else
                {
                    staticMods           = explicitModsCurrent.StaticModifications;
                    isVariableStaticMods = true;
                }
            }
            else if (explicitModsCurrent != null &&
                     ArrayUtil.EqualsDeep(staticMods, explicitModsCurrent.StaticModifications))
            {
                staticMods = explicitModsCurrent.StaticModifications;
            }
            if (staticMods != null)
            {
                staticTypedMods = new TypedExplicitModifications(peptide,
                                                                 IsotopeLabelType.light, staticMods);
            }

            var listHeavyTypedMods = new List <TypedExplicitModifications>();

            for (int i = 0; i < _listLabelTypeHeavy.Count; i++)
            {
                var labelType = _listLabelTypeHeavy[i];
                var heavyMods = GetExplicitMods(_listListComboHeavy[i], Settings.Default.HeavyModList);

                if (ArrayUtil.EqualsDeep(heavyMods, implicitMods.GetModifications(labelType)))
                {
                    continue;
                }

                var heavyTypedMods = new TypedExplicitModifications(peptide, labelType, heavyMods);
                listHeavyTypedMods.Add(heavyTypedMods.AddModMasses(staticTypedMods));
            }

            ExplicitMods explicitMods = null;

            if (staticMods != null || listHeavyTypedMods.Count > 0)
            {
                explicitMods = new ExplicitMods(peptide, staticMods, listHeavyTypedMods, isVariableStaticMods);
            }
            Helpers.AssignIfEquals(ref explicitMods, explicitModsCurrent);
            ExplicitMods = explicitMods;

            DialogResult = DialogResult.OK;
            Close();
        }