Source code for aiida_lsmo.calcfunctions.oxidation_state

# -*- coding: utf-8 -*-
"""CalcFunction to compute the oxidation states of metals using oximachine"""
from aiida.engine import calcfunction
from aiida.orm import Dict
import oximachinerunner

OXIMACHINE_RUNNER = oximachinerunner.OximachineRunner(modelname='mof')


[docs]@calcfunction def compute_oxidation_states(cif): """Compute the oxidation states of metals using oximachine :param cif: AiiDA CifData instance :return: AiiDA Dict node """ try: results_dict = OXIMACHINE_RUNNER.run_oximachine(cif.get_ase()) except Exception: # pylint: disable=broad-except results_dict = { k: [] for k in ['metal_indices', 'metal_symbols', 'prediction', 'max_probabs', 'base_predictions'] } results_dict['oximachine_version'] = str(OXIMACHINE_RUNNER) return Dict(dict=results_dict)