Skip to content

Commit 02fd3ca

Browse files
Merge branch 'main' into aims_magnetic_test_unskip
2 parents aca6756 + 9990e84 commit 02fd3ca

File tree

459 files changed

+6644
-1288
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

459 files changed

+6644
-1288
lines changed

.github/workflows/docs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ jobs:
3333
- name: Install dependencies
3434
run: |
3535
python -m pip install --upgrade pip
36+
pip install "setuptools==77.0.3"
3637
pip install .[strict,docs]
3738
3839
- name: Copy tutorials

.github/workflows/testing.yml

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,16 @@ jobs:
5858

5959
- name: Install conda dependencies
6060
run: |
61-
micromamba install -n a2 -c conda-forge enumlib packmol bader openbabel openff-toolkit==0.16.2 openff-interchange==0.3.22 --yes
61+
micromamba install -n a2 -c conda-forge enumlib packmol bader --yes
6262
6363
- name: Install dependencies
6464
run: |
6565
micromamba activate a2
6666
python -m pip install --upgrade pip
6767
mkdir -p ~/.abinit/pseudos
6868
cp -r tests/test_data/abinit/pseudos/ONCVPSP-PBE-SR-PDv0.4 ~/.abinit/pseudos
69-
uv pip install .[strict,strict-forcefields,tests,abinit]
70-
uv pip install torch-runstats
69+
uv pip install .[strict,strict-forcefields,tests,abinit,approxneb]
70+
uv pip install torch-runstats torch_dftd
7171
uv pip install --no-deps nequip==0.5.6
7272
7373
- name: Install pymatgen from master if triggered by pymatgen repo dispatch
@@ -87,7 +87,7 @@ jobs:
8787
# However this `splitting-algorithm` means that tests cannot depend sensitively on the order they're executed in.
8888
run: |
8989
micromamba activate a2
90-
pytest --splits 3 --group ${{ matrix.split }} --durations-path tests/.pytest-split-durations --splitting-algorithm least_duration --ignore=tests/ase --cov=atomate2 --cov-report=xml
90+
pytest --splits 3 --group ${{ matrix.split }} --durations-path tests/.pytest-split-durations --splitting-algorithm least_duration --ignore=tests/ase --ignore=tests/openff_md --ignore=tests/openmm_md --cov=atomate2 --cov-report=xml
9191
9292
9393
- uses: codecov/codecov-action@v1
@@ -97,6 +97,62 @@ jobs:
9797
name: coverage${{ matrix.split }}
9898
file: ./coverage.xml
9999

100+
test-openff:
101+
# prevent this action from running on forks
102+
if: github.repository == 'materialsproject/atomate2'
103+
104+
services:
105+
local_mongodb:
106+
image: mongo:4.0
107+
ports:
108+
- 27017:27017
109+
110+
runs-on: ubuntu-latest
111+
defaults:
112+
run:
113+
shell: bash -l {0} # enables conda/mamba env activation by reading bash profile
114+
strategy:
115+
matrix:
116+
python-version: ["3.10","3.11","3.12"]
117+
118+
steps:
119+
- name: Check out repo
120+
uses: actions/checkout@v4
121+
122+
- name: Set up micromamba
123+
uses: mamba-org/setup-micromamba@main
124+
125+
- name: Create mamba environment
126+
run: |
127+
micromamba create -n a2 python=${{ matrix.python-version }} --yes
128+
129+
- name: Install uv
130+
run: micromamba run -n a2 pip install uv
131+
132+
- name: Install conda dependencies
133+
run: |
134+
micromamba install -n a2 -c conda-forge enumlib packmol bader openbabel openff-toolkit==0.16.2 openff-interchange==0.3.22 --yes
135+
136+
- name: Install dependencies
137+
run: |
138+
micromamba activate a2
139+
python -m pip install --upgrade pip
140+
uv pip install .[strict-openff,tests]
141+
142+
- name: Install pymatgen from master if triggered by pymatgen repo dispatch
143+
if: github.event_name == 'repository_dispatch' && github.event.action == 'pymatgen-ci-trigger'
144+
run: |
145+
micromamba activate a2
146+
uv pip install --upgrade 'git+https://github.com/materialsproject/pymatgen@${{ github.event.client_payload.pymatgen_ref }}'
147+
148+
- name: Test split ${{ matrix.split }}
149+
env:
150+
MP_API_KEY: ${{ secrets.MP_API_KEY }}
151+
152+
run: |
153+
micromamba activate a2
154+
pytest tests/{openff_md,openmm_md}
155+
100156
test-notebooks-and-ase:
101157
# prevent this action from running on forks
102158
if: github.repository == 'materialsproject/atomate2'
@@ -143,12 +199,15 @@ jobs:
143199
micromamba activate a2
144200
python -m pip install --upgrade pip
145201
uv pip install .[strict,tests]
202+
uv pip install tblite>=0.4.0
146203
147204
- name: Install pymatgen from master if triggered by pymatgen repo dispatch
148205
if: github.event_name == 'repository_dispatch' && github.event.action == 'pymatgen-ci-trigger'
149206
run: uv pip install --upgrade 'git+https://github.com/materialsproject/pymatgen@${{ github.event.client_payload.pymatgen_ref }}'
150207

151208
- name: Test Notebooks
209+
env:
210+
MP_API_KEY: ${{ secrets.MP_API_KEY }}
152211
run: |
153212
micromamba activate a2
154213
pytest --nbmake ./tutorials --ignore=./tutorials/openmm_tutorial.ipynb --ignore=./tutorials/force_fields
@@ -262,7 +321,7 @@ jobs:
262321
run: sphinx-build docs docs_build
263322

264323
automerge:
265-
needs: [lint, test-non-ase, test-notebooks-and-ase, test-force-field-notebook, docs]
324+
needs: [docs, lint, test-force-field-notebook, test-non-ase, test-notebooks-and-ase, test-openff]
266325
runs-on: ubuntu-latest
267326

268327
permissions:

CHANGELOG.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,55 @@
11
# Change log
22

3+
## v0.0.21
4+
5+
### Bug Fixes 🐛
6+
* switch to CONTCAR read for LOBSTERTaskDoc by @naik-aakash in https://github.com/materialsproject/atomate2/pull/1204
7+
* cover cases where optimizer does additional steps even though step is set to 0 or 1 for writing xyz files by @JaGeo in https://github.com/materialsproject/atomate2/pull/1207
8+
* Remove walrus operator to avoid unassigned vmax by @Jonas-Finkler in https://github.com/materialsproject/atomate2/pull/1203
9+
### Enhancements 🛠
10+
* add file output xyz file including final atoms object to ase and forcefield jobs by @JaGeo in https://github.com/materialsproject/atomate2/pull/1206
11+
### Documentation 📖
12+
* Add video tutorials to README by @JaGeo in https://github.com/materialsproject/atomate2/pull/1191
13+
* be more concrete for tutorial video names in readme by @JaGeo in https://github.com/materialsproject/atomate2/pull/1192
14+
* Adding download statistics to readme by @JaGeo in https://github.com/materialsproject/atomate2/pull/1209
15+
16+
## New Contributors
17+
* @Jonas-Finkler made their first contribution in https://github.com/materialsproject/atomate2/pull/1203
18+
19+
**Full Changelog**: https://github.com/materialsproject/atomate2/compare/v0.0.20...v0.0.21
20+
21+
## v0.0.20
22+
23+
### Enhancements 🛠
24+
* Add MatPES forcefields by @esoteric-ephemera in https://github.com/materialsproject/atomate2/pull/1158
25+
* Add `DynamicOpenMMFlowMaker` for dynamic OpenMM Simulations by @shehan807 in https://github.com/materialsproject/atomate2/pull/1115
26+
* atomate2 / OpenMM OPLS-AA Enhancements by @shehan807 in https://github.com/materialsproject/atomate2/pull/1111
27+
* Add updated MP workflows + cleanup by @esoteric-ephemera in https://github.com/materialsproject/atomate2/pull/1139
28+
### Documentation 📖
29+
* Improve documentation LOBSTER and PHONON workflow by @JaGeo in https://github.com/materialsproject/atomate2/pull/1117
30+
* Add key concept tutorial to tutorial list in README by @QuantumChemist in https://github.com/materialsproject/atomate2/pull/1120
31+
* Fixing headline levels in key_concepts_overview.md by @QuantumChemist in https://github.com/materialsproject/atomate2/pull/1121
32+
* try to fix the doc by @JaGeo in https://github.com/materialsproject/atomate2/pull/1125
33+
* Added code snippets for Grüneisen, QHA and EOS wfs documentation by @QuantumChemist in https://github.com/materialsproject/atomate2/pull/1130
34+
* a few improvements for the tutorials by @QuantumChemist in https://github.com/materialsproject/atomate2/pull/1132
35+
* Update tutorials.md by @JaGeo in https://github.com/materialsproject/atomate2/pull/1138
36+
* Electrode workflow and documentation improvements by @esoteric-ephemera in https://github.com/materialsproject/atomate2/pull/1055
37+
* Update index.md by @JaGeo in https://github.com/materialsproject/atomate2/pull/1155
38+
### House-Keeping 🧹
39+
* More CI fixes by @esoteric-ephemera in https://github.com/materialsproject/atomate2/pull/1141
40+
### Other Changes
41+
* Pin MACE calculator version, add missing metadata to AseStructureTaskDoc by @esoteric-ephemera in https://github.com/materialsproject/atomate2/pull/1119
42+
* Tutorials for QHA and Grüneisen workflows by @JaGeo in https://github.com/materialsproject/atomate2/pull/1122
43+
* add more headlines to tutorials and fix a typo by @JaGeo in https://github.com/materialsproject/atomate2/pull/1126
44+
* Minor update to tutorials by @naik-aakash in https://github.com/materialsproject/atomate2/pull/1128
45+
* adjust example flow names by @QuantumChemist in https://github.com/materialsproject/atomate2/pull/1131
46+
* Aims phonon tutorials by @tpurcell90 in https://github.com/materialsproject/atomate2/pull/1136
47+
* fix gruneisen tutorial by @JaGeo in https://github.com/materialsproject/atomate2/pull/1142
48+
* fix link again for aims tutorial by @JaGeo in https://github.com/materialsproject/atomate2/pull/1143
49+
* Append name relax by @JaGeo in https://github.com/materialsproject/atomate2/pull/1150
50+
* add more info on jobflow-remote by @JaGeo in https://github.com/materialsproject/atomate2/pull/1154
51+
* Add example MP-compatible phase diagram tutorial by @esoteric-ephemera in https://github.com/materialsproject/atomate2/pull/1159
52+
353
## v0.0.19
454

555
### Bug Fixes 🐛

CODE_OF_CONDUCT.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,18 @@ This Code of Conduct applies both within project spaces and in public spaces
3535
when an individual is representing the project or its community.
3636

3737
Instances of abusive, harassing, or otherwise unacceptable behavior may be
38-
reported by contacting a project maintainer at [INSERT EMAIL ADDRESS]. All
39-
complaints will be reviewed and investigated and will result in a response that
40-
is deemed necessary and appropriate to the circumstances. Maintainers are
41-
obligated to maintain confidentiality with regard to the reporter of an
42-
incident.
43-
38+
reported by contacting a project maintainer at conduct@materialsproject.org. All
39+
complaints will be reviewed and investigated by a Materials Project staff member
40+
and will result in a response that
41+
is deemed necessary and appropriate to the circumstances.
42+
43+
Project maintainers and Materials Project staff members are obligated to
44+
maintain confidentiality with regard to the reporter of an incident to the extent
45+
possible by law and institutional policy. Community members should be aware that
46+
Materials Project staff members are subject to Lawrence Berkeley National Laboratory's
47+
[harassment and discrimination policies](https://diversity.lbl.gov/harassment-discrimination-policies/),
48+
which require that reports of sexual violence or harassment (as defined in the policy)
49+
be reported to the institution.
4450

4551
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
4652
version 1.3.0, available at https://www.contributor-covenant.org/version/1/3/0/code-of-conduct.html

README.md

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
[![code coverage](https://img.shields.io/codecov/c/gh/materialsproject/atomate2)](https://codecov.io/gh/materialsproject/atomate2)
55
[![pypi version](https://img.shields.io/pypi/v/atomate2?color=blue)](https://pypi.org/project/atomate2)
66
![supported python versions](https://img.shields.io/pypi/pyversions/atomate2)
7-
[![Zenodo](https://img.shields.io/badge/DOI-10.5281/zenodo.10677081-blue?logo=Zenodo&logoColor=white)](https://zenodo.org/records/10677081)
7+
[![Zenodo](https://img.shields.io/badge/DOI-10.5281/zenodo.10677080-blue?logo=Zenodo&logoColor=white)](https://doi.org/10.5281/zenodo.15603088)
88
[![This project supports Python 3.10+](https://img.shields.io/badge/Python-3.10+-blue.svg?logo=python&logoColor=white)](https://python.org/downloads)
9+
[![PyPI](https://img.shields.io/pypi/dm/atomate2.svg?maxAge=2592000)](https://pypi.python.org/pypi/atomate2)
910

1011
[Documentation][docs] | [PyPI][pypi] | [GitHub][github]
1112

1213
Atomate2 is a free, open-source software for performing complex materials science
1314
workflows using simple Python functions. Features of atomate2 include
1415

1516
- It is built on open-source libraries: [pymatgen], [custodian], [jobflow], and
16-
[FireWorks].
17+
[jobflow-remote] or [FireWorks].
1718
- A library of "standard" workflows to compute a wide variety of desired materials
1819
properties.
1920
- The ability scale from a single material, to 100 materials, or 100,000 materials.
@@ -81,8 +82,8 @@ See the [installation] steps for details how to set all of this up.
8182

8283
In this example, we execute the workflow immediately. In many cases, you might want
8384
to perform calculations on several materials simultaneously. To achieve this, all
84-
atomate2 workflows can be run using the [FireWorks] software. See the
85-
[documentation][atomate2_fireworks] for more details.
85+
atomate2 workflows can be run using the [jobflow-remote] or [FireWorks] software. See the
86+
[jobflow-remote-specific documentation][atomate2-jobflow-remote] or [fireworks-specific documentation][atomate2_fireworks] for more details.
8687

8788
## Installation
8889

@@ -98,6 +99,14 @@ started:
9899
- [Using atomate2 with FireWorks][atomate2_fireworks]
99100
- [Overview of key concepts][key-concepts]
100101
- [List of VASP workflows][vasp_workflows]
102+
- [Executable tutorials for different workflows][tutorials]
103+
104+
In March 2025, the first dedicated school on atomate2 (including the workflow language jobflow and the workflow manager jobflow-remote) took place, and one can access the video material here:
105+
106+
- [Jobflow and Jobflow-remote][videotutorial1]
107+
- [atomate2][videotutorial2]
108+
- [Advanced Workflows in atomate2: Part 1][videotutorial3]
109+
- [Advanced Workflows in atomate2: Part 2][videotutorial4]
101110

102111
## Need help?
103112

@@ -125,22 +134,24 @@ A full list of contributors can be found [here][contributors].
125134

126135
## Citing atomate2
127136

128-
A journal submission of `atomate2` is undergoing peer review. In the meantime, please cite the [ChemRxiv preprint](https://chemrxiv.org/engage/chemrxiv/article-details/678e76a16dde43c9085c75e9):
137+
If you use atomate2, please cite the [following article](https://doi.org/10.1039/D5DD00019J):
129138

130139
```bib
131140
@article{ganose2025_atomate2,
132-
title = {Atomate2: Modular Workflows for Materials Science},
133-
author = {Ganose, Alex M. and Sahasrabuddhe, Hrushikesh and Asta, Mark and Beck, Kevin and Biswas, Tathagata and Bonkowski, Alexander and Bustamante, Joana and Chen, Xin and Chiang, Yuan and Chrzan, Daryl and Clary, Jacob and Cohen, Orion and Ertural, Christina and Gallant, Max and George, Janine and Gerits, Sophie and Goodall, Rhys and Guha, Rishabh and Hautier, Geoffroy and Horton, Matthew and Kaplan, Aaron and Kingsbury, Ryan and Kuner, Matthew and Li, Bryant and Linn, Xavier and McDermott, Matthew and Mohanakrishnan, Rohith Srinivaas and Naik, Aakash and Neaton, Jeffrey and Persson, Kristin and Petretto, Guido and Purcell, Thomas and Ricci, Francesco and Rich, Benjamin and Riebesell, Janosh and Rignanese, Gian-Marco and Rosen, Andrew and Scheffler, Matthias and Schmidt, Jonathan and Shen, Jimmy-Xuan and Sobolev, Andrei and Sundararaman, Ravishankar and Tezak, Cooper and Trinquet, Victor and Varley, Joel and Vigil-Fowler, Derek and Wang, Duo and Waroquiers, David and Wen, Mingjian and Yang, Han and Zheng, Hui and Zheng, Jiongzhi and Zhu, Zhuoying and Jain, Anubhav},
134-
year = 2025,
135-
journal = {ChemRxiv},
136-
url = {https://chemrxiv.org/engage/chemrxiv/article-details/678e76a16dde43c9085c75e9},
137-
urldate = {2025-01-22},
141+
title = {Atomate2: modular workflows for materials science},
142+
author = {Ganose, Alex M. and Sahasrabuddhe, Hrushikesh and Asta, Mark and Beck, Kevin and Biswas, Tathagata and Bonkowski, Alexander and Bustamante, Joana and Chen, Xin and Chiang, Yuan and Chrzan, Daryl C. and Clary, Jacob and Cohen, Orion A. and Ertural, Christina and Gallant, Max C. and George, Janine and Gerits, Sophie and Goodall, Rhys E. A. and Guha, Rishabh D. and Hautier, Geoffroy and Horton, Matthew and Inizan, T. J. and Kaplan, Aaron D. and Kingsbury, Ryan S. and Kuner, Matthew C. and Li, Bryant and Linn, Xavier and McDermott, Matthew J. and Mohanakrishnan, Rohith Srinivaas and Naik, Aakash N. and Neaton, Jeffrey B. and Parmar, Shehan M. and Persson, Kristin A. and Petretto, Guido and Purcell, Thomas A. R. and Ricci, Francesco and Rich, Benjamin and Riebesell, Janosh and Rignanese, Gian-Marco and Rosen, Andrew S. and Scheffler, Matthias and Schmidt, Jonathan and Shen, Jimmy-Xuan and Sobolev, Andrei and Sundararaman, Ravishankar and Tezak, Cooper and Trinquet, Victor and Varley, Joel B. and Vigil-Fowler, Derek and Wang, Duo and Waroquiers, David and Wen, Mingjian and Yang, Han and Zheng, Hui and Zheng, Jiongzhi and Zhu, Zhuoying and Jain, Anubhav},
143+
year = {2025},
144+
journal = {Digital Discovery},
145+
doi = {10.1039/D5DD00019J},
146+
url = {https://doi.org/10.1039/D5DD00019J},
147+
urldate = {2025-07-01},
138148
}
139149
```
140150

141151
[pymatgen]: https://pymatgen.org
142152
[fireworks]: https://materialsproject.github.io/fireworks/
143153
[jobflow]: https://materialsproject.github.io/jobflow/
154+
[jobflow-remote]: https://github.com/Matgenix/jobflow-remote
144155
[custodian]: https://materialsproject.github.io/custodian/
145156
[VASP]: https://www.vasp.at
146157
[AMSET]: https://hackingmaterials.lbl.gov/amset/
@@ -154,11 +165,17 @@ A journal submission of `atomate2` is undergoing peer review. In the meantime, p
154165
[running-workflows]: https://materialsproject.github.io/atomate2/user/running-workflows.html
155166
[key-concepts]: https://materialsproject.github.io/atomate2/user/key_concepts_overview.html#key-concepts-in-atomate2-job-flow-makers-inputset-taskdocument-and-builder
156167
[atomate2_fireworks]: https://materialsproject.github.io/atomate2/user/fireworks.html
168+
[atomate2-jobflow-remote]: https://materialsproject.github.io/atomate2/user/jobflow-remote.html
157169
[vasp_workflows]: https://materialsproject.github.io/atomate2/user/codes/vasp.html
170+
[tutorials]: https://materialsproject.github.io/atomate2/tutorials/tutorials.html
158171
[RelaxBandStructure]: https://materialsproject.github.io/atomate2/user/codes/vasp.html#relax-and-band-structure
159172
[Lobster]: http://www.cohp.de
160173
[lobsterpy]: https://github.com/JaGeo/LobsterPy
161174
[phonopy]: https://github.com/phonopy/phonopy
162175
[docs]: https://materialsproject.github.io/atomate2/
163176
[github]: https://github.com/materialsproject/atomate2
164177
[pypi]: https://pypi.org/project/atomate2
178+
[videotutorial1]: https://lhumos.org/collection/0/680bb4d7e4b0f0d2028027ce
179+
[videotutorial2]: https://lhumos.org/collection/0/680bb4d3e4b0f0d2028027c9
180+
[videotutorial3]: https://lhumos.org/collection/0/680bb4d0e4b0f0d2028027c5
181+
[videotutorial4]: https://lhumos.org/collection/0/680bb4c7e4b0f0d2028027c1

0 commit comments

Comments
 (0)