Source code for rpxdock.tests.motif.test_motif

from rpxdock.motif import *
from rpxdock.xbin import Xbin, xbin_util as xu
import pytest

[docs]def pair_key_ss_py(xbin, resi, resj, ss, stub): ssi = ss[resi] ssj = ss[resj] kij = xu.key_of_selected_pairs(xbin, resi, resj, stub, stub) kji = xu.key_of_selected_pairs(xbin, resj, resi, stub, stub) assert kij.dtype == np.uint64 ssi = ssi.astype("u8") ssj = ssj.astype("u8") kijss = np.bitwise_or(np.left_shift(ssi, 62), np.left_shift(ssj, 60)) kjiss = np.bitwise_or(np.left_shift(ssj, 62), np.left_shift(ssi, 60)) kssij = np.bitwise_or(kij, kijss) kssji = np.bitwise_or(kji, kjiss) # assert np.all(np.right_shift(kssij, 62) == ssi) # assert np.all(np.right_shift(kssji, 62) == ssj) # assert np.all(np.right_shift(np.left_shift(kssij, 2), 62) == ssj) # assert np.all(np.right_shift(np.left_shift(kssji, 2), 62) == ssi) # assert np.all(np.right_shift(np.left_shift(kssij, 4), 4) == kij) # assert np.all(np.right_shift(np.left_shift(kssji, 4), 4) == kji) return kssij, kssji
[docs]def get_pair_keys_ss_py(rp, xbin, min_ssep): mask = (rp.p_resj - rp.p_resi).data >= min_ssep resi = rp.p_resi.data[mask] resj = rp.p_resj.data[mask] stub = rp.stub.data ss = rp.ssid.data kij = np.zeros(len(rp.p_resi), dtype="u8") kji = np.zeros(len(rp.p_resi), dtype="u8") kij[mask], kji[mask] = pair_key_ss_py(xbin, resi, resj, ss, stub) return kij, kji
[docs]def test_jagged_bin(): kij = np.random.randint(1, 9e2, int(9e3)).astype("u8") kji = np.random.randint(1, 9e2, int(9e3)).astype("u8") k = np.concatenate([kij, kji]) order, binkey, binrange = cpp.jagged_bin(k) kord = k[order] assert np.all(np.diff(kord) >= 0) lb, ub = binrange.view("u4").reshape(-1, 2).swapaxes(0, 1) assert np.sum(ub == lb) == 0, "not empty" assert np.all(kord[lb] == binkey) assert np.all(kord[ub - 1] == binkey)
[docs]def test_jagged_bin_zero(): N = 1000 kij = np.random.randint(1, 9e2, N).astype("u8") kji = np.random.randint(1, 9e2, N).astype("u8") kij[np.random.randint(0, 2, N) == 0] = 0 kji[np.random.randint(0, 2, N) == 0] = 0 k = np.concatenate([kij, kji]) order, binkey, binrange = cpp.jagged_bin(k) kord = k[order] assert np.all(np.diff(kord) >= 0) lb, ub = binrange.view("u4").reshape(-1, 2).swapaxes(0, 1) assert np.sum(ub == lb) == 0, "not empty" assert np.all(kord[lb] == binkey) assert np.all(kord[ub - 1] == binkey)
[docs]def test_pair_key_ss(respairdat): xbin = Xbin(1, 20) rp = respairdat kij, kji = get_pair_keys(rp, xbin, min_pair_score=0, min_ssep=0, use_ss_key=True) kij2, kji2 = get_pair_keys_ss_py(rp, xbin, min_ssep=0) assert np.all(kij == kij2) assert np.all(kji == kji2) ss = rp.ssid.data resi = rp.p_resi.data resj = rp.p_resj.data assert np.all(np.right_shift(kij, 62) == ss[resi]) assert np.all(np.right_shift(kji, 62) == ss[resj]) assert np.all(np.right_shift(np.left_shift(kij, 2), 62) == ss[resj]) assert np.all(np.right_shift(np.left_shift(kji, 2), 62) == ss[resi])
[docs]def test_pair_key(respairdat): xbin = Xbin(1, 20) rp = respairdat kij, kji = get_pair_keys(rp, xbin, min_pair_score=0, min_ssep=0, use_ss_key=False) kij2 = xu.key_of_selected_pairs(xbin, rp.p_resi.data, rp.p_resj.data, rp.stub.data, rp.stub.data) kji2 = xu.key_of_selected_pairs(xbin, rp.p_resj.data, rp.p_resi.data, rp.stub.data, rp.stub.data) assert np.all(kij == kij2) assert np.all(kji == kji2)
# @pytest.mark.slow
[docs]def test_respairdat_addrots(respairdat): rotspace = get_rotamer_space() add_rots_to_respairdat(respairdat, rotspace) m, s = check_rotamer_deviation(respairdat, rotspace, quiet=1) assert m < 20 assert s < 20 xbin = Xbin(cart_resl=1, ori_resl=20) add_xbin_to_respairdat(respairdat, xbin, min_pair_score=0, min_ssep=10, use_ss_key=True)
[docs]def test_remove_redundant_pdbs(): pdbs = "12AS 155C 16PK 16VP 1914 19HC 1A04 1A05 1A0C 1A0D".split() assert 3 == len(remove_redundant_pdbs(pdbs, 30)) assert 4 == len(remove_redundant_pdbs(pdbs, 40)) assert 5 == len(remove_redundant_pdbs(pdbs, 50)) assert 7 == len(remove_redundant_pdbs(pdbs, 70)) assert 9 == len(remove_redundant_pdbs(pdbs, 90)) assert 10 == len(remove_redundant_pdbs(pdbs, 95))
# if __name__ == "__main__": # # respairdat = # # test_jagged_bin() # test_jagged_bin_zero() # # test_respairdat()