Skip to content

Commit 0ce15ce

Browse files
committed
Merge develop up to 6a568d0 (linting fixes)
Resolved conflict in vasp.py by adopting prefixed annotation key naming (vasp_xml, vasp_outcar, etc.) and adding new keys with same pattern.
2 parents 9c19f8a + 6a568d0 commit 0ce15ce

File tree

40 files changed

+1124
-248
lines changed

40 files changed

+1124
-248
lines changed

pyproject.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ dependencies = [
4040
"mdanalysis>=2.8.0,<3.0.0 ; python_full_version >= '3.10'",
4141
"mdanalysis<2.8 ; python_full_version < '3.10'",
4242
"panedr>=0.2",
43+
# issue with reading nc file in 1.7.3: https://github.com/Unidata/netcdf4-python/issues/1438
44+
"netcdf4<=1.7.2",
4345
]
4446

4547
[project.urls]
@@ -162,6 +164,8 @@ vasp_parser = "nomad_simulation_parsers.parsers:vasp_parser"
162164
vasp_schema_package = "nomad_simulation_parsers.schema_packages:vasp_schema_package"
163165
wannier90_parser = "nomad_simulation_parsers.parsers:wannier90_parser"
164166
wannier90_schema_package = "nomad_simulation_parsers.schema_packages:wannier90_schema_package"
167+
yambo_parser = "nomad_simulation_parsers.parsers:yambo_parser"
168+
yambo_schema_package = "nomad_simulation_parsers.schema_packages:yambo_schema_package"
165169

166170

167171
[tool.cruft]

src/nomad_simulation_parsers/parsers/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,15 @@ class Wannier90ParserEntryPoint(EntryPoint):
222222
code_homepage='http://www.wannier.org/',
223223
code_category='Atomistic code',
224224
)
225+
226+
yambo_parser = EntryPoint(
227+
name='parsers/yambo',
228+
aliases=['parsers/yambo'],
229+
description='NOMAD parser for YAMBO.',
230+
parser_class_name='nomad_simulation_parsers.parsers.yambo.parser.YamboParser',
231+
python_package='nomad_simulation_parsers',
232+
mainfile_contents_re=r'Build[\s\S]+?http://www\.yambo-code\.org',
233+
code_name='YAMBO',
234+
code_homepage='http://www.yambo-code.org/',
235+
code_category='Atomistic code',
236+
)

src/nomad_simulation_parsers/parsers/abinit/parser.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import os
22
from collections.abc import Iterable
33
from datetime import datetime
4-
from importlib import reload
54
from typing import Any
65

76
import numpy as np
@@ -623,8 +622,6 @@ def parse_workflow(self):
623622
self.mainfile_parser.convert(self.metainfo_parser)
624623

625624
def write_to_archive(self):
626-
reload(abinit)
627-
628625
self.archive.data = Simulation(program=Program(name=self.code_name))
629626
self.metainfo_parser.annotation_key = self.annotation_key
630627
self.metainfo_parser.data_object = self.archive.data
@@ -662,6 +659,10 @@ def write_to_archive(self):
662659
tasks=[self.archive.workflow2, gw_archive.workflow2]
663660
)
664661

662+
self.metainfo_parser.close()
663+
self.mainfile_parser.close()
664+
self.dos_parser.close()
665+
665666

666667
class AbinitParser(MatchingParser):
667668
"""

src/nomad_simulation_parsers/parsers/ams/parser.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
from importlib import reload
32
from typing import Any
43

54
import numpy as np
@@ -78,9 +77,6 @@ class AMSArchiveWriter(ArchiveWriter):
7877
rkf_parser = RKFParser(text_parser=RKFTextParser())
7978

8079
def write_to_archive(self):
81-
# reload schema package to use correct annotations
82-
reload(ams)
83-
8480
self.metainfo_parser.annotation_key = ams.OUT_KEY
8581
self.archive.data = Simulation(program=Program(name='AMS'))
8682
self.metainfo_parser.data_object = self.archive.data

src/nomad_simulation_parsers/parsers/crystal/parser.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import datetime
22
import os
33
import re
4-
from importlib import reload
54
from typing import Any
65

76
import numpy as np
@@ -207,9 +206,6 @@ class CrystalArchiveWriter(ArchiveWriter):
207206
archive_parser = CrystalMetainfoParser()
208207

209208
def write_to_archive(self):
210-
# reload schema to update annotations
211-
reload(crystal)
212-
213209
# main output file
214210
self.archive_parser.annotation_key = crystal.OUT_KEY
215211
self.archive_parser.data_object = Simulation(program=Program(name='Crystal'))

src/nomad_simulation_parsers/parsers/exciting/parser.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
from importlib import reload
32
from typing import Any
43

54
import numpy as np
@@ -24,7 +23,6 @@
2423
search_files,
2524
)
2625
from nomad_simulation_parsers.schema_packages import exciting
27-
from nomad_simulation_parsers.schema_packages.utils import remove_mapping_annotations
2826

2927
from .eigval_parser import EigvalFileParser
3028
from .info_parser import InfoFileParser
@@ -185,8 +183,6 @@ def get_eigenvalues(self, source: dict[str, Any]):
185183

186184
class ExcitingArchiveWriter(ArchiveWriter):
187185
def write_to_archive(self) -> None:
188-
reload(exciting)
189-
190186
maindir = os.path.dirname(self.mainfile)
191187
mainbase = os.path.basename(self.mainfile)
192188

@@ -248,9 +244,6 @@ def write_to_archive(self) -> None:
248244
info_parser.close()
249245
data_parser.close()
250246

251-
# remove annotations
252-
remove_mapping_annotations(exciting.general.Simulation.m_def)
253-
254247

255248
class ExcitingParser(MatchingParser):
256249
"""

src/nomad_simulation_parsers/parsers/fhiaims/parser.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import os
22
import re
33
from collections.abc import Iterable
4-
from importlib import reload
54
from typing import Any
65

76
import numpy as np
@@ -41,7 +40,6 @@
4140
search_files,
4241
)
4342
from nomad_simulation_parsers.schema_packages import fhiaims
44-
from nomad_simulation_parsers.schema_packages.utils import remove_mapping_annotations
4543

4644
from .common import ControlParser, GeometryParser
4745

@@ -446,9 +444,6 @@ def get_forces(
446444
def write_to_archive(
447445
self,
448446
) -> None:
449-
# reload module to refresh annotations
450-
reload(fhiaims)
451-
452447
out_parser = FHIAimsOutMappingParser()
453448
out_parser.text_parser = FHIAimsOutFileParser()
454449
out_parser.filepath = self.mainfile
@@ -545,13 +540,8 @@ def write_to_archive(
545540
)
546541

547542
# close file contexts
548-
self.out_parser = out_parser
549-
self.archive_handler = archive_handler
550-
# out_parser.close()
551-
# archive_handler.close()
552-
553-
# remove annotations
554-
remove_mapping_annotations(fhiaims.general.Simulation.m_def)
543+
out_parser.close()
544+
archive_handler.close()
555545

556546

557547
class FHIAimsParser(MatchingParser):

src/nomad_simulation_parsers/parsers/gpaw/gpw_parser.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -234,24 +234,24 @@ def get_array(self, key: str) -> np.ndarray:
234234
if self.ulm is None:
235235
return
236236
values = {
237-
'unitcell': lambda: self.ulm.atoms.cell,
238-
'atomicnumbers': lambda: self.ulm.atoms.numbers,
239-
'atom_positions': lambda: self.ulm.atoms.positions,
240-
'boundaryconditions': lambda: self.ulm.atoms.pbc,
241-
'momenta': lambda: self.ulm.atoms.momenta,
242-
'atom_forces_free_raw': lambda: self.ulm.results.forces,
243-
'magneticmoments': lambda: self.ulm.results.magmoms,
244-
'eigenvalues': lambda: self.ulm.wave_functions.eigenvalues,
245-
'occupation': lambda: self.ulm.wave_functions.occupations,
237+
'unitcell': self.ulm.atoms.cell,
238+
'atomicnumbers': self.ulm.atoms.numbers,
239+
'atom_positions': self.ulm.atoms.positions,
240+
'boundaryconditions': self.ulm.atoms.pbc,
241+
'momenta': self.ulm.atoms.momenta,
242+
'atom_forces_free_raw': self.ulm.results.forces,
243+
'magneticmoments': self.ulm.results.magmoms,
244+
'eigenvalues': self.ulm.wave_functions.eigenvalues,
245+
'occupation': self.ulm.wave_functions.occupations,
246246
# TODO no koints data in ulm?
247-
'kpoints': lambda: self.ulm.IBZKPoints,
248-
'density': lambda: self.ulm.density.density,
249-
'potential_effective': lambda: self.ulm.hamiltonian.potential,
250-
'band_paths': lambda: self.ulm.wave_functions.band_paths.asdict(),
247+
'kpoints': self.ulm.IBZKPoints,
248+
'density': self.ulm.density.density,
249+
'potential_effective': self.ulm.hamiltonian.potential,
250+
'band_paths': self.ulm.wave_functions.band_paths.asdict(),
251251
}
252252
try:
253253
if key in values:
254-
val = values.get(key)()
254+
val = values.get(key)
255255
else:
256256
val = self.ulm.asdict().get(key, None)
257257
except Exception:

src/nomad_simulation_parsers/parsers/gpaw/parser.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from importlib import reload
21
from typing import Any
32

43
from nomad.datamodel import EntryArchive
@@ -90,16 +89,16 @@ class GPAWArchiveWriter(ArchiveWriter):
9089
archive_parser = GPAWMetainfoParser()
9190

9291
def write_to_archive(self):
93-
# reload schema annotations
94-
reload(gpaw)
95-
9692
self.mainfile_parser.filepath = self.mainfile
9793
self.archive_parser.annotation_key = gpaw.GPW_KEY
9894
self.archive_parser.data_object = Simulation()
9995

10096
self.mainfile_parser.convert(self.archive_parser)
10197
self.archive.data = self.archive_parser.data_object
10298

99+
self.mainfile_parser.close()
100+
self.archive_parser.close()
101+
103102

104103
class GPAWParser(MatchingParser):
105104
"""

src/nomad_simulation_parsers/parsers/gromacs/mdanalysis_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ def get_force_field_parameters(
157157
'Interactions will not be stored'
158158
)
159159
return []
160-
gromacs_version = gromacs_version.split('.')[0] if gromacs_version else None
160+
gromacs_version = gromacs_version.split('.', 1)[0] if gromacs_version else None
161161
if gromacs_version == '2024':
162162
self.logger.warning(
163163
'Reading force field from tpr not yet supported for Gromacs 2024.'

0 commit comments

Comments
 (0)