public void ModificationWithMultiplePossibilitiesTest() { var m = new ModificationWithMultiplePossibilitiesCollection("My Iso Mod", ModificationSites.E); m.AddModification(new OldSchoolModification(1, "My Mod1a", ModificationSites.E)); m.AddModification(new OldSchoolModification(2, "My Mod2b", ModificationSites.E)); Assert.AreEqual(2, m.Count); Assert.AreEqual("My Mod2b", m[1].Name); Assert.Throws <ArgumentException>(() => { m.AddModification(new OldSchoolModification(1, "gg", ModificationSites.R)); }, "Unable to add a modification with sites other than ModificationSites.E"); Assert.IsTrue(m.Contains(new OldSchoolModification(2, "My Mod2b", ModificationSites.E))); double kk = 0; IEnumerable a = m; foreach (var b in a) { kk += (b as OldSchoolModification).MonoisotopicMass; } Assert.AreEqual(3, kk); }
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()); }