NeXpy provides a high-level python interface to NeXus data contained within a simple GUI. It is designed to provide an intuitive interactive toolbox allowing users both to access existing NeXus files and to create new NeXus-conforming data structures without expert knowledge of the file format.
See the NeXpy documentation for more details.
Released versions of NeXpy can be installed using either
$ pip install nexpy
or
$ easy_install nexpy
If you have an Anaconda installation, use::
$ conda install -c nexpy nexpy
The source code can be downloaded from the NeXpy Git repository:
$ git clone https://github.com/nexpy/nexpy.git
To install in the standard Python location:
$ python setup.py install
To install in an alternate location:
$ python setup.py install --prefix=/path/to/installation/dir
As of v0.6.0, the Python API for reading and writing NeXus files is in a separate package, nexusformat, which is also available on PyPI and will be automatically installed as a NeXpy dependency if you use pip.
If the NeXpy GUI is not required, the package may be used in a regular Python shell. It may be installed using::
$ pip install nexusformat
or::
$ easy_install nexusformat
or::
$ conda install -c nexpy nexusformat
The package can also be installed from the source code using the setup commands described above. The source code is available either by downloading one of the Github releases or by cloning the latest development version in the NeXpy Git repository::
$ git clone https://github.com/nexpy/nexusformat.git
The current version of NeXpy uses h5py to read and write NeXus files because of its ability to handle large data files. There is therefore no dependency on the NeXus C API. This also means that the current version cannot read and write HDF4 or XML NeXus files.
If you only intend to utilize the Python API from the command-line, the only other required library is Numpy.
The GUI is built using the PyQt. The latest version supports PyQt4, PySide, or, with v0.10.0, PyQt5, and should load whichever library it finds. None are listed as a dependency but one or other must be installed. PyQt5 is included in the Anaconda default distribution while PySide is included in the Enthought Python Distribution or within Enthought's Canopy Application.
The GUI includes an IPython shell and a Matplotlib plotting pane. The IPython shell is embedded in the Qt GUI using an implementation based on the newly-released Jupyter QtConsole, which has replaced the old IPython QtConsole.
Some people have reported that NeXpy crashes on launch on some Linux systems. We believe that this may be due to both PyQt4 and PyQt5 being installed, although that doesn't cause a problem on all systems. If NeXpy crashes on launch, please try setting the environment variable QT_API to 'pyqt', for the PyQt4 library, 'pyqt5' for the PyQt5 library, or 'pyside', for the PySide library, depending on what you have installed, e.g., in BASH, type::
$ export QT_API=pyqt
Additional functionality is provided by other external Python packages. Least-squares fitting requires Matt Newville's least-squares fitting package, lmfit-py. Importers may also require libraries to read the imported files in their native format, e.g., spec2nexus for reading SPEC files.
From v0.4.3, the log window is colorized if ansi2html is installed.
From v0.9.1, a new 2D smoothing option is available in the list of
interpolations in the signal tab if astropy
is installed. It is labelled 'convolve' and provides, by default, a
2-pixel Gaussian smoothing of the data. The number of pixels can be
changed in the shell by setting plotview.smooth
.
The following packages are recommended.
- Least-squares fitting: lmfit
- TIFF/CBF file imports: fabio
- SPEC file imports: spec2nexus
- Log file colorization: ansi2html
- Gaussian smoothing: astropy
To run from the installed location, add the $prefix/bin directory to your path (only if you installed outside the python installation), and then run:
$ nexpy
Consult the NeXpy documentation for details of both the Python command-line API and how to use the NeXpy GUI. If you have any general questions concerning the use of NeXpy, please address them to the NeXus Mailing List. If you discover any bugs, please submit a Github issue, preferably with relevant tracebacks.