1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#!/usr/bin/env python
import unittest
import numpy as np
from weblogo.matrix import AlphabeticArray, Motif
from weblogo.seq import protein_alphabet
from . import data_stream
class test_AlphabeticArray(unittest.TestCase):
def test_create(self) -> None:
matrix = AlphabeticArray((protein_alphabet, protein_alphabet))
matrix["A", "C"] = 10
assert matrix[0, 1] == 10.0
class test_Motif(unittest.TestCase):
def test_read_transfac_alphabet_superset(self) -> None:
with data_stream("transfac_matrix.txt") as f:
Motif.read_transfac(f, alphabet="TCGA")
# Supplied alphabet can be superset of defacto alphabet.
# Reverts to defacto alphabet
with data_stream("transfac_matrix.txt") as f:
Motif.read_transfac(f, alphabet="TCGAXYZ")
def test_read_transfac(self) -> None:
f = data_stream("transfac_matrix.txt")
m = Motif.read_transfac(f)
f.close()
assert m[3, "A"] == 0.0
assert m[0, "G"] == 2.0
assert np.shape(m.array) == (12, 4)
f.close()
f = data_stream("transfac_matrix2.txt")
m = Motif.read_transfac(f)
f.close()
assert m[3, "A"] == 3.0
assert m[0, "G"] == 152.0
assert np.shape(m.array) == (15, 4)
# this one has extra Ps on start of each line
f = data_stream("transfac_matrix3.txt")
m = Motif.read_transfac(f)
f.close()
def test_reindex(self) -> None:
f = data_stream("transfac_matrix.txt")
m = Motif.read_transfac(f)
f.close()
m2 = m.reindex("TCGA")
assert str(m2.alphabet) == "TCGA"
for k in range(0, 12):
for i, a in enumerate("AGCT"):
assert m[k, a] == m2[k, a]
def test_reverse(self) -> None:
f = data_stream("transfac_matrix.txt")
m = Motif.read_transfac(f)
f2 = data_stream("transfac_matrix.txt")
m2 = Motif.read_transfac(f2)
m2.reverse()
(K, N) = np.shape(m2)
for k in range(0, K):
for n in range(0, N):
assert m[k, n] == m2[K - k - 1, n]
f.close()
f2.close()
def test_complement(self) -> None:
f = data_stream("transfac_matrix.txt")
m = Motif.read_transfac(f)
f2 = data_stream("transfac_matrix.txt")
m2 = Motif.read_transfac(f2)
m2.complement()
(K, N) = np.shape(m2)
for k in range(0, K):
assert m[k, "A"] == m2[k, "T"]
assert m[k, "G"] == m2[k, "C"]
assert m[k, "C"] == m2[k, "G"]
assert m[k, "T"] == m2[k, "A"]
f.close()
f2.close()
def test_reverse_complement(self) -> None:
f = data_stream("transfac_matrix.txt")
m = Motif.read_transfac(f)
f2 = data_stream("transfac_matrix.txt")
m2 = Motif.read_transfac(f2)
m.complement()
m.reverse()
m2.reverse_complement()
assert (m.array == m2.array).all()
f.close()
f2.close()
if __name__ == "__main__":
unittest.main()
|