Skip to content

oerc0122/castep_outputs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

142 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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, .cell, .param, .geom, .md, .bands, .hug, .phonon, .phonon_dos, .efield, .xrd_sf, .elf_fmt, .chdiff_fmt, .pot_fmt, .den_fmt, .elastic, .ts, .magres, .tddft, .err.

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 if available and the RUAMEL engine if not.

As a module

importing castep_outputs exposes all of the parsers at the top-level.

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.

from castep_outputs import parse_single my_dict = parse_single('my_file.castep') 

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

import castep_outputs as co my_dict = co.parse_single('my_file', co.parse_castep_file) with open('my_file', 'r', encoding='utf-8') as inp: my_dict = co.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 logging from castep_outputs import parse_single my_dict = parse_single('my_file', loglevel=logging.INFO) 

The available parsing functions are:

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

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

See Documentation for full layout.

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] [--inc-err] [--inc-phonon] [--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 ...]] [--err [ERR ...]] [--phonon [PHONON ...]] ... 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, .err, .phonon 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 --inc-err Extract .err information --inc-phonon Extract .phonon 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 --err [ERR ...] Extract from ERR as .err type --phonon [PHONON ...] Extract from PHONON as .phonon type 

Current Parsers:

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

Current dumpers:

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

About

Parser for CASTEP output files

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors