def test_contains(self): """MolType contains should return correct result""" for i in 'UCAGWSMKRYBDHVN-' + 'UCAGWSMKRYBDHVN-'.lower(): self.assertContains(RnaMolType, i) for i in 'x!@#$%^&ZzQq': self.assertNotContains(RnaMolType, i) a = MolType(dict.fromkeys('ABC'), add_lower=True) for i in 'abcABC': self.assertContains(a, i) self.assertNotContains(a, 'x') b = MolType(dict.fromkeys('ABC'), add_lower=False) for i in 'ABC': self.assertContains(b, i) for i in 'abc': self.assertNotContains(b, i)
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_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.assertContains(a, i) self.assertEqual(a.complement('b'), 'c') self.assertEqual(a.complement('AbcAA'), 'AcbAA') self.assertEqual(a.firstDegenerate('AbcdA'), 3) self.assertEqual(a.firstGap('a~c'), 1) self.assertEqual(a.firstInvalid('Abcx'), 3)
def test_countGaps(self): """MolType countGaps should return correct gap count""" c = RnaMolType.countGaps 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.countGaps self.assertEqual(c(''), 0) self.assertEqual(c('!!!'), 3) self.assertEqual(c('!@#$!@#$!@#$'), 12) self.assertEqual(c('cguua!cgcuagua@cguasguadc#'), 3)
def test_gapList(self): """MolType gapList should return correct gap positions""" g = RnaMolType.gapList 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.gapList 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_gapVector(self): """MolType gapVector should return correct gap positions""" g = RnaMolType.gapVector self.assertEqual(g(''), []) self.assertEqual(g('ACUGUCAGUACGHFSDKJCUICDNINS'), [False] * 27) self.assertEqual(g('GUACGUIACAKJDC-SDFHJDSFK'), map(bool, map(int, '000000000000001000000000'))) self.assertEqual(g('-DSHFUHDSF'), map(bool, map(int, '1000000000'))) self.assertEqual(g('UACHASJAIDS-'), map(bool, map(int, '000000000001'))) self.assertEqual(g('---CGAUgCAU---ACGHc---ACGUCAGU---'), \ map(bool, map(int,'111000000001110000011100000000111'))) a = MolType({'A': 1}, Gaps=dict.fromkeys('!@#$%')) g = a.gapVector self.assertEqual(g(''), []) self.assertEqual(g('!!!'), map(bool, [1, 1, 1])) self.assertEqual(g('!@#$!@#$!@#$'), [True] * 12) self.assertEqual(g('cguua!cgcuagua@cguasguadc#'), map(bool, map(int, '00000100000000100000000001')))
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( Sequence=sequence.RnaSequence, motifset=IUPAC_RNA_chars, Ambiguities=IUPAC_RNA_ambiguities, label="rna_with_lowercase", MWCalculator=RnaMW, Complements=IUPAC_RNA_ambiguities_complements, Pairs=RnaStandardPairs, add_lower=True, preserve_existing_moltypes=True, make_alphabet_group=True, ) DnaMolType = MolType( Sequence=sequence.DnaSequence, motifset=IUPAC_DNA_chars, Ambiguities=IUPAC_DNA_ambiguities, label="dna_with_lowercase", MWCalculator=DnaMW, Complements=IUPAC_DNA_ambiguities_complements, Pairs=DnaStandardPairs, add_lower=True, preserve_existing_moltypes=True,
""" try: validity = isinstance(a, ndarray) except: validity = False return validity #make an alphabet that allows '.' as additional gaps DNA_with_more_gaps = MolType( Sequence=DnaSequence, motifset=IUPAC_DNA_chars, Ambiguities=IUPAC_DNA_ambiguities, label="dna", Gaps=".", MWCalculator=DnaMW, Complements=IUPAC_DNA_ambiguities_complements, Pairs=DnaStandardPairs, make_alphabet_group=True, ModelSeq=ModelDnaSequence, ) def degap_fasta_aln(seqs): """degap a Fasta aligment. seqs: list of label,seq pairs """ for (label, seq) in seqs: degapped_seq = Sequence(moltype=DNA_with_more_gaps,