Skip to main content

A collection of readers for CASTEP binary outputs

Project description

castepxbin

Overview

A collection of readers for binary output from CASTEP.

Available readers for:

  • castep_bin: The compact checkpoint file contains all internal data stored by CASTEP (excluding the wavefunction) and may be read for restarting. High precision forces can be read from this file for single point calculations, as the geom file not written.
  • pdos_bin: Weights for computing the projected density of states.
  • ome_bin: Optical matrix elements from the Spectral task.
  • dome_bin: Diagonal elements (band gradients) of the optical matrix from the Spectral task.
  • cst_ome: Legacy format containing optical matrix elements from the Optics task.

To-dos:

  • cst_esp: Electrostatic potentials?
  • elf: Electron localsation function.
  • More data from castep_bin/check files.

Installation

This package can be install using pip

pip install castepxbin

To install extra dependencies may be needed for testing:

pip install castepxbin[testing]

Or directly from the GitHub repo:

pip install git+https://github.com/zhubonan/castepxbin.git

The two main dependencies are numpy and scipy. The optional pymatgen dependency is used for naming the orbitals. Please note that the consistency of these labels for the f orbitals has not been checked.

Usage

Simply import the function and pass the file path. For the castep_bin reader, the example is shown below:

In [1]: from castepxbin import read_castep_bin

In [2]: data = read_castep_bin("test_data/SiO2.castep_bin")

In [3]: data.keys()
Out[3]: dict_keys(['elec_temp', 'electronic_minimizer', 'nelectrons', 'nup', 'ndown', 'spin', 'charge', 'spin_treatment', 'num_ions_orig', 'max_ions_in_species_orig', 'real_lattice_orig', 'recip_lattice_orig', 'num_species_orig', 'num_ions_in_species_orig', 'ionic_positions', 'species_symbol_orig', 'num_ions', 'max_ions_in_species', 'real_lattice', 'recip_lattice', 'num_species', 'num_ions_in_species', 'species_symbol', 'nkpts', 'kpoints', 'kpoint_weights', 'found_ground_state_wavefunction', 'found_ground_state_density', 'total_energy', 'fermi_energy', 'nbands', 'nspins', 'occupancies', 'eigenvalues', 'kpoints_of_eigenvalues', 'ngx_fine', 'ngy_fine', 'ngz_fine', 'spin_density', 'charge_density', 'fermi_energy_second_spin', 'forces'])

Note that these readers should be considered as "low-level" as they corresponds to unprocessed Fortran data as it is. Further processes are often needed, such reordering the axes (Fortran arrays are column-major) and recasting into different dtypes.

Once exception is for the optical matrix element reader, where output array are converted into the "C" (row-major) ordering internally.

Extending the castep_bin reader

At the moment, not all sections of the castep_bin is read (as there are too many!), but more contents can be added easily by including relevant sections in the castepxbin.castep_bin.CASTEP_BIN_FIELD_SPEC dictionary. The read_castep_bin function can accept such modified version instead of using the default one.

For example, suppose the binary field is written as such:

header = 'MY_SECTION'
write(unit) header
write(unit) my_int    # An INTEGER(4)
write(unit) my_bool    # An LOGICAL type
write(unit) my_array    # An array of real numbers with size (3, nspecies, my_int)
header = 'END_MY_SECTION'
write(unit) header

The the following specifications can be added to read the section:

my_spec = dict(CASTEP_BIN_FIELD_SPEC)
my_spec['MY_SECTION'] = (
        ScalarField('my_int', int),
        BoolField('my_bool'),
        ArrayField('my_array', float, shape=(3, 'nspecies', 'my_int'))
)

The value of my_int is unknown, but it is read before processing the my_array field. This imples that the order of fields in CASTEP_BIN_FIELD_SPEC can be important, as certain array sizes are only available from other fields, such as the nspecies field above. However, even if nspecies is not read previously, it can still be resolved by inspecting the length of the record. This would not be possible if there are two unknown dimension sizes.

Acknowledgement

The data structures of binary pdos_bin, dome_bin, ome_bin, files are inferred from the code snippet in the documentation of the open sourced OptaDOS package for computing high quality DOS and other spectral properties using outputs from CASTEP.

Contributors

  • Bonan Zhu, University College London
  • Matthew Evans, UCLouvain/University of Cambridge

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

castepxbin-0.2.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

castepxbin-0.2.0-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file castepxbin-0.2.0.tar.gz.

File metadata

  • Download URL: castepxbin-0.2.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.10

File hashes

Hashes for castepxbin-0.2.0.tar.gz
Algorithm Hash digest
SHA256 75103a43b761ae192ffc2a49d5a232a6475a4eafb18fcd649c48546023fe3594
MD5 86b83812acc16ce841d4c0b7d29c5998
BLAKE2b-256 20d80fc41a4f6685c135de5f5fe8e3e289cc9c562abe53af4f251adb88da96a6

See more details on using hashes here.

File details

Details for the file castepxbin-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: castepxbin-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.10

File hashes

Hashes for castepxbin-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 edcc63de8a4fd0171e7d8ce664948fbbf8baee7191553c4324006b3a6c47eb3f
MD5 a55aa2c8e9589a1b1637e7ff35956af4
BLAKE2b-256 5dd098fd814781688a1e92f8b6cba8f850860af5c2561f10a22814b670809ff0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page