import _pickle, collections
from rpxdock.search.result import *
[docs]def test_result(result):
a = result.copy()
a.attrs['foo'] = 1
b = result.copy()
b.attrs['bar'] = 2
c = concat_results([a, b])
assert len(c.model) == len(a.model) + len(b.model)
assert c.dockinfo == [a.attrs, b.attrs]
assert np.all(c.ijob == np.repeat([0, 1], len(result)))
[docs]def test_result_pickle(result, tmpdir):
with open(tmpdir + '/foo', 'wb') as out:
_pickle.dump(result, out)
with open(tmpdir + '/foo', 'rb') as inp:
result2 = _pickle.load(inp)
assert result == result2
assert isinstance(result, Result)
assert isinstance(result2, Result)
[docs]def test_result_attrs():
result = Result(foo=np.array(10), attrs=dict(bar='baz'))
assert result.bar == 'baz'
[docs]def test_mismatch_len(result):
result2 = dummy_result(100)
r = concat_results([result, result2])
assert len(result) != len(result2)
assert len(r) == len(result) + len(result2)
[docs]def test_top_each(result):
n = 13
top = result.top_each(n)
for k, v in top.items():
assert len(v) == 13
w = np.where(result.ijob == k)[0]
s = result.scores[w]
o = np.argsort(-s)[:n]
assert np.allclose(s[o], result.scores[v])
[docs]def test_result_no_body_label(result):
foo = Result(result.data, body_=['a', 'b', 'c'])
assert foo.body_label_ == 'body0 body1 body2'.split()
if __name__ == '__main__':
import tempfile
# test_result(dummy_result(1000))
test_result_pickle(dummy_result(1000), tempfile.mkdtemp())
# test_result_attrs()
# test_mismatch_len(dummy_result(1000))
test_top_each(dummy_result(1000))
test_result_no_body_label(dummy_result(1000))