castep-outputs

A package for extracting information from castep outputs


License
BSD-3-Clause
Install
pip install castep-outputs==0.1.6

Documentation

castep_outputs

Parser for CASTEP output files

castep_outputs parses the output files of castep into a standard form and is able to subsequently dump the processed data into a standard format.

Install

To install castep_outputs simply run:

pip install castep_outputs

To check it is installed run:

python -m castep_outputs -h

Dependencies

castep_outputs is designed to have no external dependencies beyond the standard library, however, it is possible to use either PyYAML or ruamel.yaml to dump in the YAML format.

Command-line

When run as a commandline tool, it attempts to find all files for the given seedname, filtered by inc args (default: all). Explicit files can be passed using longname arguments. castep_outputs can parse most human-readable castep outputs including: .castep, .param, .cell, .geom, .md, .bands, .hug, .phonon_dos, .efield, .xrd_sf, .elf_fmt, .chdiff_fmt, .pot_fmt, .den_fmt, .elastic, .ts, .magres.

to run in basic mode:

python -m castep_outputs seedname

Which will attempt to detect all found files and dump a .json to stdout, ready for piping.

python -m castep_outputs --inc-castep --inc-param seedname

Will parse only the seedname.castep and seedname.param files if found.

python -m castep_outputs seedname.castep

Will parse the single named file and again dump a .json to stdout.

python -m castep_outputs --castep seedname.param

Will attempt to parse the file seedname.param as though it were a .castep file. While not ordinarily useful it can help with manually renamed files.

python -m castep_outputs -o my_file.yaml -f yaml seedname.castep

Will parse seedname.castep, dump it to my_file.yaml in yaml format using the PyYAML engine.

As a module

importing castep_outputs directly puts all of the parsers directly into your local namespace.

The simplest method to use castep_outputs in a tool is to use the parse_single method which attempts to determine the parser from the file extension.

import castep_outputs

my_dict = parse_single('my_file.castep')

If you need a specific parser rather than by extension it is possible to pass them as the second argument, or call them directly.

import castep_outputs

my_dict = parse_single('my_file', parse_castep_file)

with open('my_file', 'r', encoding='utf-8') as inp:
    my_dict = parse_castep_file(inp)

It is recommended that you use parse_single as it uses special file-handling to give better diagnostics if it fails. It is possible to enable more detailed logging via the logging module:

import castep_outputs
import logging

my_dict = parse_single('my_file', loglevel=logging.INFO)

The available parsing functions are:

  • parse_castep_file
  • parse_cell_param_file
  • parse_param_file
  • parse_cell_file
  • parse_md_geom_file
  • parse_md_file
  • parse_geom_file
  • parse_bands_file
  • parse_hug_file
  • parse_phonon_dos_file
  • parse_efield_file
  • parse_xrd_sf_file
  • parse_elf_fmt_file
  • parse_chdiff_fmt_file
  • parse_pot_fmt_file
  • parse_den_fmt_file
  • parse_elastic_file
  • parse_ts_file
  • parse_tddft_file
  • parse_magres_file

Which return processed lists of dicts of data ready for use in other applications.

Full usage

usage: castep_outputs [-h] [-V] [-L {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-o OUTPUT]
                      [-f {json,ruamel,yaml,pprint,print}] [-t] [-A] [--inc-castep] [--inc-cell] [--inc-param]
                      [--inc-geom] [--inc-md] [--inc-bands] [--inc-hug] [--inc-phonon_dos] [--inc-efield]
                      [--inc-xrd_sf] [--inc-elf_fmt] [--inc-chdiff_fmt] [--inc-pot_fmt] [--inc-den_fmt]
                      [--inc-elastic] [--inc-ts] [--inc-magres] [--inc-tddft] [--castep [CASTEP ...]]
                      [--cell [CELL ...]] [--param [PARAM ...]] [--geom [GEOM ...]] [--md [MD ...]]
                      [--bands [BANDS ...]] [--hug [HUG ...]] [--phonon_dos [PHONON_DOS ...]]
                      [--efield [EFIELD ...]] [--xrd_sf [XRD_SF ...]] [--elf_fmt [ELF_FMT ...]]
                      [--chdiff_fmt [CHDIFF_FMT ...]] [--pot_fmt [POT_FMT ...]] [--den_fmt [DEN_FMT ...]]
                      [--elastic [ELASTIC ...]] [--ts [TS ...]] [--magres [MAGRES ...]] [--tddft [TDDFT ...]]
                      ...

Attempts to find all files for seedname, filtered by `inc` args (default: all). Explicit files can be passed
using longname arguments. castep_outputs can parse most human-readable castep outputs including: .castep, .cell,
.param, .geom, .md, .bands, .hug, .phonon_dos, .efield, .xrd_sf, .elf_fmt, .chdiff_fmt, .pot_fmt, .den_fmt,
.elastic, .ts, .magres, .tddft

positional arguments:
  seedname              Seed name for data

options:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  -L {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --log {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Verbose output
  -o OUTPUT, --output OUTPUT
                        File to write output, default: screen
  -f {json,ruamel,yaml,pprint,print}, --out-format {json,ruamel,yaml,pprint,print}
                        Output format
  -t, --testing         Set testing mode to produce flat outputs
  -A, --inc-all         Extract all available information
  --inc-castep          Extract .castep information
  --inc-cell            Extract .cell information
  --inc-param           Extract .param information
  --inc-geom            Extract .geom information
  --inc-md              Extract .md information
  --inc-bands           Extract .bands information
  --inc-hug             Extract .hug information
  --inc-phonon_dos      Extract .phonon_dos information
  --inc-efield          Extract .efield information
  --inc-xrd_sf          Extract .xrd_sf information
  --inc-elf_fmt         Extract .elf_fmt information
  --inc-chdiff_fmt      Extract .chdiff_fmt information
  --inc-pot_fmt         Extract .pot_fmt information
  --inc-den_fmt         Extract .den_fmt information
  --inc-elastic         Extract .elastic information
  --inc-ts              Extract .ts information
  --inc-magres          Extract .magres information
  --inc-tddft           Extract .tddft information
  --castep [CASTEP ...]
                        Extract from CASTEP as .castep type
  --cell [CELL ...]     Extract from CELL as .cell type
  --param [PARAM ...]   Extract from PARAM as .param type
  --geom [GEOM ...]     Extract from GEOM as .geom type
  --md [MD ...]         Extract from MD as .md type
  --bands [BANDS ...]   Extract from BANDS as .bands type
  --hug [HUG ...]       Extract from HUG as .hug type
  --phonon_dos [PHONON_DOS ...]
                        Extract from PHONON_DOS as .phonon_dos type
  --efield [EFIELD ...]
                        Extract from EFIELD as .efield type
  --xrd_sf [XRD_SF ...]
                        Extract from XRD_SF as .xrd_sf type
  --elf_fmt [ELF_FMT ...]
                        Extract from ELF_FMT as .elf_fmt type
  --chdiff_fmt [CHDIFF_FMT ...]
                        Extract from CHDIFF_FMT as .chdiff_fmt type
  --pot_fmt [POT_FMT ...]
                        Extract from POT_FMT as .pot_fmt type
  --den_fmt [DEN_FMT ...]
                        Extract from DEN_FMT as .den_fmt type
  --elastic [ELASTIC ...]
                        Extract from ELASTIC as .elastic type
  --ts [TS ...]         Extract from TS as .ts type
  --magres [MAGRES ...]
                        Extract from MAGRES as .magres type
  --tddft [TDDFT ...]   Extract from TDDFT as .tddft type

Current Parsers:

  • .castep
  • .cell
  • .param
  • .geom
  • .md
  • .bands
  • .hug
  • .phonon_dos
  • .efield
  • .xrd_sf
  • .elf_fmt
  • .chdiff_fmt
  • .pot_fmt
  • .den_fmt
  • .elastic
  • .ts
  • .magres
  • .tddft

Current dumpers:

  • json
  • ruamel.yaml
  • pyyaml
  • print
  • pprint