15
15
16
16
from atomate2 .ase .jobs import AseRelaxMaker
17
17
from atomate2 .forcefields import MLFF , _get_formatted_ff_name
18
- from atomate2 .forcefields .schemas import ForceFieldTaskDocument
18
+ from atomate2 .forcefields .schemas import (
19
+ ForceFieldMoleculeTaskDocument ,
20
+ ForceFieldStructureTaskDocument ,
21
+ ForceFieldTaskDocument ,
22
+ )
19
23
from atomate2 .forcefields .utils import ase_calculator , revert_default_dtype
20
24
21
25
if TYPE_CHECKING :
22
26
from collections .abc import Callable
23
27
from pathlib import Path
24
28
25
29
from ase .calculators .calculator import Calculator
26
- from pymatgen .core .structure import Structure
30
+ from pymatgen .core .structure import Molecule , Structure
27
31
28
32
logger = logging .getLogger (__name__ )
29
33
@@ -48,7 +52,8 @@ def forcefield_job(method: Callable) -> job:
48
52
This is a thin wrapper around :obj:`~jobflow.core.job.Job` that configures common
49
53
settings for all forcefield jobs. For example, it ensures that large data objects
50
54
(currently only trajectories) are all stored in the atomate2 data store.
51
- It also configures the output schema to be a ForceFieldTaskDocument :obj:`.TaskDoc`.
55
+ It also configures the output schema to be a
56
+ ForceFieldStructureTaskDocument :obj:`.TaskDoc`.
52
57
53
58
Any makers that return forcefield jobs (not flows) should decorate the
54
59
``make`` method with @forcefield_job. For example:
@@ -72,9 +77,7 @@ def make(structure):
72
77
callable
73
78
A decorated version of the make function that will generate forcefield jobs.
74
79
"""
75
- return job (
76
- method , data = _FORCEFIELD_DATA_OBJECTS , output_schema = ForceFieldTaskDocument
77
- )
80
+ return job (method , data = _FORCEFIELD_DATA_OBJECTS )
78
81
79
82
80
83
@dataclass
@@ -118,7 +121,7 @@ class ForceFieldRelaxMaker(AseRelaxMaker):
118
121
tags : list[str] or None
119
122
A list of tags for the task.
120
123
task_document_kwargs : dict (deprecated)
121
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
124
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
122
125
"""
123
126
124
127
name : str = "Force field relax"
@@ -146,15 +149,15 @@ def __post_init__(self) -> None:
146
149
147
150
@forcefield_job
148
151
def make (
149
- self , structure : Structure , prev_dir : str | Path | None = None
150
- ) -> ForceFieldTaskDocument :
152
+ self , structure : Molecule | Structure , prev_dir : str | Path | None = None
153
+ ) -> ForceFieldStructureTaskDocument | ForceFieldMoleculeTaskDocument :
151
154
"""
152
155
Perform a relaxation of a structure using a force field.
153
156
154
157
Parameters
155
158
----------
156
- structure: .Structure
157
- pymatgen structure.
159
+ structure: .Structure or Molecule
160
+ pymatgen structure or molecule .
158
161
prev_dir : str or Path or None
159
162
A previous calculation directory to copy output files from. Unused, just
160
163
added to match the method signature of other makers.
@@ -170,7 +173,7 @@ def make(
170
173
stacklevel = 1 ,
171
174
)
172
175
173
- return ForceFieldTaskDocument .from_ase_compatible_result (
176
+ return ForceFieldTaskDocument .from_ase_compatible_result_forcefield (
174
177
str (self .force_field_name ), # make mypy happy
175
178
ase_result ,
176
179
self .steps ,
@@ -212,7 +215,7 @@ class ForceFieldStaticMaker(ForceFieldRelaxMaker):
212
215
calculator_kwargs : dict
213
216
Keyword arguments that will get passed to the ASE calculator.
214
217
task_document_kwargs : dict (deprecated)
215
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
218
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
216
219
"""
217
220
218
221
name : str = "Force field static"
@@ -255,7 +258,7 @@ class CHGNetRelaxMaker(ForceFieldRelaxMaker):
255
258
calculator_kwargs : dict
256
259
Keyword arguments that will get passed to the ASE calculator.
257
260
task_document_kwargs : dict (deprecated)
258
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
261
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
259
262
"""
260
263
261
264
name : str = f"{ MLFF .CHGNet } relax"
@@ -291,7 +294,7 @@ class CHGNetStaticMaker(ForceFieldStaticMaker):
291
294
calculator_kwargs : dict
292
295
Keyword arguments that will get passed to the ASE calculator.
293
296
task_document_kwargs : dict (deprecated)
294
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
297
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
295
298
"""
296
299
297
300
name : str = f"{ MLFF .CHGNet } static"
@@ -334,7 +337,7 @@ class M3GNetRelaxMaker(ForceFieldRelaxMaker):
334
337
calculator_kwargs : dict
335
338
Keyword arguments that will get passed to the ASE calculator.
336
339
task_document_kwargs : dict (deprecated)
337
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
340
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
338
341
"""
339
342
340
343
name : str = f"{ MLFF .M3GNet } relax"
@@ -372,7 +375,7 @@ class M3GNetStaticMaker(ForceFieldStaticMaker):
372
375
calculator_kwargs : dict
373
376
Keyword arguments that will get passed to the ASE calculator.
374
377
task_document_kwargs : dict (deprecated)
375
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
378
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
376
379
"""
377
380
378
381
name : str = f"{ MLFF .M3GNet } static"
@@ -415,7 +418,7 @@ class NEPRelaxMaker(ForceFieldRelaxMaker):
415
418
calculator_kwargs : dict
416
419
Keyword arguments that will get passed to the ASE calculator.
417
420
task_document_kwargs : dict (deprecated)
418
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
421
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
419
422
"""
420
423
421
424
name : str = f"{ MLFF .NEP } relax"
@@ -451,7 +454,7 @@ class NEPStaticMaker(ForceFieldStaticMaker):
451
454
calculator_kwargs : dict
452
455
Keyword arguments that will get passed to the ASE calculator.
453
456
task_document_kwargs : dict (deprecated)
454
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
457
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
455
458
"""
456
459
457
460
name : str = f"{ MLFF .NEP } static"
@@ -494,7 +497,7 @@ class NequipRelaxMaker(ForceFieldRelaxMaker):
494
497
calculator_kwargs : dict
495
498
Keyword arguments that will get passed to the ASE calculator.
496
499
task_document_kwargs : dict (deprecated)
497
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
500
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
498
501
"""
499
502
500
503
name : str = f"{ MLFF .Nequip } relax"
@@ -529,7 +532,7 @@ class NequipStaticMaker(ForceFieldStaticMaker):
529
532
calculator_kwargs : dict
530
533
Keyword arguments that will get passed to the ASE calculator.
531
534
task_document_kwargs : dict (deprecated)
532
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
535
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
533
536
"""
534
537
535
538
name : str = f"{ MLFF .Nequip } static"
@@ -576,7 +579,7 @@ class MACERelaxMaker(ForceFieldRelaxMaker):
576
579
trained for Matbench Discovery on the MPtrj dataset available at
577
580
https://figshare.com/articles/dataset/22715158.
578
581
task_document_kwargs : dict (deprecated)
579
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
582
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
580
583
"""
581
584
582
585
name : str = f"{ MLFF .MACE_MP_0 } relax"
@@ -616,7 +619,7 @@ class MACEStaticMaker(ForceFieldStaticMaker):
616
619
trained for Matbench Discovery on the MPtrj dataset available at
617
620
https://figshare.com/articles/dataset/22715158.
618
621
task_document_kwargs : dict (deprecated)
619
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
622
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
620
623
"""
621
624
622
625
name : str = f"{ MLFF .MACE_MP_0 } static"
@@ -665,7 +668,7 @@ class SevenNetRelaxMaker(ForceFieldRelaxMaker):
665
668
trained for Matbench Discovery on the MPtrj dataset available at
666
669
https://figshare.com/articles/dataset/22715158.
667
670
task_document_kwargs : dict (deprecated)
668
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
671
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
669
672
"""
670
673
671
674
name : str = f"{ MLFF .SevenNet } relax"
@@ -707,7 +710,7 @@ class SevenNetStaticMaker(ForceFieldStaticMaker):
707
710
trained for Matbench Discovery on the MPtrj dataset available at
708
711
https://figshare.com/articles/dataset/22715158.
709
712
task_document_kwargs : dict (deprecated)
710
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
713
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
711
714
"""
712
715
713
716
name : str = f"{ MLFF .SevenNet } static"
@@ -747,7 +750,7 @@ class GAPRelaxMaker(ForceFieldRelaxMaker):
747
750
calculator_kwargs : dict
748
751
Keyword arguments that will get passed to the ASE calculator.
749
752
task_document_kwargs : dict (deprecated)
750
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
753
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
751
754
"""
752
755
753
756
name : str = f"{ MLFF .GAP } relax"
@@ -783,7 +786,7 @@ class GAPStaticMaker(ForceFieldStaticMaker):
783
786
calculator_kwargs : dict
784
787
Keyword arguments that will get passed to the ASE calculator.
785
788
task_document_kwargs : dict (deprecated)
786
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
789
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
787
790
"""
788
791
789
792
name : str = f"{ MLFF .GAP } static"
0 commit comments