{"id":20994932,"url":"https://github.com/tierra-colada/h5geo","last_synced_at":"2026-04-21T22:32:31.006Z","repository":{"id":37586923,"uuid":"348329368","full_name":"tierra-colada/h5geo","owner":"tierra-colada","description":"C++17 and python API to work with geo-data (seismic, wells, maps, other in process)  based on HDF5. Aimed at geoscientists and developers.","archived":false,"fork":false,"pushed_at":"2024-05-22T20:38:21.000Z","size":5949,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-22T20:54:48.146Z","etag":null,"topics":["cpp","geo-data","hdf5","python","seismic","surfaces","wells"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","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-16T11:55:26.000Z","updated_at":"2024-05-22T20:38:06.000Z","dependencies_parsed_at":"2022-07-30T20:08:08.363Z","dependency_job_id":"ce2a6c85-d44b-458f-8683-6f289f6886e9","html_url":"https://github.com/tierra-colada/h5geo","commit_stats":{"total_commits":484,"total_committers":1,"mean_commits":484.0,"dds":0.0,"last_synced_commit":"03355449972c0f2bfd01b6090790f3202eab7bae"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5geo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5geo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5geo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tierra-colada%2Fh5geo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tierra-colada","download_url":"https://codeload.github.com/tierra-colada/h5geo/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","geo-data","hdf5","python","seismic","surfaces","wells"],"created_at":"2024-11-19T07:20:31.728Z","updated_at":"2025-12-29T22:35:00.843Z","avatar_url":"https://github.com/tierra-colada.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![h5geo](docs/logo_126x51.png?raw=true)\n \n[![][build-img]][build-status]\n[![][docs-dev-img]][docs-dev-status]\n\nC++ and python API to work with geo-data based on [HDF5](https://www.hdfgroup.org/solutions/hdf5/) containers through [h5gt](https://travis-ci.com/tierra-colada/h5geo) header only library. \n\nFor now **h5geo** provides API to work with:\n* seismic data\n* wells (deviations, logs, welltops)\n* maps\n* points\n* horizons\n\n**h5geo** also includes **h5geopy** project wich is a python wrapper. \n\n***h5geopy** 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`). I have not done any perfomance testing.*\n\n***This project is aimed at geoscientists and developers***\n\n## Documentation\nCommon documentation: [h5geo.readthedocs.io](https://h5geo.readthedocs.io/)\n\nC++ API documentation: [tierra-colada.github.io/h5geo](https://tierra-colada.github.io/h5geo/)\n\n## Building h5geo with h5geopy support\n**h5geo** depends on:\n* [HDF5](https://github.com/HDFGroup/hdf5)\n* [h5gt](https://github.com/tierra-colada/h5gt) (header only)\n* [Eigen3](https://gitlab.com/libeigen/eigen) (header only)\n* [magic-enum](https://github.com/Neargye/magic_enum) (header only)\n* [units](https://github.com/LLNL/units)\n* [mio](https://github.com/mandreyel/mio) (header only)\n* optionally: [TBB](https://github.com/oneapi-src/oneTBB)\n* optionally: [GDAL](https://github.com/OSGeo/gdal)\n* optionally: [h5gtpy](https://github.com/tierra-colada/h5gt) (needed only when building with python support `-DH5GEO_BUILD_h5geopy=ON`)\n\nYou can use superbuild or build every dependency by yourself. Then do:\n```cmake\nmkdir build\ncd build\ncmake ..\n  -DCMAKE_BUILD_TYPE=Release\n  -DEigen3_ROOT:PATH=/path/to/eigen \n  -Dmagic_enum_ROOT:PATH=/path/to/magic_enum \n  -Dmio_ROOT:PATH=/path/to/mio\n  -Dh5gt_ROOT:PATH=/path/to/h5gt \n  -DH5GEO_SUPERBUILD:BOOL=OFF\n  -DH5GEO_USE_THREADS:BOOL=ON\n  -DTBB_ROOT:PATH=/path/to/tbb\n  -DH5GEO_BUILD_SHARED_LIBS:BOOL=ON\n  -DH5GEO_BUILD_h5geopy:BOOL=ON\n  -DHDF5_RUNTIME_DIR:PATH=/path/to/dir/containing/hdf5-runtime\n  -DH5GEOPY_COPY_RUNTIME_DEPS:BOOL=ON\n  -DPYTHON_EXECUTABLE=/path/to/python.exe \n  -DH5GEO_BUILD_TESTS:BOOL=OFF\n  -DCMAKE_INSTALL_PREFIX:PATH=/install/prefix\n  -G \"some generator\"\ncmake --build . \n```\n**NOTE:** instead of `\u003cprefix\u003e_ROOT` path (root directory of every package) you can pass `\u003cprefix\u003e_DIR` path containing some `\u003cprefix\u003e-config.cmake` file of every package.\n\n**NOTE:** to run **h5geopy** python must know where HDF5-runtime, units-runtime, tbb-runtime and h5geo-runtime are located. You may choose whether to copy them to `site-packages/h5geopy` dir or add their dirs to `PATH` env. By default cmake try to search h5geo-runtime in `h5geo-install/lib` folder. Also **h5geopy** depends on **h5gtpy**. So you would need to have installed **h5gtpy**.\n\n## Installation h5geo with h5geopy\n\n`h5geo` installation is done the same way one usually installs cmake project:\n```cmake\ncmake --install . --prefix /some/path --config Release\n```\n\nThen you can find **h5geopy** 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## Build \u0026 Install using `pip`\nIt is possible to build and install the library using the following command:\n```\npip install git+https://github.com/tierra-colada/h5geo.git@v0.1.0 --verbose\n```\nThis will automatically run **CMake Superbuild** to build build **h5geo v0.1.0** and its dependencies (without GDAL support) in the `site-pakages/h5geopy` dir. \n\nOn modern PC this usually takes a couple of minutes.\n\n**NOTE:** CMake and C++ compiler are needed.\n\n## Usage\nImporting is done via:\n```python\nfrom h5gtpy import h5gt\nfrom h5geopy import h5geo\n```\n\nYou can find tests in `site-packages/h5geopy`.\nTo run them:\n```python\npython -m unittest discover h5geopy.tests\n```\n\nNote: `h5geopy` (as well as `h5geo`) uses fortran memory order (columnwise). Thus you should allocate numpy with `numpy.asfortranarray` or `order='F'` as numpy uses `C` order by default.\n\n## Integrating with VS Code\nThere is stub file `h5geopy/h5geo.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 `h5geopy` with `h5geo.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 h5geopy._h5geo\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/11, Linux, OSX\n\n[build-img]:https://img.shields.io/travis/com/tierra-colada/h5geo?style=plastic\n[build-status]:https://app.travis-ci.com/tierra-colada/h5geo\n\n[docs-dev-img]:https://img.shields.io/badge/docs-dev-blue.svg?style=plastic\n[docs-dev-status]:https://h5geo.readthedocs.io/en/latest/?badge=latest","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftierra-colada%2Fh5geo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftierra-colada%2Fh5geo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftierra-colada%2Fh5geo/lists"}