DFT Dispersion Correction Labeler
This Python-based project is designed to process a database of structures and label them with DFT dispersion corrections. It reads an existing database, applies the desired DFT dispersion scheme ontop of the present energy and force labels, and writes the corrected structures to a new database.
Installation
We recommend working in a conda environment:
conda create -n dftd-env python=3.9 -y
conda activate dftd-env
Then install conda-specific dependencies:
conda install -c conda-forge ase simple-dftd3 dftd3-python dftd4 dftd4-python -y
Finally, install the tools:
pip install dftd-labeler
Usage
After installation, you can use the tool as a command-line program:
dftd_labeler -i INPUT_DATABASE_PATH -o OUTPUT_DATABASE_PATH -d DISPERSION_SCHEME
Options
- -m or --dft_method: Specifies the DFT Method to be used. Default is 'SCAN'.
- -i or --input_database: Specifies the path to the database to be read. This is a required argument.
- -o or --output_database: Specifies the path to write the labeled database. This is a required argument.
- -d or --dispersion: Specifies which dispersion scheme to use. Only values 3 or 4 are allowed, indicating DFT-D3 and DFT-D4 respectively. This is a required argument.
Example
To process a database using the default DFT method (SCAN) and the DFT-D4 dispersion scheme:
dftd_labeler -i my_database.extxyz -o output_database.extxyz -d 4
Dependencies
This project depends on several Python libraries, including ase, dftd4.ase, dftd3.ase. Ensure you have all required dependencies installed.
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Task list
- Implement basic program structure
- Add D3 and D4 support
- MPI parallelisation?
- Add divide and conquer functionality: currently separate database files are required in order to run several labelling tasks at once. Develop basic function to divide the database into chunks and set off the tasks. Possible approaches: (a) uniform chunks of structure; (b) uniform chunks of atoms.
- Improve logging and file I/O. It is quite messy...