Using filter#
The smact_filter function from the smact.screening module screens possible combinations of elements in a chemical system. It applies chemical rules to filter and return valid compositions.
In the following example, we apply smact_filter to a combination of elements to find valid compositions within a stoichiometry threshold.
import smact
from smact.screening import smact_filter
import pprint
# Define a list of elements to screen
elements = ["Ti", "Ga", "O"]
# Convert element symbols into smact.Element objects
element_objects = [smact.Element(e) for e in elements]
# Apply smact_filter to find valid compositions within a stoichiometry threshold
allowed_combinations = smact_filter(element_objects, threshold=3)
# Display the allowed combinations in a readable format
pprint.pprint("(elements), (charges), (stoichiometry)")
pprint.pprint(allowed_combinations)
'(elements), (charges), (stoichiometry)'
[(('Ti', 'Ga', 'O'), (1, 1, -2), (1, 1, 1)),
(('Ti', 'Ga', 'O'), (1, 1, -2), (1, 3, 2)),
(('Ti', 'Ga', 'O'), (1, 1, -2), (3, 1, 2)),
(('Ti', 'Ga', 'O'), (1, 1, -1), (1, 1, 2)),
(('Ti', 'Ga', 'O'), (1, 1, -1), (1, 2, 3)),
(('Ti', 'Ga', 'O'), (1, 1, -1), (2, 1, 3)),
(('Ti', 'Ga', 'O'), (1, 2, -2), (2, 1, 2)),
(('Ti', 'Ga', 'O'), (1, 2, -2), (2, 2, 3)),
(('Ti', 'Ga', 'O'), (1, 2, -1), (1, 1, 3)),
(('Ti', 'Ga', 'O'), (1, 3, -2), (1, 1, 2)),
(('Ti', 'Ga', 'O'), (1, 3, -2), (3, 1, 3)),
(('Ti', 'Ga', 'O'), (2, 1, -2), (1, 2, 2)),
(('Ti', 'Ga', 'O'), (2, 1, -2), (2, 2, 3)),
(('Ti', 'Ga', 'O'), (2, 1, -1), (1, 1, 3)),
(('Ti', 'Ga', 'O'), (2, 2, -2), (1, 1, 2)),
(('Ti', 'Ga', 'O'), (2, 2, -2), (1, 2, 3)),
(('Ti', 'Ga', 'O'), (2, 2, -2), (2, 1, 3)),
(('Ti', 'Ga', 'O'), (3, 1, -2), (1, 1, 2)),
(('Ti', 'Ga', 'O'), (3, 1, -2), (1, 3, 3)),
(('Ti', 'Ga', 'O'), (3, 3, -2), (1, 1, 3)),
(('Ti', 'Ga', 'O'), (4, 1, -2), (1, 2, 3)),
(('Ti', 'Ga', 'O'), (4, 2, -2), (1, 1, 3))]