Data models#

Data from different data formats are represented in memory as a Pydantic models. You can convert between different models and save/load models from file.

NeXus models#

Build an NXxas model instance in steps:

from pynxxas.models import NxXasModel

nxxas_model = NxXasModel(
    mode={"name": "transmission"}, element={"symbol": "Fe"}, edge={"name": "K"}
)
nxxas_model.energy = [7, 7.1], "keV"
nxxas_model.intensity = [10, 20]

Create an NXxas model instance from a dictionary and convert back to a dictionary:

data_in = {
    "@NX_class": "NXsubentry",
    "mode": {"name": "transmission"},
    "element": {"symbol": "Fe"},
    "edge": {"name": "K"},
    "energy": [[7, 7.1], "keV"],
    "intensity": [10, 20],
}

nxxas_model = NxXasModel(**data_in)
data_out = nxxas_model.model_dump()