/
test_manifest.py
93 lines (66 loc) · 2.46 KB
/
test_manifest.py
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
"""
Tests for manifest code in databases, etc.
"""
from io import StringIO
import sourmash
from sourmash import index
import sourmash_tst_utils as utils
def test_generate_manifest():
# test basic manifest-generating functionality.
protzip = utils.get_test_data('prot/protein.zip')
loader = sourmash.load_file_as_index(protzip)
rows = []
siglist = []
for (sig, _, loc) in loader._signatures_with_internal():
row = index.CollectionManifest.make_manifest_row(sig, loc)
rows.append(row)
siglist.append(sig)
manifest = index.CollectionManifest(rows)
assert len(manifest) == len(rows)
assert len(manifest) == 2
md5_list = [ row['md5'] for row in manifest.rows ]
assert '16869d2c8a1d29d1c8e56f5c561e585e' in md5_list
assert '120d311cc785cc9d0df9dc0646b2b857' in md5_list
for sig in siglist:
assert sig in manifest
def test_manifest_to_picklist():
# test manifest/picklist interaction basics
protzip = utils.get_test_data('prot/protein.zip')
loader = sourmash.load_file_as_index(protzip)
rows = []
siglist = []
for (sig, _, loc) in loader._signatures_with_internal():
row = index.CollectionManifest.make_manifest_row(sig, loc)
rows.append(row)
siglist.append(sig)
manifest = index.CollectionManifest(rows)
picklist = manifest.to_picklist()
assert len(picklist.pickset) == len(manifest)
new_manifest = manifest.select_to_manifest(picklist=picklist)
assert len(new_manifest) == len(manifest)
def test_save_load_manifest():
# test saving and loading manifests
protzip = utils.get_test_data('prot/protein.zip')
loader = sourmash.load_file_as_index(protzip)
rows = []
siglist = []
for (sig, _, loc) in loader._signatures_with_internal():
row = index.CollectionManifest.make_manifest_row(sig, loc)
rows.append(row)
siglist.append(sig)
manifest = index.CollectionManifest(rows)
# now, on to CSV
fp = StringIO()
manifest.write_csv_header(fp)
manifest.write_to_csv(fp)
rfp = StringIO(fp.getvalue())
manifest2 = index.CollectionManifest.load_from_csv(rfp)
assert len(manifest) == len(manifest2)
pick1 = manifest.to_picklist()
pick2 = manifest2.to_picklist()
# manifest 1 in manifest2?
for row in manifest.rows:
assert pick2.matches_manifest_row(row)
# manifest 2 in manifest?
for row in manifest2.rows:
assert pick1.matches_manifest_row(row)