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
@@ -50,7 +54,8 @@ def forcefield_job(method: Callable) -> job:
50
54
This is a thin wrapper around :obj:`~jobflow.core.job.Job` that configures common
51
55
settings for all forcefield jobs. For example, it ensures that large data objects
52
56
(currently only trajectories) are all stored in the atomate2 data store.
53
- It also configures the output schema to be a ForceFieldTaskDocument :obj:`.TaskDoc`.
57
+ It also configures the output schema to be a
58
+ ForceFieldStructureTaskDocument :obj:`.TaskDoc`.
54
59
55
60
Any makers that return forcefield jobs (not flows) should decorate the
56
61
``make`` method with @forcefield_job. For example:
@@ -74,9 +79,7 @@ def make(structure):
74
79
callable
75
80
A decorated version of the make function that will generate forcefield jobs.
76
81
"""
77
- return job (
78
- method , data = _FORCEFIELD_DATA_OBJECTS , output_schema = ForceFieldTaskDocument
79
- )
82
+ return job (method , data = _FORCEFIELD_DATA_OBJECTS )
80
83
81
84
82
85
@dataclass
@@ -120,7 +123,7 @@ class ForceFieldRelaxMaker(AseRelaxMaker):
120
123
tags : list[str] or None
121
124
A list of tags for the task.
122
125
task_document_kwargs : dict (deprecated)
123
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
126
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
124
127
"""
125
128
126
129
name : str = "Force field relax"
@@ -148,15 +151,15 @@ def __post_init__(self) -> None:
148
151
149
152
@forcefield_job
150
153
def make (
151
- self , structure : Structure , prev_dir : str | Path | None = None
152
- ) -> ForceFieldTaskDocument :
154
+ self , structure : Molecule | Structure , prev_dir : str | Path | None = None
155
+ ) -> ForceFieldStructureTaskDocument | ForceFieldMoleculeTaskDocument :
153
156
"""
154
157
Perform a relaxation of a structure using a force field.
155
158
156
159
Parameters
157
160
----------
158
- structure: .Structure
159
- pymatgen structure.
161
+ structure: .Structure or Molecule
162
+ pymatgen structure or molecule .
160
163
prev_dir : str or Path or None
161
164
A previous calculation directory to copy output files from. Unused, just
162
165
added to match the method signature of other makers.
@@ -172,7 +175,7 @@ def make(
172
175
stacklevel = 1 ,
173
176
)
174
177
175
- return ForceFieldTaskDocument .from_ase_compatible_result (
178
+ return ForceFieldTaskDocument .from_ase_compatible_result_forcefield (
176
179
str (self .force_field_name ), # make mypy happy
177
180
ase_result ,
178
181
self .steps ,
@@ -214,7 +217,7 @@ class ForceFieldStaticMaker(ForceFieldRelaxMaker):
214
217
calculator_kwargs : dict
215
218
Keyword arguments that will get passed to the ASE calculator.
216
219
task_document_kwargs : dict (deprecated)
217
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
220
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
218
221
"""
219
222
220
223
name : str = "Force field static"
@@ -257,7 +260,7 @@ class CHGNetRelaxMaker(ForceFieldRelaxMaker):
257
260
calculator_kwargs : dict
258
261
Keyword arguments that will get passed to the ASE calculator.
259
262
task_document_kwargs : dict (deprecated)
260
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
263
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
261
264
"""
262
265
263
266
name : str = f"{ MLFF .CHGNet } relax"
@@ -293,7 +296,7 @@ class CHGNetStaticMaker(ForceFieldStaticMaker):
293
296
calculator_kwargs : dict
294
297
Keyword arguments that will get passed to the ASE calculator.
295
298
task_document_kwargs : dict (deprecated)
296
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
299
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
297
300
"""
298
301
299
302
name : str = f"{ MLFF .CHGNet } static"
@@ -336,7 +339,7 @@ class M3GNetRelaxMaker(ForceFieldRelaxMaker):
336
339
calculator_kwargs : dict
337
340
Keyword arguments that will get passed to the ASE calculator.
338
341
task_document_kwargs : dict (deprecated)
339
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
342
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
340
343
"""
341
344
342
345
name : str = f"{ MLFF .M3GNet } relax"
@@ -374,7 +377,7 @@ class M3GNetStaticMaker(ForceFieldStaticMaker):
374
377
calculator_kwargs : dict
375
378
Keyword arguments that will get passed to the ASE calculator.
376
379
task_document_kwargs : dict (deprecated)
377
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
380
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
378
381
"""
379
382
380
383
name : str = f"{ MLFF .M3GNet } static"
@@ -417,7 +420,7 @@ class NEPRelaxMaker(ForceFieldRelaxMaker):
417
420
calculator_kwargs : dict
418
421
Keyword arguments that will get passed to the ASE calculator.
419
422
task_document_kwargs : dict (deprecated)
420
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
423
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
421
424
"""
422
425
423
426
name : str = f"{ MLFF .NEP } relax"
@@ -453,7 +456,7 @@ class NEPStaticMaker(ForceFieldStaticMaker):
453
456
calculator_kwargs : dict
454
457
Keyword arguments that will get passed to the ASE calculator.
455
458
task_document_kwargs : dict (deprecated)
456
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
459
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
457
460
"""
458
461
459
462
name : str = f"{ MLFF .NEP } static"
@@ -496,7 +499,7 @@ class NequipRelaxMaker(ForceFieldRelaxMaker):
496
499
calculator_kwargs : dict
497
500
Keyword arguments that will get passed to the ASE calculator.
498
501
task_document_kwargs : dict (deprecated)
499
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
502
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
500
503
"""
501
504
502
505
name : str = f"{ MLFF .Nequip } relax"
@@ -531,7 +534,7 @@ class NequipStaticMaker(ForceFieldStaticMaker):
531
534
calculator_kwargs : dict
532
535
Keyword arguments that will get passed to the ASE calculator.
533
536
task_document_kwargs : dict (deprecated)
534
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
537
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
535
538
"""
536
539
537
540
name : str = f"{ MLFF .Nequip } static"
@@ -578,7 +581,7 @@ class MACERelaxMaker(ForceFieldRelaxMaker):
578
581
trained for Matbench Discovery on the MPtrj dataset available at
579
582
https://figshare.com/articles/dataset/22715158.
580
583
task_document_kwargs : dict (deprecated)
581
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
584
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
582
585
"""
583
586
584
587
name : str = f"{ MLFF .MACE_MP_0 } relax"
@@ -618,7 +621,7 @@ class MACEStaticMaker(ForceFieldStaticMaker):
618
621
trained for Matbench Discovery on the MPtrj dataset available at
619
622
https://figshare.com/articles/dataset/22715158.
620
623
task_document_kwargs : dict (deprecated)
621
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
624
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
622
625
"""
623
626
624
627
name : str = f"{ MLFF .MACE_MP_0 } static"
@@ -667,7 +670,7 @@ class SevenNetRelaxMaker(ForceFieldRelaxMaker):
667
670
trained for Matbench Discovery on the MPtrj dataset available at
668
671
https://figshare.com/articles/dataset/22715158.
669
672
task_document_kwargs : dict (deprecated)
670
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
673
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
671
674
"""
672
675
673
676
name : str = f"{ MLFF .SevenNet } relax"
@@ -709,7 +712,7 @@ class SevenNetStaticMaker(ForceFieldStaticMaker):
709
712
trained for Matbench Discovery on the MPtrj dataset available at
710
713
https://figshare.com/articles/dataset/22715158.
711
714
task_document_kwargs : dict (deprecated)
712
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
715
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
713
716
"""
714
717
715
718
name : str = f"{ MLFF .SevenNet } static"
@@ -749,7 +752,7 @@ class GAPRelaxMaker(ForceFieldRelaxMaker):
749
752
calculator_kwargs : dict
750
753
Keyword arguments that will get passed to the ASE calculator.
751
754
task_document_kwargs : dict (deprecated)
752
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
755
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
753
756
"""
754
757
755
758
name : str = f"{ MLFF .GAP } relax"
@@ -785,7 +788,7 @@ class GAPStaticMaker(ForceFieldStaticMaker):
785
788
calculator_kwargs : dict
786
789
Keyword arguments that will get passed to the ASE calculator.
787
790
task_document_kwargs : dict (deprecated)
788
- Additional keyword args passed to :obj:`.ForceFieldTaskDocument ()`.
791
+ Additional keyword args passed to :obj:`.ForceFieldStructureTaskDocument ()`.
789
792
"""
790
793
791
794
name : str = f"{ MLFF .GAP } static"
0 commit comments