Skip to content

Construct NeXus templates and files with instrument geometry information using a GUI

License

Notifications You must be signed in to change notification settings

ess-dmsc/nexus-constructor

Repository files navigation

License (2-Clause BSD) codecov Build Status Code style: black

NeXus Constructor

The NeXus Constructor facilitates constructing NeXus files in which to record data from experiments at neutron science facilities. This includes all supporting metadata typically required to perform analysis of such experiments, including instrument geometry information.

The application can directly output a NeXus file, or create a NeXus structure, JSON template of the file to send to the File Writer. The JSON template can include data stream details, such that the File Writer populates the NeXus file it creates with data acquired from the detector and other beamline apparatus during an experiment.

There is a "Getting Started" guide to help new users.

NeXus Constructor

Although the application may be useful to other institutions using NeXus, the NeXus Constructor is being developed as part of the software suite for the European Spallation Source (ESS). Please see this (open access) paper for more information on the ESS software.

The NeXus Constructor should work on MacOS, Linux and Windows; however, none of the current developers use Windows, so occasionally there are issues on Windows - if you find one then please let us know!

Installing dependencies

Binary packages for release versions can be downloaded on the releases page, or to run the latest development version please follow the instructions below.

Python 3.8 or greater is required. https://www.python.org/downloads/

It is HIGHLY recommended that a virtual environment is created for running the nexus-constructor.

Runtime Python dependencies are listed in requirements.txt at the root of the repository. They can be installed from a terminal by running

pip install -r requirements.txt

For MacOS Ventura, it is currently necessary to install libomp manually, e.g. via brew, MacPorts, etc.

Usage

Run the Python script nexus-constructor.py located in the root of the repository.

A guide for getting started with the nexus-constructor can be found here

Developer information

Development dependencies

Development dependencies (including all runtime dependencies) can be installed by using the following command

pip install -r requirements-dev.txt

Install the pre-commit hooks by running the following command

pre-commit install

Now when a commit is made, the hooks will be run automatically.

For more information on pre-commit see the official documentation

Developer Documentation

See the Wiki for developer documentation.

Contributing

The project

The project is managed on the ESS's JIRA system which is here.

If you do not have an ESS account but want to raise an issue then please open an issue on the repository. Someone will triage it and link it from the JIRA system.

Pull requests

Pull requests are very welcome and should be done through GitHub in the standard way.

Code

If you are submitting code then please ensure it passes the pre-commit checks (see above).