Skip to content

Commit

Permalink
add test for reaction completer
Browse files Browse the repository at this point in the history
  • Loading branch information
hhaoyan committed Jul 25, 2019
1 parent b31da66 commit 30c2f4d
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 92 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
.DS_Store
.idea/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
2 changes: 1 addition & 1 deletion reaction_completer/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from reaction_completer.completer import ReactionCompleter
from reaction_completer.completer import ReactionCompleter, balance_recipe
from reaction_completer.errors import *
from reaction_completer.material import MaterialInformation
91 changes: 0 additions & 91 deletions reaction_completer/completer.py
Original file line number Diff line number Diff line change
Expand Up @@ -530,94 +530,3 @@ def material_dict_to_object(material_dict, sub_dict=None):
target_object.material_formula,
[x.material_formula for x in precursor_objects], e)
return solutions


def demo():
logging.basicConfig(level=logging.DEBUG)
precursors = [
{
"material_formula": "SrCO3",
"material_string": "SrCO3",
"composition": [
{
"formula": "SrCO3",
"elements": {"Sr": "1.0", "C": "1.0", "O": "3.0"},
"amount": "1.0"
}
],
},
{
"material_formula": "Al2O3",
"material_string": "Al2O3",
"composition": [
{
"formula": "Al2O3",
"elements": {"Al": "2.0", "O": "3.0"},
"amount": "1.0"
}
],
},
{
"material_formula": "Fe2O3",
"material_string": "Fe2O3",
"composition": [
{
"formula": "Fe2O3",
"elements": {"Fe": "2.0", "O": "3.0"},
"amount": "1.0"
}
],
},
{
"material_formula": "ZrO2",
"material_string": "ZrO2",
"composition": [
{
"formula": "ZrO2",
"elements": {"Zr": "1.0", "O": "2.0"},
"amount": "1.0"
}
]
},
{
"material_formula": "H2O",
"material_string": "H2O",
"composition": [
{
"formula": "H2O",
"elements": {"O": "1.0", "H": "2.0"},
"amount": "1.0"
}
]
},
]
targets = [
{
"material_formula": "Sr6(A2O4)6",
"material_string": "Sr6(A2O4)6",
"composition": [
{
"formula": "Sr6(Fe2O4)6",
"elements": {"A": "12.0", "O": "24.0", "Sr": "6.0"},
"amount": "1.0"
}
],
"elements_vars": {
"A": ["Fe", "Al"]
},
},
]
text = [
"SrCO3, Al2O3 and Fe2O3 are used to synthesize Sr6(A2O4)6, A=Fe, Al.",
"Milling media is ZrO2",
"There is some H2O found in the final product."
]

reactions = balance_recipe(precursors, targets, text)
print('Found', len(reactions), 'reactions')
for reaction in reactions:
print(reaction)


if __name__ == '__main__':
demo()
106 changes: 106 additions & 0 deletions reaction_completer/test/test_completer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
from unittest import TestCase

from reaction_completer import balance_recipe


class TestElementSubstitution(TestCase):
def test_simple(self):
"""
SrCO3 + Al2O3 + Fe2O3 ==== Sr6(A2O4)6, A=Al, Fe
"""
precursors = [
{
"material_formula": "SrCO3",
"material_string": "SrCO3",
"composition": [
{
"formula": "SrCO3",
"elements": {"Sr": "1.0", "C": "1.0", "O": "3.0"},
"amount": "1.0"
}
],
},
{
"material_formula": "Al2O3",
"material_string": "Al2O3",
"composition": [
{
"formula": "Al2O3",
"elements": {"Al": "2.0", "O": "3.0"},
"amount": "1.0"
}
],
},
{
"material_formula": "Fe2O3",
"material_string": "Fe2O3",
"composition": [
{
"formula": "Fe2O3",
"elements": {"Fe": "2.0", "O": "3.0"},
"amount": "1.0"
}
],
},
{
"material_formula": "ZrO2",
"material_string": "ZrO2",
"composition": [
{
"formula": "ZrO2",
"elements": {"Zr": "1.0", "O": "2.0"},
"amount": "1.0"
}
]
},
{
"material_formula": "H2O",
"material_string": "H2O",
"composition": [
{
"formula": "H2O",
"elements": {"O": "1.0", "H": "2.0"},
"amount": "1.0"
}
]
},
]
targets = [
{
"material_formula": "Sr6(A2O4)6",
"material_string": "Sr6(A2O4)6",
"composition": [
{
"formula": "Sr6(Fe2O4)6",
"elements": {"A": "12.0", "O": "24.0", "Sr": "6.0"},
"amount": "1.0"
}
],
"elements_vars": {
"A": ["Fe", "Al"]
},
},
]
text = [
"SrCO3, Al2O3 and Fe2O3 are used to synthesize Sr6(A2O4)6, A=Fe, Al.",
"Milling media is ZrO2",
"There is some H2O found in the final product."
]

reactions = balance_recipe(precursors, targets, text)
self.assertListEqual(reactions, [
(
'Sr6(A2O4)6', {
'left': {'SrCO3': '6', 'Fe2O3': '6'},
'right': {'Sr6(A2O4)6': '1', 'CO2': '6'}
},
{'A': 'Fe'}
),
(
'Sr6(A2O4)6', {
'left': {'SrCO3': '6', 'Al2O3': '6'},
'right': {'Sr6(A2O4)6': '1', 'CO2': '6'}
},
{'A': 'Al'}
)
])

0 comments on commit 30c2f4d

Please sign in to comment.