def __init__( self, chars, degens, gap=IUPAC_gap, missing=IUPAC_missing, moltype=None, constructor=None, ): """Returns new AlphabetGroup.""" if constructor is None: if max(list(map(len, chars))) == 1: constructor = CharAlphabet chars = "".join(chars) degens = "".join(degens) else: constructor = Alphabet # assume multi-char self.base = constructor(chars, moltype=moltype) self.degen = constructor(chars + degens, moltype=moltype) self.gapped = constructor(chars + gap, gap, moltype=moltype) self.degen_gapped = constructor(chars + gap + degens + missing, gap, moltype=moltype) self._items = [self.base, self.degen, self.gapped, self.degen_gapped] self._set_relationships() # set complements if MolType was specified if moltype is not None: comps = moltype.complements for i in self._items: i._complement_array = _make_complement_array(i, comps)
def test_make_complement_array(self): """_make_complement_array should identify complements correctly""" complement_array = _make_complement_array(RNA.alphabet, RNA.complements) test = "UCAG" test_array = [RNA.alphabet.index(i) for i in test] complements = complement_array.take(test_array) result = "".join([RNA.alphabet[i] for i in complements]) self.assertEqual(result, "AGUC")