/// <summary> /// Get the number of proteoform sequences possible with the provided number of dynamic modifications /// </summary> /// <param name="nDynMods"></param> /// <returns></returns> public double GetNumProteoformSequencesByNumMods(int nDynMods) { if (nDynMods < 1 || nDynMods > ModificationParams.MaxNumDynModsPerSequence) { return(0); } var numModCombs = _graph[_index].Length; var nProteoforms = 0d; for (var modIndex = 0; modIndex < numModCombs; modIndex++) { var modCombs = ModificationParams.GetModificationCombination(_graph[_index][modIndex].ModificationCombinationIndex); if (modCombs.GetNumModifications() < nDynMods) { continue; } if (modCombs.GetNumModifications() > nDynMods) { break; } nProteoforms += GetNumProteoformSequences(modIndex); //if (nProteoforms > double.MaxValue) return double.MaxValue; // overflow } return(nProteoforms); }
/// <summary> /// Get the modification combinations in the current sequence graph /// </summary> /// <returns></returns> public ModificationCombination[] GetModificationCombinations() { var numModCombs = _graph[_index].Length; var modCombs = new ModificationCombination[numModCombs]; for (var modIndex = 0; modIndex < numModCombs; modIndex++) { modCombs[modIndex] = ModificationParams.GetModificationCombination(_graph[_index][modIndex].ModificationCombinationIndex); } return(modCombs); }
public void TestModificationParams() { var methodName = MethodBase.GetCurrentMethod().Name; ShowStarting(methodName); var modifications = new[] { Modification.Acetylation, Modification.Phosphorylation, Modification.Oxidation}; //, Modification.PyroGluQ }; var modParams = new ModificationParams(modifications, 3); int numCombinations = modParams.NumModificationCombinations; for (int modCombIndex = 0; modCombIndex < numCombinations; modCombIndex++) { var modCombination = modParams.GetModificationCombination(modCombIndex); Console.WriteLine("{0}: {1} {2} {3}", modCombIndex, modCombination, modCombination.Composition, modCombination.Composition.Mass); } Console.WriteLine(modParams.GetModificationCombinationIndex(8, 0)); Console.WriteLine(modParams.GetModificationCombinationIndex(19, 1)); }