From b2e6669a0fa7be27f44694e7e9574487928a57aa Mon Sep 17 00:00:00 2001 From: Markus Scheidgen Date: Tue, 12 Jan 2021 09:23:31 +0100 Subject: [PATCH] Fixed handling for nperiodic_dimensions = 0. #461 --- nomad/app_fastapi/optimade/elasticsearch.py | 5 ++++- nomad/normalizing/optimade.py | 11 ++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/nomad/app_fastapi/optimade/elasticsearch.py b/nomad/app_fastapi/optimade/elasticsearch.py index 19210e9ec..6fae3014a 100644 --- a/nomad/app_fastapi/optimade/elasticsearch.py +++ b/nomad/app_fastapi/optimade/elasticsearch.py @@ -155,7 +155,10 @@ class ElasticsearchStructureCollection(EntryCollection): attrs['chemical_formula_hill'] = optimade_chemical_formula_hill( attrs['chemical_formula_hill']) attrs['chemical_formula_descriptive'] = attrs['chemical_formula_hill'] - dimension_types = attrs['dimension_types'] + dimension_types = attrs.get('dimension_types') + if dimension_types is None: + dimension_types = [0, 0, 0] + attrs['dimension_types'] = dimension_types if isinstance(dimension_types, int): attrs['dimension_types'] = [1] * dimension_types + [0] * (3 - dimension_types) attrs['nperiodic_dimensions'] = dimension_types diff --git a/nomad/normalizing/optimade.py b/nomad/normalizing/optimade.py index e281ea455..fd7eb6664 100644 --- a/nomad/normalizing/optimade.py +++ b/nomad/normalizing/optimade.py @@ -32,6 +32,10 @@ from nomad.datamodel.metainfo.public import section_system species_re = re.compile(r'^([A-Z][a-z]?)(\d*)$') +optimade_prop_names = [ + prop.name + for prop in OptimadeEntry.m_def.quantities + OptimadeEntry.m_def.sub_sections] + def transform_to_v1(entry: EntryMetadata) -> EntryMetadata: ''' @@ -42,7 +46,12 @@ def transform_to_v1(entry: EntryMetadata) -> EntryMetadata: if optimade is None: return entry - if optimade.chemical_formula_reduced is None or 'X' in optimade.chemical_formula_reduced: + for name in optimade_prop_names: + if getattr(optimade, name, None) is None: + entry.dft.m_remove_sub_section(DFTMetadata.optimade, -1) + return entry + + if optimade.chemical_formula_reduced and 'X' in optimade.chemical_formula_reduced: entry.dft.m_remove_sub_section(DFTMetadata.optimade, -1) return entry -- GitLab