nomad-parser-plugins-atomistic 1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- atomisticparsers/__init__.py +400 -0
- atomisticparsers/amber/__init__.py +19 -0
- atomisticparsers/amber/__main__.py +31 -0
- atomisticparsers/amber/metainfo/__init__.py +19 -0
- atomisticparsers/amber/metainfo/amber.py +495 -0
- atomisticparsers/amber/parser.py +42 -0
- atomisticparsers/asap/__init__.py +19 -0
- atomisticparsers/asap/__main__.py +31 -0
- atomisticparsers/asap/metainfo/__init__.py +19 -0
- atomisticparsers/asap/metainfo/asap.py +75 -0
- atomisticparsers/asap/parser.py +197 -0
- atomisticparsers/bopfox/__init__.py +19 -0
- atomisticparsers/bopfox/__main__.py +31 -0
- atomisticparsers/bopfox/metainfo/__init__.py +19 -0
- atomisticparsers/bopfox/metainfo/bopfox.py +225 -0
- atomisticparsers/bopfox/parser.py +808 -0
- atomisticparsers/dftbplus/__init__.py +19 -0
- atomisticparsers/dftbplus/__main__.py +31 -0
- atomisticparsers/dftbplus/metainfo/__init__.py +19 -0
- atomisticparsers/dftbplus/metainfo/dftbplus.py +217 -0
- atomisticparsers/dftbplus/parser.py +500 -0
- atomisticparsers/dlpoly/__init__.py +19 -0
- atomisticparsers/dlpoly/__main__.py +31 -0
- atomisticparsers/dlpoly/metainfo/__init__.py +19 -0
- atomisticparsers/dlpoly/metainfo/dl_poly.py +312 -0
- atomisticparsers/dlpoly/parser.py +798 -0
- atomisticparsers/gromacs/__init__.py +19 -0
- atomisticparsers/gromacs/__main__.py +31 -0
- atomisticparsers/gromacs/metainfo/__init__.py +19 -0
- atomisticparsers/gromacs/metainfo/gromacs.py +2388 -0
- atomisticparsers/gromacs/parser.py +1581 -0
- atomisticparsers/gromos/__init__.py +19 -0
- atomisticparsers/gromos/__main__.py +31 -0
- atomisticparsers/gromos/metainfo/__init__.py +19 -0
- atomisticparsers/gromos/metainfo/gromos.py +1995 -0
- atomisticparsers/gromos/parser.py +58 -0
- atomisticparsers/gulp/__init__.py +19 -0
- atomisticparsers/gulp/__main__.py +31 -0
- atomisticparsers/gulp/metainfo/__init__.py +19 -0
- atomisticparsers/gulp/metainfo/gulp.py +1117 -0
- atomisticparsers/gulp/parser.py +1316 -0
- atomisticparsers/h5md/__init__.py +19 -0
- atomisticparsers/h5md/__main__.py +31 -0
- atomisticparsers/h5md/metainfo/__init__.py +19 -0
- atomisticparsers/h5md/metainfo/h5md.py +239 -0
- atomisticparsers/h5md/parser.py +901 -0
- atomisticparsers/lammps/__init__.py +19 -0
- atomisticparsers/lammps/__main__.py +31 -0
- atomisticparsers/lammps/metainfo/__init__.py +19 -0
- atomisticparsers/lammps/metainfo/lammps.py +1417 -0
- atomisticparsers/lammps/parser.py +1753 -0
- atomisticparsers/libatoms/__init__.py +19 -0
- atomisticparsers/libatoms/__main__.py +31 -0
- atomisticparsers/libatoms/metainfo/__init__.py +19 -0
- atomisticparsers/libatoms/metainfo/lib_atoms.py +251 -0
- atomisticparsers/libatoms/parser.py +38 -0
- atomisticparsers/namd/__init__.py +19 -0
- atomisticparsers/namd/__main__.py +31 -0
- atomisticparsers/namd/metainfo/__init__.py +19 -0
- atomisticparsers/namd/metainfo/namd.py +1605 -0
- atomisticparsers/namd/parser.py +312 -0
- atomisticparsers/tinker/__init__.py +19 -0
- atomisticparsers/tinker/__main__.py +31 -0
- atomisticparsers/tinker/metainfo/__init__.py +18 -0
- atomisticparsers/tinker/metainfo/tinker.py +1363 -0
- atomisticparsers/tinker/parser.py +685 -0
- atomisticparsers/utils/__init__.py +22 -0
- atomisticparsers/utils/mdanalysis.py +662 -0
- atomisticparsers/utils/parsers.py +226 -0
- atomisticparsers/xtb/__init__.py +19 -0
- atomisticparsers/xtb/__main__.py +32 -0
- atomisticparsers/xtb/metainfo/__init__.py +19 -0
- atomisticparsers/xtb/metainfo/xtb.py +256 -0
- atomisticparsers/xtb/parser.py +979 -0
- nomad_parser_plugins_atomistic-1.0.dist-info/LICENSE +202 -0
- nomad_parser_plugins_atomistic-1.0.dist-info/METADATA +327 -0
- nomad_parser_plugins_atomistic-1.0.dist-info/RECORD +80 -0
- nomad_parser_plugins_atomistic-1.0.dist-info/WHEEL +5 -0
- nomad_parser_plugins_atomistic-1.0.dist-info/entry_points.txt +15 -0
- nomad_parser_plugins_atomistic-1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD.
|
|
5
|
+
# See https://nomad-lab.eu for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
from typing import Any, Dict, List, Union
|
|
21
|
+
import numpy as np
|
|
22
|
+
from collections.abc import Iterable
|
|
23
|
+
|
|
24
|
+
from nomad.utils import get_logger
|
|
25
|
+
from nomad.metainfo import MSection, SubSection, Quantity
|
|
26
|
+
from nomad.parsing.file_parser import Parser
|
|
27
|
+
from runschema.run import Run
|
|
28
|
+
from runschema.system import System
|
|
29
|
+
from runschema.calculation import Calculation
|
|
30
|
+
from runschema.method import Interaction, Model
|
|
31
|
+
from simulationworkflowschema import MolecularDynamics
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class MDParser(Parser):
|
|
35
|
+
def __init__(self, **kwargs) -> None:
|
|
36
|
+
self.info: Dict[str, Any] = {}
|
|
37
|
+
self.cum_max_atoms: int = 2500000
|
|
38
|
+
self.logger = get_logger(__name__)
|
|
39
|
+
self._trajectory_steps: List[int] = []
|
|
40
|
+
self._thermodynamics_steps: List[int] = []
|
|
41
|
+
self._trajectory_steps_sampled: List[int] = []
|
|
42
|
+
self._steps: List[int] = []
|
|
43
|
+
super().__init__(**kwargs)
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def steps(self) -> List[int]:
|
|
47
|
+
"""
|
|
48
|
+
Returns the set of trajectory and thermodynamics steps.
|
|
49
|
+
"""
|
|
50
|
+
if not self._steps:
|
|
51
|
+
self._steps = list(set(self.trajectory_steps + self.thermodynamics_steps))
|
|
52
|
+
self._steps.sort()
|
|
53
|
+
return self._steps
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def trajectory_steps(self) -> List[int]:
|
|
57
|
+
"""
|
|
58
|
+
Returns the sampled trajectory steps.
|
|
59
|
+
"""
|
|
60
|
+
if not self._trajectory_steps_sampled:
|
|
61
|
+
self._trajectory_steps_sampled = [
|
|
62
|
+
step
|
|
63
|
+
for n, step in enumerate(self._trajectory_steps)
|
|
64
|
+
if n % self.archive_sampling_rate == 0
|
|
65
|
+
]
|
|
66
|
+
return self._trajectory_steps_sampled
|
|
67
|
+
|
|
68
|
+
@trajectory_steps.setter
|
|
69
|
+
def trajectory_steps(self, value: List[int]):
|
|
70
|
+
self._trajectory_steps = list(set(value))
|
|
71
|
+
self._trajectory_steps.sort()
|
|
72
|
+
self.info['n_frames'] = len(self._trajectory_steps)
|
|
73
|
+
self._trajectory_steps_sampled = []
|
|
74
|
+
|
|
75
|
+
@property
|
|
76
|
+
def thermodynamics_steps(self) -> List[int]:
|
|
77
|
+
"""
|
|
78
|
+
Returns the thermodynamics steps.
|
|
79
|
+
"""
|
|
80
|
+
# TODO is it necessary to sample thermodynamics steps
|
|
81
|
+
return self._thermodynamics_steps
|
|
82
|
+
|
|
83
|
+
@thermodynamics_steps.setter
|
|
84
|
+
def thermodynamics_steps(self, value: List[int]):
|
|
85
|
+
self._thermodynamics_steps = list(set(value))
|
|
86
|
+
self._thermodynamics_steps.sort()
|
|
87
|
+
|
|
88
|
+
@property
|
|
89
|
+
def n_atoms(self) -> int:
|
|
90
|
+
return np.amax(self.info.get('n_atoms', [0]))
|
|
91
|
+
|
|
92
|
+
@n_atoms.setter
|
|
93
|
+
def n_atoms(self, value: Union[Iterable, int]):
|
|
94
|
+
self.info['n_atoms'] = [value] if not isinstance(value, Iterable) else value
|
|
95
|
+
|
|
96
|
+
@property
|
|
97
|
+
def archive_sampling_rate(self) -> int:
|
|
98
|
+
"""
|
|
99
|
+
Returns the sampling rate of saved thermodynamics data and trajectory.
|
|
100
|
+
"""
|
|
101
|
+
if self.info.get('archive_sampling_rate') is None:
|
|
102
|
+
n_frames = self.info.get('n_frames', len(self._trajectory_steps))
|
|
103
|
+
n_atoms = np.amax(self.n_atoms)
|
|
104
|
+
if not n_atoms or not n_frames:
|
|
105
|
+
self.info['archive_sampling_rate'] = 1
|
|
106
|
+
else:
|
|
107
|
+
cum_atoms = n_atoms * n_frames
|
|
108
|
+
self.info['archive_sampling_rate'] = (
|
|
109
|
+
1
|
|
110
|
+
if cum_atoms <= self.cum_max_atoms
|
|
111
|
+
else -(-cum_atoms // self.cum_max_atoms)
|
|
112
|
+
)
|
|
113
|
+
return self.info.get('archive_sampling_rate')
|
|
114
|
+
|
|
115
|
+
def parse(self, *args, **kwargs):
|
|
116
|
+
self.info = {}
|
|
117
|
+
self.trajectory_steps = []
|
|
118
|
+
self.thermodynamics_steps = []
|
|
119
|
+
self._steps = []
|
|
120
|
+
self._trajectory_steps_sampled = []
|
|
121
|
+
super().parse(*args, **kwargs)
|
|
122
|
+
|
|
123
|
+
def parse_trajectory_step(self, data: Dict[str, Any]) -> None:
|
|
124
|
+
"""
|
|
125
|
+
Create a system section and write the provided data.
|
|
126
|
+
"""
|
|
127
|
+
if self.archive is None:
|
|
128
|
+
return
|
|
129
|
+
|
|
130
|
+
if (step := data.get('step')) is not None and step not in self.trajectory_steps:
|
|
131
|
+
return
|
|
132
|
+
|
|
133
|
+
if self.archive.run:
|
|
134
|
+
sec_run = self.archive.run[-1]
|
|
135
|
+
else:
|
|
136
|
+
sec_run = Run()
|
|
137
|
+
self.archive.run.append(sec_run)
|
|
138
|
+
|
|
139
|
+
sec_system = System()
|
|
140
|
+
sec_run.system.append(sec_system)
|
|
141
|
+
self.parse_section(data, sec_system)
|
|
142
|
+
|
|
143
|
+
def parse_thermodynamics_step(self, data: Dict[str, Any]) -> None:
|
|
144
|
+
"""
|
|
145
|
+
Create a calculation section and write the provided data.
|
|
146
|
+
"""
|
|
147
|
+
if self.archive is None:
|
|
148
|
+
return
|
|
149
|
+
|
|
150
|
+
if (
|
|
151
|
+
step := data.get('step')
|
|
152
|
+
) is not None and step not in self.thermodynamics_steps:
|
|
153
|
+
return
|
|
154
|
+
|
|
155
|
+
if self.archive.run:
|
|
156
|
+
sec_run = self.archive.run[-1]
|
|
157
|
+
else:
|
|
158
|
+
sec_run = Run()
|
|
159
|
+
self.archive.run.append(sec_run)
|
|
160
|
+
sec_calc = Calculation()
|
|
161
|
+
sec_run.calculation.append(sec_calc)
|
|
162
|
+
|
|
163
|
+
self.parse_section(data, sec_calc)
|
|
164
|
+
try:
|
|
165
|
+
system_ref_index = self.trajectory_steps.index(sec_calc.step)
|
|
166
|
+
sec_calc.system_ref = sec_run.system[system_ref_index]
|
|
167
|
+
except Exception:
|
|
168
|
+
pass
|
|
169
|
+
|
|
170
|
+
def parse_md_workflow(self, data: Dict[str, Any]) -> None:
|
|
171
|
+
"""
|
|
172
|
+
Create an md workflow section and write the provided data.
|
|
173
|
+
"""
|
|
174
|
+
if self.archive is None:
|
|
175
|
+
return
|
|
176
|
+
|
|
177
|
+
sec_workflow = MolecularDynamics()
|
|
178
|
+
self.parse_section(data, sec_workflow)
|
|
179
|
+
self.archive.workflow2 = sec_workflow
|
|
180
|
+
|
|
181
|
+
def parse_interactions(self, interactions: List[Dict], sec_model: MSection) -> None:
|
|
182
|
+
if not interactions:
|
|
183
|
+
return
|
|
184
|
+
|
|
185
|
+
def write_interaction_values(values):
|
|
186
|
+
sec_interaction = Interaction()
|
|
187
|
+
sec_model.contributions.append(sec_interaction)
|
|
188
|
+
sec_interaction.type = current_type
|
|
189
|
+
sec_interaction.n_atoms = max(
|
|
190
|
+
[len(v) for v in values.get('atom_indices', [[0]])]
|
|
191
|
+
)
|
|
192
|
+
for key, val in values.items():
|
|
193
|
+
quantity_def = sec_interaction.m_def.all_quantities.get(key)
|
|
194
|
+
if quantity_def:
|
|
195
|
+
try:
|
|
196
|
+
sec_interaction.m_set(quantity_def, val)
|
|
197
|
+
except Exception:
|
|
198
|
+
self.logger.error('Error setting metadata.', data={'key': key})
|
|
199
|
+
|
|
200
|
+
interactions.sort(key=lambda x: x.get('type'))
|
|
201
|
+
current_type = interactions[0].get('type')
|
|
202
|
+
interaction_values: Dict[str, Any] = {}
|
|
203
|
+
for interaction in interactions:
|
|
204
|
+
interaction_type = interaction.get('type')
|
|
205
|
+
if current_type and current_type != interaction_type:
|
|
206
|
+
write_interaction_values(interaction_values)
|
|
207
|
+
current_type = interaction_type
|
|
208
|
+
interaction_values = {}
|
|
209
|
+
interaction_values.setdefault('n_interactions', 0)
|
|
210
|
+
interaction_values['n_interactions'] += 1
|
|
211
|
+
for key, val in interaction.items():
|
|
212
|
+
if key == 'type':
|
|
213
|
+
continue
|
|
214
|
+
interaction_values.setdefault(key, [])
|
|
215
|
+
interaction_values[key].append(val)
|
|
216
|
+
if interaction_values:
|
|
217
|
+
write_interaction_values(interaction_values)
|
|
218
|
+
|
|
219
|
+
def parse_interactions_by_type(
|
|
220
|
+
self, interactions_by_type: List[Dict], sec_model: Model
|
|
221
|
+
) -> None:
|
|
222
|
+
for interaction_type_dict in interactions_by_type:
|
|
223
|
+
sec_interaction = Interaction()
|
|
224
|
+
sec_model.contributions.append(sec_interaction)
|
|
225
|
+
self.parse_section(interaction_type_dict, sec_interaction)
|
|
226
|
+
# TODO Shift Gromacs and Lammps parsers to use this function as well if possible
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD.
|
|
5
|
+
# See https://nomad-lab.eu for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
from .parser import XTBParser
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD. See https://nomad-lab.eu for further info.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
import sys
|
|
20
|
+
import json
|
|
21
|
+
import logging
|
|
22
|
+
|
|
23
|
+
from nomad.utils import configure_logging
|
|
24
|
+
from nomad.datamodel import EntryArchive
|
|
25
|
+
from atomisticparsers.xtb import XTBParser
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
if __name__ == '__main__':
|
|
29
|
+
configure_logging(console_log_level=logging.DEBUG)
|
|
30
|
+
archive = EntryArchive()
|
|
31
|
+
XTBParser().parse(sys.argv[1], archive, logging)
|
|
32
|
+
json.dump(archive.m_to_dict(), sys.stdout, indent=2)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD.
|
|
5
|
+
# See https://nomad-lab.eu for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
from . import xtb
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright The NOMAD Authors.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of NOMAD.
|
|
5
|
+
# See https://nomad-lab.eu for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
import numpy as np # pylint: disable=unused-import
|
|
20
|
+
|
|
21
|
+
from nomad.metainfo import ( # pylint: disable=unused-import
|
|
22
|
+
Package,
|
|
23
|
+
Quantity,
|
|
24
|
+
Section,
|
|
25
|
+
SubSection,
|
|
26
|
+
JSON,
|
|
27
|
+
)
|
|
28
|
+
import runschema.run # pylint: disable=unused-import
|
|
29
|
+
import runschema.calculation # pylint: disable=unused-import
|
|
30
|
+
import runschema.method # pylint: disable=unused-import
|
|
31
|
+
import runschema.system # pylint: disable=unused-import
|
|
32
|
+
import simulationworkflowschema
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
m_package = Package()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class Run(runschema.method.Method):
|
|
39
|
+
m_def = Section(validate=False, extends_base_section=True)
|
|
40
|
+
|
|
41
|
+
x_xtb_calculation_setup = Quantity(
|
|
42
|
+
type=JSON,
|
|
43
|
+
shape=[],
|
|
44
|
+
description="""
|
|
45
|
+
""",
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class TB(runschema.method.TB):
|
|
50
|
+
m_def = Section(validate=False, extends_base_section=True)
|
|
51
|
+
|
|
52
|
+
x_xtb_setup = Quantity(
|
|
53
|
+
type=JSON,
|
|
54
|
+
shape=[],
|
|
55
|
+
description="""
|
|
56
|
+
""",
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class Energy(runschema.calculation.Energy):
|
|
61
|
+
m_def = Section(validate=False, extends_base_section=True)
|
|
62
|
+
|
|
63
|
+
x_xtb_scc = SubSection(sub_section=runschema.calculation.EnergyEntry.m_def)
|
|
64
|
+
|
|
65
|
+
x_xtb_isotropic_es = SubSection(sub_section=runschema.calculation.EnergyEntry.m_def)
|
|
66
|
+
|
|
67
|
+
x_xtb_anisotropic_es = SubSection(
|
|
68
|
+
sub_section=runschema.calculation.EnergyEntry.m_def
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
x_xtb_anistropic_xc = SubSection(
|
|
72
|
+
sub_section=runschema.calculation.EnergyEntry.m_def
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
x_xtb_dispersion = SubSection(sub_section=runschema.calculation.EnergyEntry.m_def)
|
|
76
|
+
|
|
77
|
+
x_xtb_repulsion = SubSection(sub_section=runschema.calculation.EnergyEntry.m_def)
|
|
78
|
+
|
|
79
|
+
x_xtb_halogen_bond_corr = SubSection(
|
|
80
|
+
sub_section=runschema.calculation.EnergyEntry.m_def
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
x_xtb_add_restraining = SubSection(
|
|
84
|
+
sub_section=runschema.calculation.EnergyEntry.m_def
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class MultipolesEntry(runschema.calculation.MultipolesEntry):
|
|
89
|
+
m_def = Section(validate=False, extends_base_section=True)
|
|
90
|
+
|
|
91
|
+
x_xtb_q_only = Quantity(
|
|
92
|
+
type=np.float64,
|
|
93
|
+
shape=['n_multipoles'],
|
|
94
|
+
description="""
|
|
95
|
+
""",
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
x_xtb_q_plus_dip = Quantity(
|
|
99
|
+
type=np.float64,
|
|
100
|
+
shape=['n_multipoles'],
|
|
101
|
+
description="""
|
|
102
|
+
""",
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class GeometryOptimization(simulationworkflowschema.GeometryOptimization):
|
|
107
|
+
m_def = Section(validate=False, extends_base_section=True)
|
|
108
|
+
|
|
109
|
+
x_xtb_optimization_level = Quantity(
|
|
110
|
+
type=str,
|
|
111
|
+
shape=[],
|
|
112
|
+
description="""
|
|
113
|
+
""",
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
x_xtb_max_opt_cycles = Quantity(
|
|
117
|
+
type=np.int32,
|
|
118
|
+
shape=[],
|
|
119
|
+
description="""
|
|
120
|
+
""",
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
x_xtb_anc_micro_cycles = Quantity(
|
|
124
|
+
type=np.int32,
|
|
125
|
+
shape=[],
|
|
126
|
+
description="""
|
|
127
|
+
""",
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
x_xtb_n_degrees_freedom = Quantity(
|
|
131
|
+
type=np.int32,
|
|
132
|
+
shape=[],
|
|
133
|
+
description="""
|
|
134
|
+
""",
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
x_xtb_rf_solver = Quantity(
|
|
138
|
+
type=str,
|
|
139
|
+
shape=[],
|
|
140
|
+
description="""
|
|
141
|
+
""",
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
x_xtb_linear = Quantity(
|
|
145
|
+
type=str,
|
|
146
|
+
shape=[],
|
|
147
|
+
description="""
|
|
148
|
+
""",
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
x_xtb_hlow = Quantity(
|
|
152
|
+
type=np.float64,
|
|
153
|
+
shape=[],
|
|
154
|
+
description="""
|
|
155
|
+
""",
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
x_xtb_hmax = Quantity(
|
|
159
|
+
type=np.float64,
|
|
160
|
+
shape=[],
|
|
161
|
+
description="""
|
|
162
|
+
""",
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
x_xtb_s6 = Quantity(
|
|
166
|
+
type=np.float64,
|
|
167
|
+
shape=[],
|
|
168
|
+
description="""
|
|
169
|
+
""",
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class MolecularDynamics(simulationworkflowschema.MolecularDynamics):
|
|
174
|
+
m_def = Section(validate=False, extends_base_section=True)
|
|
175
|
+
|
|
176
|
+
x_xtb_md_time = Quantity(
|
|
177
|
+
type=np.float64,
|
|
178
|
+
shape=[],
|
|
179
|
+
unit='s',
|
|
180
|
+
description="""
|
|
181
|
+
""",
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
x_xtb_scc_accuracy = Quantity(
|
|
185
|
+
type=np.float64,
|
|
186
|
+
shape=[],
|
|
187
|
+
description="""
|
|
188
|
+
""",
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
x_xtb_temperature = Quantity(
|
|
192
|
+
type=np.float64,
|
|
193
|
+
shape=[],
|
|
194
|
+
unit='K',
|
|
195
|
+
description="""
|
|
196
|
+
""",
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
x_xtb_max_steps = Quantity(
|
|
200
|
+
type=np.int32,
|
|
201
|
+
shape=[],
|
|
202
|
+
description="""
|
|
203
|
+
""",
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
x_xtb_max_block_length = Quantity(
|
|
207
|
+
type=np.int32,
|
|
208
|
+
shape=[],
|
|
209
|
+
description="""
|
|
210
|
+
""",
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
x_xtb_dumpstep_trj = Quantity(
|
|
214
|
+
type=np.float64,
|
|
215
|
+
shape=[],
|
|
216
|
+
unit='s',
|
|
217
|
+
description="""
|
|
218
|
+
""",
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
x_xtb_dumpstep_coords = Quantity(
|
|
222
|
+
type=np.float64,
|
|
223
|
+
shape=[],
|
|
224
|
+
unit='s',
|
|
225
|
+
description="""
|
|
226
|
+
""",
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
x_xtb_h_atoms_mass = Quantity(
|
|
230
|
+
type=np.float64,
|
|
231
|
+
shape=[],
|
|
232
|
+
unit='kg',
|
|
233
|
+
description="""
|
|
234
|
+
""",
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
x_xtb_n_degrees_freedom = Quantity(
|
|
238
|
+
type=np.int32,
|
|
239
|
+
shape=[],
|
|
240
|
+
description="""
|
|
241
|
+
""",
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
x_xtb_shake_bonds = Quantity(
|
|
245
|
+
type=np.int32,
|
|
246
|
+
shape=[],
|
|
247
|
+
description="""
|
|
248
|
+
""",
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
x_xtb_berendsen = Quantity(
|
|
252
|
+
type=bool,
|
|
253
|
+
shape=[],
|
|
254
|
+
description="""
|
|
255
|
+
""",
|
|
256
|
+
)
|