From 7d248b4c4a1fa205f85501781382a9b663585360 Mon Sep 17 00:00:00 2001 From: JosePizarro3 Date: Tue, 21 May 2024 13:50:15 +0200 Subject: [PATCH] Added axis to AbsorptionSpectrum --- src/nomad_simulations/properties/permittivity.py | 6 +++++- src/nomad_simulations/properties/spectral_profile.py | 10 +++++++++- tests/test_permittivity.py | 8 +++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/nomad_simulations/properties/permittivity.py b/src/nomad_simulations/properties/permittivity.py index 9386549a..f4e4511c 100644 --- a/src/nomad_simulations/properties/permittivity.py +++ b/src/nomad_simulations/properties/permittivity.py @@ -66,6 +66,7 @@ def __init__( super().__init__(m_def, m_context, **kwargs) self.rank = [3, 3] self.name = self.m_def.name + self._axes_map = ['xx', 'yy', 'zz'] def resolve_type(self) -> str: frequencies = get_variables(self.variables, Frequency) @@ -97,8 +98,11 @@ def extract_absorption_spectra( spectra = [] for i in range(3): val = self.value[:, i, i].imag - absorption_spectrum = AbsorptionSpectrum(variables=frequencies) + absorption_spectrum = AbsorptionSpectrum( + axis=self._axes_map[i], variables=frequencies + ) absorption_spectrum.value = val + absorption_spectrum.physical_property_ref = self spectra.append(absorption_spectrum) return spectra diff --git a/src/nomad_simulations/properties/spectral_profile.py b/src/nomad_simulations/properties/spectral_profile.py index fbfac9eb..87583dd5 100644 --- a/src/nomad_simulations/properties/spectral_profile.py +++ b/src/nomad_simulations/properties/spectral_profile.py @@ -22,7 +22,7 @@ import pint from nomad import config -from nomad.metainfo import Quantity, SubSection, Section, Context +from nomad.metainfo import Quantity, SubSection, Section, Context, MEnum from ..utils import get_sibling_section, get_variables from ..physical_property import PhysicalProperty @@ -525,6 +525,14 @@ class AbsorptionSpectrum(SpectralProfile): # ! implement `iri` and `rank` as part of `m_def = Section()` + axis = Quantity( + type=MEnum('xx', 'yy', 'zz'), + description=""" + Axis of the absorption spectrum. This is related with the polarization direction, and can be seen as the + principal term in the tensor `Permittivity.value` (see permittivity.py module). + """, + ) + def __init__( self, m_def: Section = None, m_context: Context = None, **kwargs ) -> None: diff --git a/tests/test_permittivity.py b/tests/test_permittivity.py index a60cd554..7bead913 100644 --- a/tests/test_permittivity.py +++ b/tests/test_permittivity.py @@ -121,8 +121,10 @@ def test_extract_absorption_spectra( absorption_spectra = permittivity.extract_absorption_spectra(logger) if absorption_spectra is not None: assert len(absorption_spectra) == 3 - assert absorption_spectra[0].rank == [] - assert len(absorption_spectra[0].value) == len(variables[0].points) - assert np.allclose(absorption_spectra[0].value, result) + spectrum = absorption_spectra[1] + assert spectrum.rank == [] + assert spectrum.axis == 'yy' + assert len(spectrum.value) == len(variables[0].points) + assert np.allclose(spectrum.value, result) else: assert absorption_spectra == result