aiida_cusp.utils package

class aiida_cusp.utils.PotcarParser(path_to_potcar_file, name=None, functional=None)

Bases: object

Minimalistic parsing library for VASP POTCAR files.

Only tries to parse the basic potential identifiers from the file, i.e. the potential version and the associated element. Does not perform any checks on the validity of the parsed results but only raises if no match was retrieved at all.

Parameters
  • path_to_potcar_file (pathlib.Path) – path to a VASP POTCAR file

  • name (str) – name of the potential (i.e. Li, Li_sv, …)

  • functional (str) – functional of the potential, i.e. one of lda_us, lda, lda_52, lda_54, pbe, pbe_52, pbe_54, pw91 or pw91_us

apply_quirks()

Update invalid and erroneous parameters running the stored quirks

hash_contents()

Hash potential contents using secure hashing.

Calculates the hash based on the reduced instead of the full potential contents to avoid potentials being assumed as different if whitespaces differ.

Returns

return sha256 hash for potential contents

Return type

str

load_potential_contents()

Load POTCAR file contents.

Returns

the contents of the potcar file

Return type

str

load_reduced_contents()

Load POTCAR file contents and return a reduced version without consecutive whitespaces and occasionally occuring ‘^’ chars

Returns

returns the reduced contents of the potcar file

Return type

str

potential_element()

Extract the element stored with the potential

Returns

string containing the element name

Return type

str

Raises

PotcarParserError – if regex returns with no match

potential_header()

Extract header section from potential contents

Returns

string containing the potential header

Return type

str

Raises

PotcarParserError – if regex returns with no match

potential_title()

Extract the potential title (i.e. the first line of the file)

potential_version()

Extract creation date from the potential header

Returns

integer representation of the potential creation date

Return type

int

verify_parsed()

Check if the parsed contents do make sense.

Submodules