Skip to content

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_traces now defaults to False (was True). The default return is therefore a segment PolyData, not a MultiBlock.
  • When show_complete_traces=True, the return is a (segments, traces) tuple instead of MultiBlock([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.