Skip to main content

A package for extracting information from castep outputs

Project description

Version

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

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.

from castep_outputs import parse_single, parse_castep_file

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 logging
from castep_outputs import parse_single

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

The available parsing functions for parsing the given format are:

  • bands: parse_bands_file

  • castep: parse_castep_file

  • cell: parse_cell_param_file

  • param: parse_cell_param_file

  • chdiff_fmt: parse_chdiff_fmt_file

  • cst_esp: parse_cst_esp_file

  • den_fmt: parse_den_fmt_file

  • efield: parse_efield_file

  • elastic: parse_elastic_file

  • elf_fmt: parse_elf_fmt_file

  • epme_bin: parse_epme_bin_file

  • epme: parse_epme_file

  • err: parse_err_file

  • hug: parse_hug_file

  • magres: parse_magres_file

  • geom: parse_md_geom_file

  • md: parse_md_geom_file

  • phonon_dos: parse_phonon_dos_file

  • phonon: parse_phonon_file

  • pot_fmt: parse_pot_fmt_file

  • tddft: parse_tddft_file

  • ts: parse_ts_file

  • xrd_sf: 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,pyyaml,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] [--inc-epme] [--inc-cst_esp]
                      [--inc-epme_bin] [--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 ...]]
                      [--epme [EPME ...]] [--cst_esp [CST_ESP ...]]
                      [--epme_bin [EPME_BIN ...]]
                      ...

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 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, .epme,
.cst_esp, .epme_bin

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, --log {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Verbose output
  -o, --output OUTPUT   File to write output, default: screen
  -f, --out-format {json,ruamel,pyyaml,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
  --inc-epme            Extract .epme information
  --inc-cst_esp         Extract .cst_esp information
  --inc-epme_bin        Extract .epme_bin 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
  --epme [EPME ...]     Extract from EPME as .epme type
  --cst_esp [CST_ESP ...]
                        Extract from CST_ESP as .cst_esp type
  --epme_bin [EPME_BIN ...]
                        Extract from EPME_BIN as .epme_bin type

Current Parsers:

  • .bands

  • .castep

  • .cell

  • .chdiff_fmt

  • .cst_esp

  • .den_fmt

  • .efield

  • .elastic

  • .elf_fmt

  • .epme

  • .epme_bin

  • .err

  • .geom

  • .hug

  • .magres

  • .md

  • .param

  • .phonon

  • .phonon_dos

  • .pot_fmt

  • .tddft

  • .ts

  • .xrd_sf

Current dumpers:

  • json

  • pprint

  • print

  • pyyaml

  • ruamel

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

castep_outputs-0.3.3.tar.gz (116.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

castep_outputs-0.3.3-py3-none-any.whl (90.2 kB view details)

Uploaded Python 3

File details

Details for the file castep_outputs-0.3.3.tar.gz.

File metadata

  • Download URL: castep_outputs-0.3.3.tar.gz
  • Upload date:
  • Size: 116.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for castep_outputs-0.3.3.tar.gz
Algorithm Hash digest
SHA256 cecb643acf0a269afda975213b7c87b19f0a935be0bd7748cf4b867fe8e29685
MD5 cc160da364811858ad648e9dc7fc5e9b
BLAKE2b-256 d58bfaf075bee037cb9eb6e9e290ea8298ab727a54cb84597f4bcc5bf2520725

See more details on using hashes here.

File details

Details for the file castep_outputs-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: castep_outputs-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 90.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for castep_outputs-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3b242ed057a53966b30d15bf570ee70f9718ad2aa90bcf81f7d81a18a160663c
MD5 86fdd337694f7c32a53640a5f1e17548
BLAKE2b-256 0aaae1a8fd88307cf3d7535bcd03e2360e9b0434d26cda9e39c32734c60749e1

See more details on using hashes here.

Supported by

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