def test_init_minimal(self): """MolType should init OK with just monomers""" a = MolType("Abc") self.assertIn("A", a.alphabet) self.assertNotIn("a", a.alphabet) # case-sensitive self.assertIn("b", a.alphabet) self.assertNotIn("B", a.alphabet) self.assertNotIn("x", a.alphabet)
def test_init_minimal(self): """MolType should init OK with just monomers""" a = MolType("Abc") self.assertContains(a.alphabet, "A") self.assertNotContains(a.alphabet, "a") # case-sensitive self.assertContains(a.alphabet, "b") self.assertNotContains(a.alphabet, "B") self.assertNotContains(a.alphabet, "x")
def test_count_gaps(self): """MolType count_gaps should return correct gap count""" c = RnaMolType.count_gaps self.assertEqual(c(""), 0) self.assertEqual(c("ACUGUCAGUACGHFSDKJCUICDNINS"), 0) self.assertEqual(c("GUACGUIACAKJDC-SDFHJDSFK"), 1) self.assertEqual(c("-DSHFUHDSF"), 1) self.assertEqual(c("UACHASJAIDS-"), 1) self.assertEqual(c("---CGAUgCAU---ACGHc---ACGUCAGU---"), 12) a = MolType({"A": 1}, gaps=dict.fromkeys("!@#$%")) c = a.count_gaps self.assertEqual(c(""), 0) self.assertEqual(c("!!!"), 3) self.assertEqual(c("!@#$!@#$!@#$"), 12) self.assertEqual(c("cguua!cgcuagua@cguasguadc#"), 3)
def test_gap_indices(self): """MolType gap_indices should return correct gap positions""" g = RnaMolType.gap_indices self.assertEqual(g(""), []) self.assertEqual(g("ACUGUCAGUACGHFSDKJCUICDNINS"), []) self.assertEqual(g("GUACGUIACAKJDC-SDFHJDSFK"), [14]) self.assertEqual(g("-DSHFUHDSF"), [0]) self.assertEqual(g("UACHASJAIDS-"), [11]) self.assertEqual( g("---CGAUgCAU---ACGHc---ACGUCAGU---"), [0, 1, 2, 11, 12, 13, 19, 20, 21, 30, 31, 32], ) a = MolType({"A": 1}, gaps=dict.fromkeys("!@#$%")) g = a.gap_indices self.assertEqual(g(""), []) self.assertEqual(g("!!!"), [0, 1, 2]) self.assertEqual(g("!@#$!@#$!@#$"), list(range(12))) self.assertEqual(g("cguua!cgcuagua@cguasguadc#"), [5, 14, 25])
def test_init_everything(self): """MolType should init OK with all parameters set""" k = dict.fromkeys a = MolType( k("Abc"), ambiguities={"d": "bc"}, gaps=k("~"), complements={"b": "c", "c": "b"}, pairs={}, add_lower=False, ) for i in "Abcd~": self.assertIn(i, a) self.assertEqual(a.complement("b"), "c") self.assertEqual(a.complement("AbcAA"), "AcbAA") self.assertEqual(a.first_degenerate("AbcdA"), 3) self.assertEqual(a.first_gap("a~c"), 1) self.assertEqual(a.first_invalid("Abcx"), 3)
def test_iter(self): """MolType iter should iterate over monomer order""" self.assertEqual(list(RnaMolType), ["U", "C", "A", "G", "u", "c", "a", "g"]) a = MolType("ZXCV") self.assertEqual(list(a), ["Z", "X", "C", "V"])
__email__ = "*****@*****.**" __status__ = "Production" # ind some of the standard alphabets to reduce typing RnaBases = RNA.alphabets.base DnaBases = DNA.alphabets.base AminoAcids = PROTEIN.alphabets.base # the following classes are to preserve compatibility for older test code # that assumes mixed-case is OK. RnaMolType = MolType( seq_constructor=sequence.RnaSequence, motifset=IUPAC_RNA_chars, ambiguities=IUPAC_RNA_ambiguities, label="rna_with_lowercase", mw_calculator=RnaMW, complements=IUPAC_RNA_ambiguities_complements, pairs=RnaStandardPairs, add_lower=True, preserve_existing_moltypes=True, make_alphabet_group=True, ) DnaMolType = MolType( seq_constructor=sequence.DnaSequence, motifset=IUPAC_DNA_chars, ambiguities=IUPAC_DNA_ambiguities, label="dna_with_lowercase", mw_calculator=DnaMW, complements=IUPAC_DNA_ambiguities_complements, pairs=DnaStandardPairs, add_lower=True, preserve_existing_moltypes=True,