This is a plugin for NOMAD which contains the parser and extended sections definitions for Wannier90 input/output files. The parser uses the nomad-simulations
schema as the basis of the schema.
nomad-parser-wannier90
can be installed as a PyPI package using pip
. We require features from the nomad-lab
package which are not publicly available in PyPI, so an extra flag --index-url
needs to be specified when pip installing this package:
pip install nomad-parser-wannier90 --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
If you want to develop locally this package, clone the project and in the workspace folder, create a virtual environment (note this project uses Python 3.9):
git clone https://github.com/nomad-coe/nomad-parser-wannier90.git
cd nomad-parser-wannier90
python3.9 -m venv .pyenv
. .pyenv/bin/activate
Make sure to have pip
upgraded:
pip install --upgrade pip
We recommend installing uv
for fast pip installation of the packages:
pip install uv
Install the nomad-lab
package:
uv pip install '.[dev]' --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
Note!
Until we have an official pypi NOMAD release with the plugins functionality make
sure to include NOMAD's internal package registry (via --index-url
in the above command).
The plugin is still under development. If you would like to contribute, install the package in editable mode (with the added -e
flag):
uv pip install -e '.[dev]' --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
You can run locally the tests:
python -m pytest -sv tests
where the -s
and -v
options toggle the output verbosity.
Our CI/CD pipeline produces a more comprehensive test report using the pytest-cov
package. You can generate a local coverage report:
uv pip install pytest-cov
python -m pytest --cov=src tests
We use Ruff for linting and formatting the code. Ruff auto-formatting is also a part of the GitHub workflow actions. You can run locally:
ruff check .
ruff format . --check
For interactive debugging of the tests, use pytest
with the --pdb
flag. We recommend using an IDE for debugging, e.g., VSCode. If that is the case, add the following snippet to your .vscode/launch.json
:
{
"configurations": [
{
"name": "<descriptive tag>",
"type": "debugpy",
"request": "launch",
"cwd": "${workspaceFolder}",
"program": "${workspaceFolder}/.pyenv/bin/pytest",
"justMyCode": true,
"env": {
"_PYTEST_RAISE": "1"
},
"args": [
"-sv",
"--pdb",
"<path-to-plugin-tests>",
]
}
]
}
where <path-to-plugin-tests>
must be changed to the local path to the test module to be debugged.
The settings configuration file .vscode/settings.json
automatically applies the linting and formatting upon saving the modified file.
To view the documentation locally, install the related packages using:
uv pip install -r requirements_docs.txt
Run the documentation server:
mkdocs serve
Currently, NOMAD has two distinct flavors that are relevant depending on your role as an user:
- A NOMAD Oasis: any user with a NOMAD Oasis instance.
- Local NOMAD installation and the source code of NOMAD: internal developers.
Read the NOMAD plugin documentation for all details on how to deploy the plugin on your NOMAD instance.
Modify the text file under /nomad/default_plugins.txt
and add:
<other-content-in-default_plugins.txt>
nomad-parser-wannier90==x.y.z
where x.y.z
represents the released version of this plugin.
Then, go to your NOMAD folder, activate your NOMAD virtual environment and run:
deactivate
cd <route-to-NOMAD-folder>/nomad
source .pyenv/bin/activate
./scripts/setup_dev_env.sh
Alternatively and only valid for your local NOMAD installation, you can modify nomad.yaml
to include this plugin:
plugins:
entry_points:
include:
- ["nomad_parser_wannier90.parsers:nomad_parser_wannier90_plugin"]
- ["nomad_parser_wannier90.schema_packages:nomad_parser_wannier90_schema"]
Note!
Once you modify your nomad.yaml
file adding include
, all the default plugins will be disconnected, so you will need to include them as well.
Name | Github profiles | |
---|---|---|
Dr. José M. Pizarro | [email protected] | @JosePizarro3 |
This nomad
_ plugin was generated with Cookiecutter
_ along with @nomad
's cookiecutter-nomad-plugin
template.