ZnH5MD provides and interface from [ASE] to [H5MD] and vice versa. Install via
pip install znh5md
. Similar to ASE ZnH5MD provides read
and write
functionality:
import znh5md
from ase.collections import s22
znh5md.write("s22.h5", list(s22))
print(list(znh5md.iread("s22.h5")))
# list[ase.Atoms]
Further, you can access any data from within the entire dataset through the
znh5md.IO
class which provides a MutableSequence
-like interface.
import znh5md
from ase.collections import s22
io = znh5md.IO("s22.h5", particles_group="s22")
io.extend(list(s22))
print(io[5:10])
# list[ase.Atoms]
ZnH5MD circumvents two current limitations of the H5MD standard.
- support
images
with varying particle counts by padding the dataset withnp.nan
. Using varying species counts might break the compatibility with other H5MD tools. - support varying
pbc
within a single particle group by introducingparticles/<group>/box/pbc/value
in addition to theparticles/<group>/box
attributes. By default, this is enabled viaIO(pbc_group=True)
. Theparticles/<group>/box
attribute will be set to the PBC conditions of the first frame. Using this feature will not typically not break ompatibility with other H5MD tools but can lead to unexpected behaviour.
dict
and list
entries assume python standard types if not otherwise specified.
Type | ZnH5MD |
---|---|
np.ndarray |
✅ |
float |
✅ |
str |
✅ |
dict |
✅ |
list |
✅ |
list[np.ndarray] |
✅ |
dict[str, np.ndarray] |
❌ |
list[dict] |
❌ |
Type | ZnH5MD |
---|---|
np.ndarray |
✅ |
float |
✅ |
str |
✅ |
dict |
✅ |
list |
✅ |
list[np.ndarray] |
✅ |
dict[str, np.ndarray] |
❌ |
list[dict] |
❌ |
Type | ZnH5MD |
---|---|
np.ndarray |
✅ |
float |
✅ |
str |
✅ |
dict |
✅ |
list |
✅ |
list[np.ndarray] |
✅ |
dict[str, np.ndarray] |
❌ |
list[dict] |
❌ |
This is a not necessarily complete list of Limitations that will be fixed eventually. Any contributions are welcome.
- Step: ZnH5MD assumes a fixed time interval of 1.
- Units: There is no automatic unit conversion through e.g. the pint package
- performance tweaks: there are many places in ZnH5MD that can be optimized for better performance. Currently most of the values are hard-coded, such as chunk size. Nevertheless, ZnH5MD outperforms most other packages w.r.t. read and write speed.