Skip to content

CederGroupHub/ReactionCompleter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReactionCompleter

This module computes valid chemical reactions using list of precursor and target materials. It is capable of using some simple heuristics to complete or guess missing or excessive materials in the given lists of materials.

Build Status

Usage

The primary function to be used is balance_recipe(precursors, targets, synthesis_paragraph). An example is as follows:

from reaction_completer import balance_recipe


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": "MnO",
        "material_string": "MnO",
        "composition": [
            {
                "formula": "MnO",
                "elements": {"Mn": "1.0", "O": "1.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"]
        },
        "additives": ["Mn2+"]
    },
]
text = [
    "SrCO3, Al2O3, MnO and Fe2O3 are used to synthesize Mn2+doped-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)

# Output:
# [(
#     'Sr6(A2O4)6', {
#         'left': {'SrCO3': '6', 'Fe2O3': '6'},
#         'right': {'Sr6(A2O4)6': '1', 'CO2': '6'}
#     },
#     {'A': 'Fe'},
#     '6 SrCO3 + 6 Fe2O3 == 1 Sr6(A2O4)6 + 6 CO2; A = Fe ; target Sr6(A2O4)6 with additives Mn2+ via MnO'
# ),
# (
#     'Sr6(A2O4)6', {
#         'left': {'SrCO3': '6', 'Al2O3': '6'},
#         'right': {'Sr6(A2O4)6': '1', 'CO2': '6'}
#     },
#     {'A': 'Al'},
#     '6 SrCO3 + 6 Al2O3 == 1 Sr6(A2O4)6 + 6 CO2; A = Al ; target Sr6(A2O4)6 with additives Mn2+ via MnO'
# )]

About

Heuristics to complete a chemical reaction

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages