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); }
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(); }