Skip to content

Commit 38a3197

Browse files
authored
Rename annotation keys (#141)
* Rename annotation keys * Fix h5md schema * Update src/nomad_simulation_parsers/schema_packages/quantumespresso/common.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/nomad_simulation_parsers/schema_packages/quantumespresso/common.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Close abinit parsers --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> 1. Annotation Key Namespacing (30 files) - Generic keys like 'out', 'xml', 'dos' are now prefixed with parser names - Examples: - 'out' → 'quantumespresso_out' (Quantum ESPRESSO) - 'xml' → 'vasp_xml' (VASP) - 'gpw' → 'gpaw_gpw' (GPAW) - 'out' → 'abinit_out' (ABINIT) 2. Schema Reload Removal - Removes all reload(schema_module) calls from parsers - Previously, parsers were reloading schema packages to refresh annotations at runtime - This suggests annotations are now properly registered at import time 3. Annotation Cleanup Removal - Removes calls to remove_mapping_annotations() - No longer needs to clean up annotations after parsing 4. Resource Management Improvements - Adds missing close() calls for parsers (GPAW, Octopus, FHI-aims) - Ensures proper cleanup of file contexts 5. Quantum ESPRESSO Refactoring (src/nomad_simulation_parsers/schema_packages/quantumespresso/common.py) - Introduces shared OUT_KEY = 'quantumespresso_out' constant - Refactors from manual m_annotations manipulation to using add_mapping_annotation() helper
1 parent 3193ea3 commit 38a3197

File tree

30 files changed

+149
-228
lines changed

30 files changed

+149
-228
lines changed

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/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/parser.py

Lines changed: 0 additions & 3 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
@@ -467,8 +466,6 @@ def write_to_archive(self):
467466
self._maindir = os.path.dirname(self.mainfile)
468467
self._gromacs_files = os.listdir(self._maindir)
469468
self._basename = os.path.basename(self.mainfile).rsplit('.', 1)[0]
470-
# reload the schema annotations
471-
reload(gromacs)
472469

473470
# set up source parsers
474471
self._log_parser.filepath = self.mainfile

src/nomad_simulation_parsers/parsers/h5md/parser.py

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

54
import numpy as np
@@ -16,7 +15,6 @@
1615
from nomad_simulation_parsers.parsers.utils.mdparserutils import MDParser
1716
from nomad_simulation_parsers.schema_packages import h5md
1817
from nomad_simulation_parsers.schema_packages.h5md import MolecularDynamics, Simulation
19-
from nomad_simulation_parsers.schema_packages.utils import remove_mapping_annotations
2018

2119
LOGGER = get_logger(__name__)
2220

@@ -492,9 +490,6 @@ def __init__(self, **kwargs):
492490
super().__init__(**kwargs)
493491

494492
def write_to_archive(self) -> None:
495-
# reload schema annotations
496-
reload(h5md)
497-
498493
# create h5 parser
499494
self.h5_parser.filepath = self.mainfile
500495

@@ -528,9 +523,6 @@ def write_to_archive(self) -> None:
528523
self.simulation_parser.close()
529524
self.workflow_parser.close()
530525

531-
# remove mapping annotations
532-
remove_mapping_annotations(self.archive.data.m_def)
533-
534526

535527
class H5MDParser(MatchingParser):
536528
def __init__(self, **kwargs) -> None:

src/nomad_simulation_parsers/parsers/octopus/parser.py

Lines changed: 5 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
@@ -417,9 +416,6 @@ class OctopusArchiveWriter(ArchiveWriter):
417416
eigenvalues_parser = OctopusEigenvalueParser(text_parser=EigenvalueParser())
418417

419418
def write_to_archive(self) -> None:
420-
# Reload the octopus package to update the mapping annotations
421-
reload(octopus)
422-
423419
self.mainfile_parser.filepath = self.mainfile
424420
# initialize auxiliary file parsers
425421
self.mainfile_parser.init_parser()
@@ -449,6 +445,11 @@ def write_to_archive(self) -> None:
449445
self.archive_parser.annotation_key = octopus.EIGENVALUES_KEY
450446
self.eigenvalues_parser.convert(self.archive_parser, update_mode='merge@-1')
451447

448+
self.eigenvalues_parser.close()
449+
self.archive_parser.close()
450+
self.mainfile_parser.close()
451+
self.info_parser.close()
452+
452453

453454
class OctopusParser(MatchingParser):
454455
archive_writer = OctopusArchiveWriter()

src/nomad_simulation_parsers/parsers/quantumespresso/epw/parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from nomad_simulation_parsers.parsers.quantumespresso.parser import (
55
QuantumEspressoArchiveWriter,
66
)
7-
from nomad_simulation_parsers.schema_packages.quantumespresso import epw
7+
from nomad_simulation_parsers.schema_packages.quantumespresso import common, epw
88

99
from ..parser import MainfileParser
1010
from .file_parser import EPWFileParser
@@ -23,5 +23,5 @@ class EPWArchiveWriter(QuantumEspressoArchiveWriter):
2323
mainfile_parser = EPWMainfileParser(text_parser=EPWFileParser())
2424

2525
def parse_program(self, archive: EntryArchive, index: int) -> None:
26-
self.simulation_parser.annotation_key = 'out'
26+
self.simulation_parser.annotation_key = common.OUT_KEY
2727
super().parse_program(archive, index)

0 commit comments

Comments
 (0)