public void GenerateIsotopologues() { Peptide pep = new Peptide("DERLEK"); var a = pep.GenerateAllModificationCombinations().ToArray(); Assert.AreEqual(0, a.Count()); var i = new ModificationWithMultiplePossibilitiesCollection("My Iso Mod", ModificationSites.E); i.AddModification(new OldSchoolModification(1, "My Mod1a", ModificationSites.E)); i.AddModification(new OldSchoolModification(2, "My Mod2b", ModificationSites.E)); pep.SetModification(i); var i2 = new ModificationWithMultiplePossibilitiesCollection("My Iso Mod2", ModificationSites.R); i2.AddModification(new OldSchoolModification(1, "My Mod2a", ModificationSites.R)); i2.AddModification(new OldSchoolModification(2, "My Mod2b", ModificationSites.R)); i2.AddModification(new OldSchoolModification(3, "My Mod2c", ModificationSites.R)); pep.SetModification(i2); a = pep.GenerateAllModificationCombinations().ToArray(); // Only 6 and not 12, because in the first modification, it is one choice that is substituted across all modification sites Assert.AreEqual(6, a.Count()); }