2.7.0
Bug Fixes🍋
| Issue Ref | Summary | Description |
|---|---|---|
| 383 | SyntaxWarning in variogram autofit docstring | The model_fit docstring used \_ in a non-raw string, which Python 3.12+ reports as an invalid escape sequence. The docstring is now a raw string. |
| 408 | fix copy() method on georefobject | The deepcopy function doesn't works with Geolime objects; copying is now done by copying the dataframe database. |
| 425 | scipy.interpolate regression | The lib was using a legacy function from the scipy library, which has since been replaced by a newer, maintained version. |
| 437 | Pandas PerformanceWarning on drillhole creation | Creating drillholes from collar/assay/survey tables inserted one property at a time and fragmented the dataframe. Collar and assay columns are now written in one set_properties concat. |
| [No Ref] | Carto basemap API key watermark | Replace CartoDB tiles with Esri WorldStreetMap so interactive maps and plot_2d work without an API key. |
| [No Ref] | Drillhole desurvey / compositing robustness | Rust desurveying and compositing now reject mismatched collar/survey/assay lengths instead of panicking, no longer crash on empty assays, keep extra grade series, handle inverted intervals and NaN grades, fix survey depth range and default collar dip, and clamp minimum-curvature doglegs so acos stays in [-1, 1]. |
Enhancements🍋
| Issue Ref | Summary | Description |
|---|---|---|
| 404 | ruff : test and possibly integrate (auto-formatting) | Use ruff to format/check the code and sort imports. |
| 398 | Fix deprecated type hints + drop support 3.9- | Use new type hinting definition and remove packaging for python 3.9. |
| 419 | Pandera + PyVista Deprecations | Update Pandera import and use the new method select_interior_points with pyvista. |
| 421 | Error Management : more explicit on failing to create GriddedSurface with empty array of data | GriddedSurface now returns an error if xyz is an empty sequence. |
| 397 | Add the possiblity to disable the sorting in the aggregate method | It is now possible to disable automatic sorting in order to preserve the order of the input data. |
| 422 | File Preview display enhancement | The console preview can be disabled, and the user can receive a detailed dictionary as the function output instead. |
| [No Ref] | Rust IDW | Integrate the rust backend to perform IDW algorithm. |
| [No Ref] | Rust NN | Integrate the rust backend for nearest-neighbor estimation, including the all-samples path when no neighborhood is provided. |
| [No Ref] | Rust SGS | Integrate the rust backend for Sequential Gaussian Simulation, including 2D metrics that stay in-plane. |
| [No Ref] | Rust LUC | Integrate the rust backend for Localized Uniform Conditioning / Uniform Conditioning. |
| [No Ref] | Rust MultiGaussian Kriging | Simple MultiGaussian Kriging rust path now builds the local search on the regularized block cloud rather than the raw samples. |
| [No Ref] | Rust search trees | Expose rust spatial indexes (octree, k-d tree, ball tree) on kriging, SGS, and related solvers. |
| [No Ref] | Rust desurveying | Drillhole desurveying now runs on a typed Rust pipeline (collar / survey / assay / PyDesurveying) and defaults to backend=GeostatsBackend.RUST. Minimum curvature and tangential are supported; Linear still requires the Python backend. |
| [No Ref] | Rust compositing | Numerical and categorical compositing now run on a typed Rust pipeline (interval generation, indexing, and sequential/parallel solvers) and default to backend=GeostatsBackend.RUST. |
| [No Ref] | Rust as default backend | Variogram, variogram plotting, Localised Uniform Conditioning, cell declustering, desurveying, and compositing now default to Rust. Julia remains available via backend=GeostatsBackend.JULIA. |
| [No Ref] | Lazy julime loading | julime is imported only when the Julia backend is requested. import geolime no longer requires julime, and the import-time _preload() smoke test is removed along with NO_JULIME / LAZY_GEOLIME. |
New Features🍋
| Issue Ref | Summary | Description |
|---|---|---|
| 355 | Display HOLEID on top of drillholes in 3D | plot_drillholes_3d now labels each hole with its HOLEID at the top of the complete trace (show_labels, on by default). |
| 409 | Support for Python 3.13 | Python 3.13 is now supported and Pandas upgraded to version 2. |
Breaking changes🍋
Python 3.9 is no longer supported; the minimum runtime is Python 3.10. The PyVista floor is raised to >= 0.47, and SciPy is now capped at < 1.18.
Default computational backend for Ordinary/Simple Kriging, Simple MultiGaussian Kriging, IDW, nearest neighbor, SGS, Localised Uniform Conditioning, experimental variogram (including plotting helpers), cell declustering, desurveying, and compositing is now Rust. Existing calls keep working, but results can differ unless backend=GeostatsBackend.JULIA (or PYTHON for cell declustering / variogram / Linear desurveying) is passed. Rust desurveying does not support DesurveyingMethod.LINEAR.
julime is no longer imported at package load. Install it only to use the Julia backend. The NO_JULIME and LAZY_GEOLIME environment variables are ignored by geolime.
Drillholes.to_pyvista():
show_complete_tracesnow defaults toFalse(wasTrue). The default return is therefore a segmentPolyData, not aMultiBlock.- When
show_complete_traces=True, the return is a(segments, traces)tuple instead ofMultiBlock([segments, traces]).
file_preview() now takes return_rich_dict as the second positional argument, before hide_internal. file_preview(path) still returns a Rich Tree; file_preview(path, False) now means “return a dict”, not “show internal attributes”. Prefer keyword arguments.
SGS only accepts MinMaxPointsNeighborhood or NeighborhoodAllPoints (with a metric). Octant and category neighborhood subclasses that were previously accepted via isinstance now raise TypeError.