Metadata-Version: 2.4
Name: excitingworkflow
Version: 0.1.0
Summary: Tools to automatically perform and converge exciting calculations.
Author: Alexander Buccheri, Hannah Kleine
Author-email: Fabian Peschel <peschelf@physik.hu-berlin.de>
Maintainer-email: Fabian Peschel <peschelf@physik.hu-berlin.de>
License-Expression: GPL-3.0-or-later
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: emmet-core>=0.84.8
Requires-Dist: excitingtools>=1.8.4
Requires-Dist: jobflow
Requires-Dist: jobflow-remote
Requires-Dist: matplotlib
Requires-Dist: monty
Requires-Dist: numpy<2.3.0,>=2.0.0
Requires-Dist: pydantic>=2.10.0
Requires-Dist: pydantic-settings
Requires-Dist: pymongo<=4.10.1
Requires-Dist: python-dateutil
Requires-Dist: pyyaml
Requires-Dist: qtoolkit
Requires-Dist: rich
Requires-Dist: typer>=0.15.1
Provides-Extra: dev
Requires-Dist: coverage; extra == "dev"
Requires-Dist: mypy==1.19.1; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pylint==4.0.5; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff==0.15.7; extra == "dev"
Requires-Dist: types-paramiko; extra == "dev"
Requires-Dist: types-python-dateutil; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Provides-Extra: spearman
Requires-Dist: scipy; extra == "spearman"
Provides-Extra: simmeas
Requires-Dist: bitarray; extra == "simmeas"
Provides-Extra: tanimoto
Requires-Dist: bitarray; extra == "tanimoto"
Requires-Dist: nomad_dos_fingerprints; extra == "tanimoto"
Provides-Extra: nomad-upload
Requires-Dist: nomad-utility-workflows; extra == "nomad-upload"
Provides-Extra: tutorials
Requires-Dist: jupyterlab; extra == "tutorials"
Requires-Dist: ase; extra == "tutorials"
Dynamic: license-file

[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
[![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint)

# excitingworkflow

`exctingworkflow` is a repository to collect scripts for automatically setting up exciting calculations and performing convergence series.
All workflows are written in the workflow language of `jobflow`. `excitingworklow` can be used
to execute dependent `exciting` calculations (`WORKFLOWS`) or simply many independent calculations (`HIGH-THROUGHPUT`).

## Workflows

Currently supported workflows are:
 - groundstate convergence of the parameters `rgkmax`, `nempty` and `ngridk` with respect to the total energy
 - GW convergence of the parameters `nempty` and `ngridq`, and the HELO's (high energy
local orbitals) in the species file(s) with respect to the Quasiparticle energies CBm and VBM, and the bandgap
 - BSE convergence of the parameters `gqmax` and `ngridk/ngridq` with respect to the exciton energy, and/or the
spectral similarity (measured by spearman coefficient, or the tanimoto coefficient)
 - species workflow to find a maximal local orbital basis and local orbital hierarchy
 - GW workflow: automated workflow to execute a GW calculation using the task-based GW implementation

## Installation

For innstructions on how to install `excitingworkflow`, please refer to the [INSTALL](INSTALL.md) file.

## Remote execution
If you want to execute your workflows on a remote machine, for instance on a supercomputer using `slurm` as a queue
manager, you can achieve this using `jobflow-remote`. You should read the [remote_execution.md](tutorials/remote_execution/introduction_remote_execution.md) file
to get started.

## Command line interface

`excitingworkflow` provides a command line interface (CLI) written with `typer`. It contains mainly helper commands
that should simplify your daily work. After the installation of `excitingworkflow`, you can invoke the CLI with:
```bash
ew
```
This is similar to calling `ew -h` or `ew --help`. You will see a list of all available commands. You can learn more
about each command by calling `ew <command> -h`. Either you see the description of the command or you get a list of
all available subcommands.
For a complete overview of all commands, you can call:
```bash
ew --tree
```
Note that all commands using jobflow-remote will use the default project.

## Tests

Tests are written and executed with `pytest`. Overall code coverage is
also measured in the git pipeline and displayed on the webpage. You can run the test suite from the root directory via
```bash
pip install pytest
pytest tests/
```

This package is developed to execute `exciting` calculations. It's not possible to run `exciting` in the regular unit
test suite.
There are still tests covering the whole workflow, and actually running `exciting`. Those integration tests can be
additionally triggered via:
```bash
pytest --run-exciting tests/
```
Note, in order for the test cases to find the exciting binary, the value for `exciting_binary` from the config file
will be used, so it needs to be set.

## Tutorials

We provide basic and advanced tutorials, as well as various example files for setting up and running this package. Refer
to this [README](tutorials/README.md) to get started.

## Are you a SOL member?

Make sure to also read the SOL-specific information: [SOL_info.md](tutorials/advanced/SOL_info.md).

## License

`excitingworkflow` is distributed under the GNU General Public License
Version 3 (GPLv3) or any later version.

See the [LICENSE](LICENSE) file for details.

## Contributing

We welcome contributions to this repository. Please refer to the [CONTRIBUTING](CONTRIBUTING.md) file for more information.

## Compatibility

This package has been extensively tested and used on both Linux and macOS. Some of the standard paths given in the
tutorials might need to be adjusted if you are using a different operating system. The plain usage of Windows is not
recommended. Instead, you want to use a virtual machine or a docker-like environment.

## Authors and acknowledgment
Fabian Peschel: main developer and maintainer

Hannah Kleine: contributed idea and parts of the implementation of the species workflow

Alexander Buccheri: thanks for supervision and guideline in writing the workflows
