pymatgen.entries.correction_calculator module

This module calculates corrections for the species listed below, fitted to the experimental and computed entries given to the CorrectionCalculator constructor.

class CorrectionCalculator(species: List[str] = ['oxide', 'peroxide', 'superoxide', 'S', 'F', 'Cl', 'Br', 'I', 'N', 'Se', 'Si', 'Sb', 'Te', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'W', 'Mo', 'H'], max_error: float = 0.1, allow_unstable: Union[float, bool] = 0.1, exclude_polyanions: List[str] = ['SO4', 'CO3', 'NO3', 'OCl3', 'SiO4', 'SeO3', 'TiO3', 'TiO4'])[source]

Bases: object

A CorrectionCalculator contains experimental and computed entries which it uses to compute corrections.

It graphs residual errors after applying the computed corrections and creates the MPCompatibility.yaml file the Correction classes use.

species[source]

list of species that corrections are being calculated for

exp_compounds[source]

list of dictionaries which each contain a compound’s formula and experimental data

calc_compounds[source]

dictionary of ComputedEntry objects

corrections[source]

list of corrections in same order as species list

corrections_std_error[source]

list of the variances of the corrections in same order as species list

corrections_dict[source]

dictionary of format {‘species’: (value, uncertainty)} for easier correction lookup

Initializes a CorrectionCalculator.

Parameters
  • species – list of species to calculate corrections for

  • max_error – maximum tolerable relative uncertainty in experimental energy. Compounds with relative uncertainty greater than this value will be excluded from the fit

  • allow_unstable – whether unstable entries are to be included in the fit. If True, all compounds will be included regardless of their energy above hull. If False or a float, compounds with energy above hull greater than the given value (defaults to 0.1 eV/atom) will be excluded

  • exclude_polyanions – a list of polyanions that contain additional sources of error that may negatively influence the quality of the fitted corrections. Compounds with these polyanions will be excluded from the fit

compute_corrections(exp_entries: list, calc_entries: dict) → dict[source]

Computes the corrections and fills in correction, corrections_std_error, and corrections_dict.

Parameters
  • exp_entries – list of dictionary objects with the following keys/values: {“formula”: chemical formula, “exp energy”: formation energy in eV/formula unit, “uncertainty”: uncertainty in formation energy}

  • calc_entries – dictionary of computed entries, of the form {chemical formula: ComputedEntry}

Raises

ValueError – calc_compounds is missing an entry

compute_from_files(exp_gz: str, comp_gz: str)[source]
Parameters
  • exp_gz – name of .json.gz file that contains experimental data data in .json.gz file should be a list of dictionary objects with the following keys/values: {“formula”: chemical formula, “exp energy”: formation energy in eV/formula unit, “uncertainty”: uncertainty in formation energy}

  • comp_gz – name of .json.gz file that contains computed entries data in .json.gz file should be a dictionary of {chemical formula: ComputedEntry}

graph_residual_error() → plotly.graph_objs._figure.Figure[source]

Graphs the residual errors for all compounds after applying computed corrections.

graph_residual_error_per_species(specie: str) → plotly.graph_objs._figure.Figure[source]

Graphs the residual errors for each compound that contains specie after applying computed corrections.

Parameters

specie – the specie/group that residual errors are being plotted for

Raises

ValueError – the specie is not a valid specie that this class fits corrections for

make_yaml(name: str = 'MP2020') → None[source]

Creates the _name_Compatibility.yaml that stores corrections as well as _name_CompatibilityUncertainties.yaml for correction uncertainties.

Parameters
  • name – str, alternate name for the created .yaml file.

  • Default – “MP2020”