.. _related_projects:
Tools and Related Projects
==========================
There are a number of projects which build upon h5py, or who build upon HDF5,
which will likely be of interest to users of h5py. This page is non-exhaustive,
but if you think there should be a project added, feel free to create an issue
or pull request at https://github.com/h5py/h5py/.
`PyTables `_ is the most significant related project,
providing a higher level wrapper around HDF5 then h5py, and optimised to fully
take advantage of some of HDF5's features. h5py provides a comparison between
the two projects (see :ref:`h5py_pytable_cmp`), as does the
`PyTables project `_.
.. seealso::
`HDF Group's list of HDF5 tools
`_
.. contents::
:local:
IPython
-------
H5py ships with a custom ipython completer, which provides object introspection
and tab completion for h5py objects in an ipython session. For example, if a
file contains 3 groups, "foo", "bar", and "baz"::
In [4]: f['b
bar baz
In [4]: f['f
# Completes to:
In [4]: f['foo'
In [4]: f['foo'].
f['foo'].attrs f['foo'].items f['foo'].ref
f['foo'].copy f['foo'].iteritems f['foo'].require_dataset
f['foo'].create_dataset f['foo'].iterkeys f['foo'].require_group
f['foo'].create_group f['foo'].itervalues f['foo'].values
f['foo'].file f['foo'].keys f['foo'].visit
f['foo'].get f['foo'].name f['foo'].visititems
f['foo'].id f['foo'].parent
The easiest way to enable the custom completer is to do the following in an
IPython session::
In [1]: import h5py
In [2]: h5py.enable_ipython_completer()
The completer can be enabled for every session by adding "h5py.ipy_completer" to
the list of extensions in your ipython config file, for example
:file:`~/.config/ipython/profile_default/ipython_config.py` (if this file does
not exist, you can create it by invoking `ipython profile create`)::
c = get_config()
c.InteractiveShellApp.extensions = ['h5py.ipy_completer']
Exploring and Visualising HDF5 files
------------------------------------
h5py does not contain a tool for exploring or visualising HDF5 files, but tools
that can display the structure of h5py include:
* `HDFView `_ is a
visual tool for browsing and editing HDF5 files.
* `ViTables `_ is a GUI for browsing and editing files
in both PyTables and HDF5 formats, and is built on top of PyTables.
* `h5glance `_ shows the structure
of HDF5 files in IPython & Jupyter, as well as at the command line.
.. seealso::
The PaNOSC project's `list of HDF5 & NeXus viewers
`_
Additional Filters
------------------
Some projects providing additional HDF5 filter with integration into h5py
include:
* `hdf5plugin `_: this provides several
plugins (currently blosc, bitshuffle, lz4, FCIDECOMP and ZFP), and newer
plugins should look to supporting h5py via inclusion into hdf5plugin.
Libraries extending h5py
------------------------
These libraries offer additional general functionality on top of h5py:
* `Versioned HDF5 `_ offers a
versioned abstraction on top of h5py. It provides a wrapper around the h5py
API that allows storing different versions of groups and datasets within an
HDF5 file.
* `h5preserve `_ lets you define how
to save and load instances of a given class in HDF5 files, by writing dumper
and loader functions. These functions can also have multiple versions.
* `Hickle `_ provides an API like
:mod:`pickle` to dump & load arbitrary Python objects in HDF5 files.
* `h5pickle `_ wraps h5py to allow
pickling objects such as :class:`.File` or :class:`.Dataset`. This relies on
the file being available at the same path when unpickling.