{"id":20994931,"url":"https://github.com/tierra-colada/h5gt","last_synced_at":"2025-12-29T23:17:39.444Z","repository":{"id":39895490,"uuid":"346158445","full_name":"tierra-colada/h5gt","owner":"tierra-colada","description":"HDF5 C++17 wrapper and includes python bindings. Aimed at developers who uses HDF5 in C++ and python project","archived":false,"fork":false,"pushed_at":"2024-05-12T10:09:14.000Z","size":2731,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-20T08:49:58.326Z","etag":null,"topics":["cpp","hdf5","header-only","python"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tierra-colada.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-09T22:13:02.000Z","updated_at":"2024-05-12T10:08:56.000Z","dependencies_parsed_at":"2025-01-20T08:45:16.230Z","dependency_job_id":"3e72d4ac-5809-4305-b785-e3b6e909cc34","html_url":"https://github.com/tierra-colada/h5gt","commit_stats":{"total_commits":278,"total_committers":1,"mean_commits":278.0,"dds":0.0,"last_synced_commit":"c14d54974c10732e878b82553c810ff0dd362003"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5gt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5gt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5gt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5gt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tierra-colada","download_url":"https://codeload.github.com/tierra-colada/h5gt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243410229,"owners_count":20286387,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","hdf5","header-only","python"],"created_at":"2024-11-19T07:20:31.651Z","updated_at":"2025-12-29T23:17:39.383Z","avatar_url":"https://github.com/tierra-colada.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![h5gt](docs/logo_85x51.png?raw=true)\n \n[![][build-img]][build-status]\n[![][docs-dev-img]][docs-dev-status]\n\nC++ wrapper of [HDF5](https://www.hdfgroup.org/solutions/hdf5/) library based on [HighFive](https://github.com/BlueBrain/HighFive.git) project. It also includes python bindings **h5gtpy** that you can install with cmake.\n\n**h5gtpy** doesn't provide `pip install` as it is inteded to be used only for projects that run on both C++ and python sides. \n\n***h5gtpy** uses [pybind11](https://github.com/pybind/pybind11) to make python bindings and there may be some perfomance penalty when copying matrices from C++ `Eigen3` matrices to `numpy` (or `std::vector` to `py::list`). No perfomance testing were done.*\n\n***This project is aimed at developers who uses C++ along with python. If you only need python HDF5 API you should better refer to [h5py](https://github.com/h5py/h5py) project.\nThat is why **h5gtpy** doesn't provide `pip install`***\n\n## Documentation\nCommon documentation: [h5gt.readthedocs.io](https://h5gt.readthedocs.io/)\n\nC++ API documentation: [tierra-colada.github.io/h5gt](https://tierra-colada.github.io/h5gt/)\n\n## Building h5gt\nAs **h5gt** is header only library you don't need to buid it (but of course you can do that). See `src/examples` and `tests/unit` for usage examples.\n\n## Building h5gtpy\nTo build with python support you need:\n\n* set `H5GT_BUILD_h5gtpy` to `ON`\n* provide python to cmake (I do it with `PYTHON_EXECUTABLE=/path/to/python.exe`)\n* enable Eigen3 support `H5GT_USE_EIGEN=ON` (`Eigen3_ROOT` is enough to find eigen)\n* specify `HDF5_RUNTIME_DIRS` containing HDF5-runtime (probably it is enough to have it in `PATH` env)\n* **build HDF5 as SHARED C library**\n\ni.e. configure it with:\n\n```cmake\nmkdir build\ncd build\ncmake .. \n  -DH5GT_BUILD_h5gtpy=ON \n  -DPYTHON_EXECUTABLE=/path/to/python.exe \n  -DH5GT_USE_EIGEN=ON \n  -DEigen3_ROOT=/path/to/eigen3 \n  -DHDF5_DIR=/path/to/hdf5-config.cmake \n  -DHDF5_RUNTIME_DIRS=/path/to/hdf5-runtime   \n  -DZLIB_RUNTIME_DIRS=/path/to/zlib-runtime\n  -DH5GTPY_COPY_RUNTIME_DEPS=OFF\ncmake --build . \n```\nIf your HDF5 depends on ZLIB or MPI you may also need to add it.\n\nTo run **h5gtpy** python must know where HDF5-runtime is. You may choose whether to copy HDF5-runtime to `site-packages/h5gtpy` dir or add this dir to path env (done automatically at installation step when `H5GTPY_COPY_RUNTIME_DEPS=OFF`).\n\n## Installation h5gtpy\n\n`h5gtpy` installation is done the same way one usually installs cmake project:\n\n```cmake\ncmake --install . --prefix /some/path --config Release`\n```\n\nThen you can find **h5gtpy** in `site-packages` of your python env.\n\n**NOTE:** cmake tries to find runtime dependencies at `install` step. If there are unresolved or conflict dependencies then you need to modify `PATH` env, rerun `cmake ..` and `cmake --install . --prefix /some/path --config Release`. **You don't have to rebuild the project!**\n\n## Usage\nImporting is done via:\n```python\nfrom h5gtpy import h5gt\n```\n\nA test is also given in `site-packages/h5gtpy`.\nTo run test:\n```python\npython -m unittest discover h5gtpy.tests\n```\n\n## Integrating with VS Code\nThere is stub file `h5gtpy/h5gt.pyi`. You need to set VS Code setting `\"python.analysis.stubPath\": \"some/relative/path/to/stub-storage\"`: where `stub-storage` is supposed to contain folder `h5gtpy` with `h5gt.pyi` file.\n\nI'm some kind of a uncomfortable to distribute stub file, so to be sure that stub file is updated you can generate your own stub file:\n```shell\npip install pybind11-stubgen\npybind11-stubgen --no-setup-py h5gtpy._h5gt\n```\n\n## Integrating with PyCharm\nYou don't need to provide stub file to PyCharm as it handles this by its own.\n\n## Supported HDF5 versions\n1.10, 1.12 (recommended)\n\n## Supported platforms\nWindows 10, Linux, OSX\n\n[build-img]:https://img.shields.io/travis/com/tierra-colada/h5gt?style=plastic\n[build-status]:https://app.travis-ci.com/tierra-colada/h5gt\n\n[docs-dev-img]:https://img.shields.io/badge/docs-dev-blue.svg?style=plastic\n[docs-dev-status]:https://h5gt.readthedocs.io/en/latest/?badge=latest","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftierra-colada%2Fh5gt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftierra-colada%2Fh5gt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftierra-colada%2Fh5gt/lists"}