marts / hdf5view

Simple Qt/Python based viewer for HDF5 files
MIT License
36 stars 9 forks source link
data hdf5 management research viewer visualization

PyPI Version Supported Python Versions

hdf5view

Simple Qt/Python based viewer for HDF5 files.

Features:

Image


Image


Image



Why use hdf5view?

hdf5view is a simple Qt/Python based tool which aims to be easy to use and to allow you to get a view of your data with just a few clicks. If you need to check the structure of an HDF5 file, quickly see what data it contains or choose a dataset for futher analysis in another program, hdf5view may be for you. We don't aim to be able to create or edit HDF5 files and have only minimal possibilties for data analysis other than just viewing it. Other viewers for HDF5 files are available, including that from the HDF5 Group, which also has capabilities for creating and editing HDF5 files.


1. Installing

hdf5view is designed to be platform independent.

Qt API Bindings

One of pyqt5, pyside2, pyqt6 or pyside6 is required in order to be able to run hdf5view. Please install one of these e.g. with pip:

pip install pyqt5

or on linux (Ubuntu/Debian), you can install a system package:

sudo apt install python3-pyqt5

qtpy is used as an abstraction layer for pyqt5/pyside2/pyqt6/pyside6. If you have any of these Qt API bindings installed, qtpy will take the first available one in the order shown in the previous sentence. hdf5view works with all of the bindings. If you have more than one of the bindings installed and want to specify which one should be used for hdf5view, you can do this by setting the QT_API environment variable before running hdf5view.

For example: if you have pyqt5 and pyside2 installed and you want hdf5view to use PySide2, on Windows PowerShell:

$env:QT_API = 'pyside2'

or on linux (Ubuntu/Debian)

export QT_API=pyside2

before running HDF5View


Other Dependencies

The other dependencies are qtpy, h5py, psutil and pyqtgraph. Currently installed versions of these dependencies will not be overwritten by installing hdf5view. If these are not already present on your system, they will be installed during the installation of hdf5view.

If you prefer to install them in advance, you can use pip:

pip install h5py, qtpy, psutil, pyqtgraph

or on linux to install system packages:

sudo apt install python3-h5py python3-pyqtgraph python3-psutil python3-qtpy

Note: pyqtgraph 0.12 supports all of pyqt5, pyside2, pyqt6 or pyside6. Older versions of pyqtgraph may not support all of them.


hdf5view

To install the current release from PyPI system-wide on Windows:

pip install hdf5view

or on linux:

sudo pip3 install hdf5view

To install the current development version, download or clone the repo and install either system-wide on Windows:

cd hdf5view
pip install .

or on linux:

cd hdf5view
sudo pip3 install .

You could also use the flag -e with the pip command to install in editable mode, then you can pull changes from the repo and they are automatically available on your system.

To setup an isolated development environment using virtualenv:

python3 -m virtualenv -p python3 .
source bin/activate
pip install -e .

To uninstall hdf5view:

pip uninstall hdf5view

or:

sudo pip3 uninstall hdf5view


2. Running

Context menu

A particularly useful way to use hdf5view is to add an entry to the context menu. This way, you can right click on an HDF5 file and select "Open with hdf5view" from the menu.

On Windows, to get "Open with hdf5view" on the right click context menu, we need to modify the registy. Run the registry editor (regedit) as an administrator, then add this command:

C:\Program Files\PythonXXX\Scripts\hdf5view.exe -f "%1"

to a new key "Open with hdf5view" in the registry under HKEY_CLASSES_ROOT\*\shell. Replace XXX with the number of your Python version e.g. 38 for Python38.

Note: enclosing %1 in quotes (as above) "%1" ensures that filenames including spaces are passed correctly to hdf5view.

If you want to add the icon to the context menu as well, right click on the "Open with hdf5view" key and select new String Value. Call it "Icon" and then set the value to the path to the hdf5view icon e.g. C:\Program Files\PythonXXX\Lib\site-packages\hdf5view\resources\images\hdf5view.ico


Command line

In the terminal call:

hdf5view

to start the program, or

hdf5view -f <hdf5file>

to start the program and open the HDF5 file specified. HDF5 files can also be dropped onto the application window once opened.


Desktop icon

You can also create a desktop link to start the program for convenience. A Windows icon file hdf5view.ico is provided in the folder hdf5view/resources/images.


3. Usage

Basic

The structure of the HDF5 file can be navigated using the tree view on the left hand side. The central panel displays a table of the data at the node selected. If the node has more than two dimensions, a 2D slice of the data is displayed in the table (a 3D slice is shown if the shape of the last dimension is 3 or 4: in this case we assume the data are rgb(a) images). On the right hand side you can see and modify the slice shown; and see details of the node and any associated attributes.

Images

The default image rendering is as follows:

Plots

Plotting a single column of data against the index

The defaults for various node shapes are as follows:


Changing the plot

Plotting two columns of data against each other

The Slice table can be used to select two columns to be plotted against each other instead of plotting a single column of data against the index. The axis labels in the plot are updated accordingly. As an example, to plot all the rows of the first two columns of data in a 2D node against each other, set the slice to :, :2.


4. Testing

Currently there are no unit tests for this package. The gui has been tested with qtpy=2.2.0, pyqtgraph=0.12.4 and h5py=3.7.0 in combination with pyqt5=5.15.7, pyside2=5.15.2.1, pyqt6=6.3.1 and pyside6=6.3.2, and it works with all of the Qt API bindings.


5. Issues

If there are any issues, please feel free to use the issues mechanism on github to get in touch.


TODO: