GEOPY-2942: Explore functionality of fast-RBF iso-surface ferreus-rmt - #57
GEOPY-2942: Explore functionality of fast-RBF iso-surface ferreus-rmt#57gmcga wants to merge 2 commits into
Conversation
for more information, see https://pre-commit.ci
There was a problem hiding this comment.
Pull request overview
Adds exploratory Ferreus RMT / RBF proof-of-concept notebooks and a sample geoH5 dataset to evaluate iso-surface extraction workflows against existing marching-cubes behavior.
Changes:
- Add a geoH5 (Git LFS) sample dataset for real geochemistry point testing.
- Add notebooks to (a) validate RMT extraction/export on synthetic fields and (b) compare marching cubes vs RMT on a shared gridded field.
- Introduce a
surface_apps.ferreuspackage marker (__init__.py) with the standard project header.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| surface_apps/ferreus/geochem_pts/geochem_pts_example.geoh5 | Adds sample geoH5 dataset via Git LFS for notebook experiments. |
| surface_apps/ferreus/ferreus_rmt_real_geochem_comparison.ipynb | Notebook comparing existing marching-cubes extraction vs RMT on real geochem data. |
| surface_apps/ferreus/ferreus_rmt_geoh5_poc.ipynb | Notebook POC for RMT extraction/export plus RBF-fitted synthetic workflow and MC vs RMT comparison. |
| surface_apps/ferreus/init.py | Adds package initializer with standard license header. |
Suppressed comments (1)
surface_apps/ferreus/ferreus_rmt_geoh5_poc.ipynb:1210
- The notebook metadata advertises a Python 2 kernel (pygments_lexer ipython2 / version 2.7.6) while kernelspec is Python 3. This inconsistency can cause Jupyter/JupyterLab to select the wrong kernel or render syntax highlighting incorrectly.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| "comparison_x, comparison_y, comparison_z = np.meshgrid(\n", | ||
| " comparison_grid[0],\n", | ||
| " comparison_grid[1],\n", | ||
| " comparison_grid[2],\n", | ||
| ")\n", |
| " source_object = input_workspace.get_entity(OBJECT_NAME)[0]\n", | ||
| " source_data = input_workspace.get_entity(DATA_NAME)[0]\n", |
| "id": "21305e00d59c4e30", | ||
| "metadata": {}, | ||
| "source": [ | ||
| "'''MAX_PREVIEW_TRIANGLES = 2_500\n", |
| "\n", | ||
| "Objectives:\n", | ||
| "\n", | ||
| "Explore if the packages allows for\n", |
There was a problem hiding this comment.
Excellent analysis - you did great. A couple of comments to address before we close this
Marching cube versus ferreus-rmt
I think you might have a transpose issue with the marching cubes results (which would explain why the accuracy is so poor)
Which could be happening during the reshape.
You might need to set the order="F".
That said, triangles are nicer with rmt, so that's a win.
RBF interpolation
At the core of extracting surfaces is how the scalar field is generated. I don't see much testing of the RBF interpolator. Scipy has one too, so it would be useful to know how they compare.
Contact and exclusion/inequality
You've alluded to the fact that the free Python doesn't support fields or inequality observations, but you might have a workaround? How much work would that involve to try?
GEOPY-2942 - Explore functionality of fast-RBF iso-surface ferreus-rmt