Skip to main content

Read HDF5 data conforming to the NXmx application definition of the NeXus format

Project description

Read NXmx-flavour NeXus HDF5 data in Python

PyPI release Supported Python versions Code style: black

This package provides a neat and tidy Python interface for reading data from HDF5 files that are structured according to the NXmx application definition of the NeXus standard.

Installation

python-nxmx is available as nxmx on PyPI, so you just need Pip.

$ pip install nxmx

Getting started

If you have an HDF5 file in NXmx format, inspecting it with h5ls will look something like this:

$ h5ls -r my-nxmx-file.h5 
/                        Group
/entry                   Group
/entry/data              Group
/entry/definition        Dataset {SCALAR}
/entry/end_time          Dataset {SCALAR}
/entry/end_time_estimated Dataset {SCALAR}
/entry/instrument        Group
/entry/instrument/beam   Group
/entry/instrument/beam/incident_beam_size Dataset {2}
/entry/instrument/beam/incident_wavelength Dataset {SCALAR}
/entry/instrument/beam/total_flux Dataset {SCALAR}
/entry/instrument/detector Group

... etc. ...

With nxmx, you can access the NXmx data in Python like this:

import h5py
import nxmx

with h5py.File("my-nxmx-file.h5") as f:
    nxmx_data = nxmx.NXmx(f)

A slightly more detailed example

import h5py
import nxmx

with h5py.File("my-nxmx-file.h5") as f:
    nxmx_data = nxmx.NXmx(f)
    # Explore the NXmx data structure.
    entry, *_ = nxmx_data.entries
    print(entry.definition)  # Prints "NXmx".
    instrument, *_ = entry.instruments
    detector, *_ = instrument.detectors
    
    # Get the h5py object underlying an instance of a NX class.
    entry_group = entry._handle  # entry_group == f["entry"]

    # Find instances of a given NX class in a h5py.Group.
    beams = nxmx.find_class(instrument._handle, "NXbeam")
    # The equivalent for more than one NX class.
    beams, detectors = nxmx.find_classes(instrument._handle, "NXbeam", "NXdetector")

    # Query attributes of an object in the normal h5py way.
    # Suppose out detector has a transformation called "det_z".
    transformations, *_ = nxmx.find_class(detector._handle, "NXtransformations")
    attrs = transformations["det_z"].attrs  # Get the attributes of the "det_z" dataset.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nxmx-0.0.4.tar.gz (22.9 kB view details)

Uploaded Source

Built Distribution

nxmx-0.0.4-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file nxmx-0.0.4.tar.gz.

File metadata

  • Download URL: nxmx-0.0.4.tar.gz
  • Upload date:
  • Size: 22.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for nxmx-0.0.4.tar.gz
Algorithm Hash digest
SHA256 baf205d803412675bb613b01217985347704940a774170dfe7114fe1bb5ca7d5
MD5 8aef8aec78db6b02c71c9708cee2ffd8
BLAKE2b-256 32b76cd51f43dd453fd3084dc631ac83ae3642b3a82b644f871a45f849060f27

See more details on using hashes here.

File details

Details for the file nxmx-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: nxmx-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for nxmx-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b9860916cc25926be46ffa8a122f49ec1156ac5cc924633f37995064e208b04d
MD5 6d544f3e642e4facb147be4b78f21f78
BLAKE2b-256 3d32f1b43d771f1f6d4772f9fa1bcce7da76f73438b6511d08d1324e64d24e8f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page