Skip to content

Commit 73e85d4

Browse files
committed
added more tests
1 parent dda22ad commit 73e85d4

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

tests/test_chemfrag.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
from quemb.molbe.chemfrag import (
55
ConnectivityData,
6+
SubsetsCleaned,
7+
cleanup_if_subset,
68
)
79

810

@@ -246,3 +248,79 @@ def test_fragment_generation():
246248
}
247249

248250
assert fragments == expected
251+
252+
253+
def test_cleaned_fragments():
254+
"""In this test fragments that are subsets of others are also removed.
255+
It is also tested if the assignment of an origin, i.e. the center with the
256+
lowest index whose fragment is a superset of other fragments, reliably works.
257+
"""
258+
m = Cartesian.read_xyz("data/octane.xyz")
259+
260+
expected = {
261+
1: SubsetsCleaned(
262+
motif_per_frag={
263+
0: OrderedSet([0]),
264+
1: OrderedSet([1]),
265+
6: OrderedSet([6]),
266+
7: OrderedSet([7]),
267+
12: OrderedSet([12]),
268+
13: OrderedSet([13]),
269+
18: OrderedSet([18]),
270+
19: OrderedSet([19]),
271+
},
272+
swallowed_centers={},
273+
),
274+
2: SubsetsCleaned(
275+
motif_per_frag={
276+
0: OrderedSet([0, 1, 7]),
277+
1: OrderedSet([1, 0, 6]),
278+
6: OrderedSet([6, 1, 12]),
279+
7: OrderedSet([7, 0, 13]),
280+
12: OrderedSet([12, 6, 18]),
281+
13: OrderedSet([13, 7, 19]),
282+
},
283+
swallowed_centers={12: OrderedSet([18]), 13: OrderedSet([19])},
284+
),
285+
3: SubsetsCleaned(
286+
motif_per_frag={
287+
0: OrderedSet([0, 1, 7, 6, 13]),
288+
1: OrderedSet([1, 0, 6, 7, 12]),
289+
6: OrderedSet([6, 1, 12, 0, 18]),
290+
7: OrderedSet([7, 0, 13, 1, 19]),
291+
},
292+
swallowed_centers={6: OrderedSet([12, 18]), 7: OrderedSet([13, 19])},
293+
),
294+
4: SubsetsCleaned(
295+
motif_per_frag={
296+
0: OrderedSet([0, 1, 7, 6, 13, 12, 19]),
297+
1: OrderedSet([1, 0, 6, 7, 12, 13, 18]),
298+
},
299+
swallowed_centers={0: OrderedSet([7, 13, 19]), 1: OrderedSet([6, 12, 18])},
300+
),
301+
5: SubsetsCleaned(
302+
motif_per_frag={0: OrderedSet([0, 1, 7, 6, 13, 12, 19, 18])},
303+
swallowed_centers={0: OrderedSet([1, 7, 6, 13, 12, 19, 18])},
304+
),
305+
6: SubsetsCleaned(
306+
motif_per_frag={0: OrderedSet([0, 1, 7, 6, 13, 12, 19, 18])},
307+
swallowed_centers={0: OrderedSet([1, 7, 6, 13, 12, 19, 18])},
308+
),
309+
7: SubsetsCleaned(
310+
motif_per_frag={0: OrderedSet([0, 1, 7, 6, 13, 12, 19, 18])},
311+
swallowed_centers={0: OrderedSet([1, 7, 6, 13, 12, 19, 18])},
312+
),
313+
8: SubsetsCleaned(
314+
motif_per_frag={0: OrderedSet([0, 1, 7, 6, 13, 12, 19, 18])},
315+
swallowed_centers={0: OrderedSet([1, 7, 6, 13, 12, 19, 18])},
316+
),
317+
}
318+
319+
cleaned_fragments = {
320+
n_BE: cleanup_if_subset(
321+
ConnectivityData.from_cartesian(m).all_fragments_sites_only(n_BE)
322+
)
323+
for n_BE in range(1, 9)
324+
}
325+
326+
assert cleaned_fragments == expected

0 commit comments

Comments
 (0)