parq-blockmodel
Overview
A Python package for efficient storage, manipulation, and analysis of mining block models using Parquet files. parq-blockmodel provides tools for reading, writing, indexing, and transforming large-scale block model datasets, leveraging the performance of Apache Arrow and Parquet for scalable geoscience data workflows.
Typical 3-step workflow
parq-blockmodel is designed around a practical 3-step process:
- Validate block model attributes against a Pandera schema.
- Review (profile) data quality and distributions with an HTML profile report.
- View the model interactively with local PyVista plotting or the Trame server viewer.
Installation
Install the base package from PyPI:
pip install parq-blockmodel
Full 3-Step Workflow
For the complete experience (validate, profile, local visualization, and GIS/server options), install with all workflow extras:
pip install "parq-blockmodel[all]"
Installation by Workflow Step
Step 1: Validate — Pandera schema support for data validation:
pip install "parq-blockmodel[schema]"
Step 2: Review — HTML profiling reports for data quality inspection:
pip install "parq-blockmodel[profiling]"
Step 3: View — Local plotting with PyVista and Plotly:
pip install "parq-blockmodel[viz]"
**Optional: Spatial / GIS** — GeoDataFrame, GeoParquet, and polygon workflows:
```bash
pip install "parq-blockmodel[spatial]"
Optional: Server viewer — Trame web app support:
pip install "parq-blockmodel[server-viz]"
See the [Quick Start Guide](https://parq-blockmodel.readthedocs.io/en/stable/usage/quickstart.html) for a walkthrough of the 3-step workflow.
## Schema validation
`ParquetBlockModel` accepts an optional `schema=` argument on its main
constructors. You can pass either a Pandera `DataFrameSchema` object or a path
to a YAML schema file, then validate the resulting model in chunks:
```python
from pathlib import Path
from parq_blockmodel import ParquetBlockModel
pbm = ParquetBlockModel.from_parquet(
Path("path/to/blockmodel.parquet"),
schema=Path("schemas/blockmodel.schema.yaml"),
)
pbm.validate()
pbm.validate(sample_chunks=1) # quick spot-check for large models
See the User Guide for detailed documentation on calculated attributes, including custom lookups and functions.
Profiling report review
Install profiling support and create an HTML profile report:
pip install "parq-blockmodel[profiling]"
report = pbm.create_report(columns_per_batch=None)
print(report.output_path)
When a schema includes column title / description, those values are included
in report variable descriptions. See the
Profiling Reports guide
and the examples gallery for a full walkthrough.
Visualization
The block-model plotting path now delegates through parq_blockmodel.visualization, which keeps the
rendering logic isolated from ParquetBlockModel itself.
Install parq-blockmodel[viz] for local PyVista/Plotly plotting, and add
parq-blockmodel[server-viz] for Trame examples.
from parq_blockmodel import ParquetBlockModel
from parq_blockmodel.visualization import BlockModelTrameApp, TrameBlockModelPlotEngine
pbm = ParquetBlockModel.from_parquet("orebody.parquet")
plotter = pbm.plot(scalar="grade", z_up_lock=True, z_up_hotkey="z")
# Optional terrain context for the PyVista engine:
# - elevation_raster adds a DEM surface
# - imagery_raster textures the DEM when both rasters align
plotter = pbm.plot(
scalar="grade",
elevation_raster="dem.tif",
imagery_raster="imagery.tif",
)
trame_app_from_plot = pbm.plot(
scalar="grade",
engine=TrameBlockModelPlotEngine(),
z_up_lock=True,
z_up_hotkey="z",
)
app = BlockModelTrameApp(pbm, scalar="grade", z_up_lock=True, z_up_hotkey="z")
With z_up_lock=True, hold z for turntable-style orbit (yaw/pitch, no roll) with camera up aligned to +Z.
Geometry operations
parq-blockmodel supports three geometry flagging workflows:
- Polygon flagging for 2D XY regions.
- Surface encoding for 2.5D elevation surfaces (
z = f(x, y)). - Solid flagging for closed 3D volumes.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file parq_blockmodel-0.14.0.tar.gz.
File metadata
- Download URL: parq_blockmodel-0.14.0.tar.gz
- Upload date:
- Size: 409.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c78d232990e0718be845d425329a6c916675b56d86cca693688369db01813f8
|
|
| MD5 |
9d5f3dae0f54a02d7e150390aa68f940
|
|
| BLAKE2b-256 |
0042b28073879dd49d62e926e6a849554a096b269c3256c5fa52b1f6d87bfd95
|
File details
Details for the file parq_blockmodel-0.14.0-py3-none-any.whl.
File metadata
- Download URL: parq_blockmodel-0.14.0-py3-none-any.whl
- Upload date:
- Size: 153.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2e4df31696d7ebe8bf167ebd03c1e0aa0bb20d2cbe60d4db9500d5a5bbf3f4a
|
|
| MD5 |
83c144cffeeff1bc75b9dc57e103e48e
|
|
| BLAKE2b-256 |
a5a9b8e9bec769aa4a47f7b2bdfddbc624cdc47d4bb8318c85fc1a295a4052a3
|