Lattice dynamics workflow using Pheasy #5072
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: testing | |
on: | |
push: | |
branches: [main] | |
tags: ["v*"] | |
pull_request: | |
workflow_dispatch: | |
repository_dispatch: | |
types: [pymatgen-ci-trigger] | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: pip | |
cache-dependency-path: pyproject.toml | |
- uses: pre-commit/[email protected] | |
test-non-ase: | |
# prevent this action from running on forks | |
if: github.repository == 'materialsproject/atomate2' | |
services: | |
local_mongodb: | |
image: mongo:4.0 | |
ports: | |
- 27017:27017 | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} # enables conda/mamba env activation by reading bash profile | |
strategy: | |
matrix: | |
python-version: ["3.10", "3.11", "3.12"] | |
split: [1, 2, 3] | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up micromamba | |
uses: mamba-org/setup-micromamba@main | |
- name: Create mamba environment | |
run: | | |
micromamba create -n a2 python=${{ matrix.python-version }} --yes | |
- name: Install uv | |
run: micromamba run -n a2 pip install uv | |
- name: Install conda dependencies | |
run: | | |
micromamba install -n a2 -c conda-forge enumlib packmol bader openbabel openff-toolkit==0.16.2 openff-interchange==0.3.22 --yes | |
- name: Install dependencies | |
run: | | |
micromamba activate a2 | |
python -m pip install --upgrade pip | |
mkdir -p ~/.abinit/pseudos | |
cp -r tests/test_data/abinit/pseudos/ONCVPSP-PBE-SR-PDv0.4 ~/.abinit/pseudos | |
uv pip install .[strict,strict-forcefields,tests,abinit] | |
uv pip install -i https://test.pypi.org/simple/ pheasy==0.0.1 # Install pheasy | |
uv pip install torch-runstats | |
uv pip install --no-deps nequip==0.5.6 | |
micromamba install -n a2 -c conda-forge numpy scipy h5py compilers “libblas=*=*mkl” spglib boost eigen cmake ipython mkl-include openmpi --yes | |
- name: Install ALA-Mode | |
run: | | |
git clone https://github.com/ttadano/alamode.git | |
cd alamode | |
git checkout develop | |
mkdir build | |
cd build | |
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/alamode_install \ | |
-DBOOST_INCLUDE=$CONDA_PREFIX/include/boost \ | |
-DEIGEN3_INCLUDE=$CONDA_PREFIX/include/eigen3 | |
make -j$(nproc) | |
make install | |
- name: Install pymatgen from master if triggered by pymatgen repo dispatch | |
if: github.event_name == 'repository_dispatch' && github.event.action == 'pymatgen-ci-trigger' | |
run: | | |
micromamba activate a2 | |
uv pip install --upgrade 'git+https://github.com/materialsproject/pymatgen@${{ github.event.client_payload.pymatgen_ref }}' | |
- name: Test split ${{ matrix.split }} | |
env: | |
MP_API_KEY: ${{ secrets.MP_API_KEY }} | |
# regenerate durations file with `pytest --store-durations --durations-path tests/.pytest-split-durations` | |
# Note the use of `--splitting-algorithm least_duration`. | |
# This helps prevent a test split having no tests to run, and then the GH action failing, see: | |
# https://github.com/jerry-git/pytest-split/issues/95 | |
# However this `splitting-algorithm` means that tests cannot depend sensitively on the order they're executed in. | |
run: | | |
micromamba activate a2 | |
pytest --splits 3 --group ${{ matrix.split }} --durations-path tests/.pytest-split-durations --splitting-algorithm least_duration --ignore=tests/ase --cov=atomate2 --cov-report=xml | |
- uses: codecov/codecov-action@v1 | |
if: matrix.python-version == '3.10' && github.repository == 'materialsproject/atomate2' | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
name: coverage${{ matrix.split }} | |
file: ./coverage.xml | |
test-notebooks-and-ase: | |
# prevent this action from running on forks | |
if: github.repository == 'materialsproject/atomate2' | |
# It seems like anything torch-dependent and tblite can't be installed in the same environment | |
# without the tblite tests failing in CI, see, e.g.: | |
# https://github.com/tblite/tblite/issues/116 | |
# Outside of CI, having torch installed but not loaded seems not to affect tblite | |
# Set off ASE tests here, where tblite-dependent tests live | |
services: | |
local_mongodb: | |
image: mongo:4.0 | |
ports: | |
- 27017:27017 | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} # enables conda/mamba env activation by reading bash profile | |
strategy: | |
matrix: | |
python-version: ["3.10", "3.11", "3.12"] | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up micromamba | |
uses: mamba-org/setup-micromamba@main | |
- name: Create mamba environment | |
run: | | |
micromamba create -n a2 python=${{ matrix.python-version }} --yes | |
- name: Install uv | |
run: micromamba run -n a2 pip install uv | |
- name: Install conda dependencies | |
run: | | |
micromamba install -n a2 -c conda-forge enumlib packmol bader openbabel openff-toolkit==0.16.2 openff-interchange==0.3.22 --yes | |
- name: Install dependencies | |
run: | | |
micromamba activate a2 | |
python -m pip install --upgrade pip | |
uv pip install .[strict,tests] | |
- name: Install pymatgen from master if triggered by pymatgen repo dispatch | |
if: github.event_name == 'repository_dispatch' && github.event.action == 'pymatgen-ci-trigger' | |
run: uv pip install --upgrade 'git+https://github.com/materialsproject/pymatgen@${{ github.event.client_payload.pymatgen_ref }}' | |
- name: Test Notebooks | |
run: | | |
micromamba activate a2 | |
pytest --nbmake ./tutorials --ignore=./tutorials/openmm_tutorial.ipynb | |
- name: Test ASE | |
env: | |
MP_API_KEY: ${{ secrets.MP_API_KEY }} | |
run: | | |
micromamba activate a2 | |
pytest --splits 1 --group 1 --cov=atomate2 --cov-report=xml tests/ase | |
- uses: codecov/codecov-action@v1 | |
if: matrix.python-version == '3.10' && github.repository == 'materialsproject/atomate2' | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./coverage.xml | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: pip | |
cache-dependency-path: pyproject.toml | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install .[strict,strict-forcefields,docs] | |
- name: Build | |
run: sphinx-build docs docs_build | |
automerge: | |
needs: [lint, test-non-ase, test-notebooks-and-ase, docs] | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
contents: write | |
steps: | |
- uses: fastify/github-action-merge-dependabot@v3 |