Express: an extensible, lightweight, high-throughput, high-level workflow framework that aims to automate ab initio calculations
Documentation for Express.
Package Features
Express
is an extensible, high-throughput, high-level workflow framework that aims to automate ab initio calculations for the materials science community. Express
is shipped with well-tested workflow templates, including structure optimization, equation of state (EOS) fitting, phonon spectrum (lattice dynamics) calculation, and thermodynamic property calculation in the framework of the quasi-harmonic approximation (QHA). It is designed to be highly modularized so that its components can be reused across various occasions, and customized workflows can be built on top of that.
The differences between express
and Express
: express
is the project's name, it is a collection of Julia packages. Its core is Express.jl
, managing and dispatching the rest packages. Express
is short for Express.jl
, which is the most important component of express
. The direct components of express
are:
Express.jl
provides a high-level interface to all the workflows, including file reading and writing, job creation, submission, monitoring, result retrieving, and data analysis. To work with specific software, install the corresponding plugin, e.g.,QuantumESPRESSOExpress.jl
for Quantum ESPRESSO.ExpressCommands.jl
is a user-friendly command-line interface ofExpress.jl
for non-developers. It installs an executable 'xps
' that can execute code from configuration files provided by users.EquationsOfStateOfSolids.jl
fits energy (or pressure) vs. volume results to equations of state, etc. These features are repetitively used in the equation of state workflow.Crystallography.jl
calculates a crystal's primitive cell (or supercell) volume from lattice parameters, finds symmetry operations and generates high symmetry points in the Brillouin zone, etc.PyQHA.jl
is a Julia wrapper of the Pythonqha
package, which can calculate several thermodynamic properties of both single- and multi-configuration crystalline materials in the framework of quasi-harmonic approximation (QHA). Theqha
code is the foundation of the QHA workflow.Geotherm.jl
is a Julia interpretation of the Fortran code we used in this paper, which calculates the isentropic temperature/pressure gradient (geotherm) using thermodynamic properties obtained with the QHA workflow.Pseudopotentials.jl
presents a database for storing and querying pseudopotentials used in ab initio calculations.SimpleWorkflows.jl
is the skeleton of the workflow system, which defines building blocks, composition rules, and operation order of workflows.
The QuantumESPRESSOExpress.jl
is a special type of package called "plugin of express
" for handling ab initio software such as Quantum ESPRESSO. Other plugins for other software are possible. The dependencies of QuantumESPRESSOExpress.jl
are listed below.
AbInitioSoftwareBase.jl
provides a standard API for some popular ab initio software such as Quantum ESPRESSO.QuantumESPRESSOBase.jl
declares basic data types and methods for manipulating crystal structures, generating input files for Quantum ESPRESSO, error checking before running, etc.QuantumESPRESSOParser.jl
parses the input or output files of Quantum ESPRESSO to extract and analyze data.QuantumESPRESSOFormatter.jl
formats the input files of Quantum ESPRESSO.QuantumESPRESSOCommands.jl
is a command-line interface that exports the commands Quantum ESPRESSO uses in a configurable way.QuantumESPRESSO.jl
is simply a wrapper of the types, methods, and commands defined inQuantumESPRESSOBase.jl
,QuantumESPRESSOParser.jl
,QuantumESPRESSOFormatter.jl
, andQuantumESPRESSOCommands.jl
under a common namespace.
Installation
The package can be installed with the Julia package manager. From the Julia REPL, type ]
to enter the Pkg REPL mode and run:
pkg> add Express
Or, equivalently, via the Pkg
API:
julia> import Pkg; Pkg.add("Express")
Documentation
- STABLE — documentation of the most recently tagged version.
- DEV — documentation of the in-development version.
Project Status
The package is tested against, and being developed for, Julia 1.6
and above on Linux, macOS, and Windows.
Questions and Contributions
Usage questions can be posted on our discussion page.
Contributions are very welcome, as are feature requests and suggestions. Please open an issue if you encounter any problems. The contributing page has a few guidelines that should be followed when opening pull requests and contributing code.
Manual Outline
- Installation guide
- Contributing
- Configuration files
- How to run
Express
from command line - Tracking and monitoring jobs in a workflow
- Troubleshooting
- FAQ
Library Outline
- Contributing
- FAQ
- Express: an extensible, lightweight, high-throughput, high-level workflow framework that aims to automate ab initio calculations
- Installation guide
- How to run
Express
from command line - Configuration files
- Tracking and monitoring jobs in a workflow
- Troubleshooting