pointpca3-pylib
Purpose
Python bindings for the pointpca3-rs Rust backend. The package extracts 40 PointPCA3 predictors from a reference and a distorted colored point cloud. These predictors are intended for subsequent regression; the package does not train a model or return a perceptual quality score.
The PyPI distribution and Python import are both named pointpca3.
Related projects
The numerical implementation is maintained in pointpca3-rs. MAPPE uses the Python package for mesh quality assessment. Refer to the backend repository for algorithm implementation details.
Requirements
- Python
>=3.10,<3.13; Python 3.11 or 3.12 is recommended for use with the MAPPE workspace. - NumPy and the other runtime dependencies declared in pyproject.toml.
- For source builds: a current stable Rust toolchain, Cargo, a native linker/C compiler, Git, and Maturin.
Installation
From PyPI
In a Python 3.11 or 3.12 environment:
python -m pip install pointpca3
A compatible wheel does not require a local Rust toolchain. To build from source, use the checkout instructions below.
From source
git clone https://github.com/arthurhscarvalho/pointpca3-pylib.git
cd pointpca3-pylib
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "maturin>=1.0,<2.0"
python -m maturin develop --release
Cargo fetches pointpca3-rs from its public Git tag v1.0.0, as declared in Cargo.toml, and the transitive pointpca2-rs dependency from Git tag v1.5.1. No sibling backend checkout is required. The activation command above is for a POSIX shell. Re-run python -m maturin develop --release after changing the binding or updating its backend dependency.
Usage
import numpy as np
from pointpca3 import compute_pointpca3
# Replace these files with your own coordinate and RGB arrays.
points_reference = np.load("reference_points.npy")
colors_reference = np.load("reference_colors.npy")
points_test = np.load("distorted_points.npy")
colors_test = np.load("distorted_colors.npy")
predictors = compute_pointpca3(
points_reference,
colors_reference,
points_test,
colors_test,
search_size=81,
max_workers=0,
verbose=False,
)
print(predictors.shape) # (40,)
| Argument | Description |
|---|---|
points_reference, points_test |
XYZ coordinate arrays of shape (N, 3) and (M, 3), converted to float64. |
colors_reference, colors_test |
Matching RGB arrays, with the same shape as their cloud's coordinates. Supply integer values in [0, 255] or floating-point values in [0, 1]; the backend receives uint8. |
search_size |
Neighborhood size; defaults to 81. Use a positive value no larger than the distinct point count of either cloud after duplicate merging. |
max_workers |
Rayon thread-pool size; 0 uses the default based on logical CPUs. |
verbose |
Enables processing messages; defaults to False. |
The clouds may contain different numbers of points, but both require colors. The result is a one-dimensional float64 NumPy array of shape (40,). Normalized floating-point color arrays are scaled in place by the Python wrapper; pass copies if you need to preserve them.
Publications
The first publication describes PointPCA3. The second describes the PointPCA2-RS implementation on which it builds.
- Arthur Henrique Silva Carvalho and Pedro Garcia Freitas. “PointPCA3: Scalable Point Cloud Quality Assessment via Voxelization-based Spatial Sampling.” 2026 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB), 2026. Accepted and presented; IEEE Xplore publication pending. Conference proceedings series.
- Arthur Henrique Silva Carvalho and Pedro Garcia Freitas. “PointPCA2-RS: PointPCA2 with Resource Saving.” XLIII Brazilian Symposium on Telecommunications and Signal Processing (SBrT), Natal, Brazil, 2025. Paper.
@inproceedings{carvalho2026pointpca3,
author = {Carvalho, Arthur Henrique Silva and Freitas, Pedro Garcia},
title = {{PointPCA3}: Scalable Point Cloud Quality Assessment via Voxelization-based Spatial Sampling},
booktitle = {2026 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB)},
year = {2026},
note = {Accepted and presented; IEEE Xplore publication pending}
}
@inproceedings{carvalho2025pointpca2rs,
author = {Carvalho, Arthur Henrique Silva and Freitas, Pedro Garcia},
title = {{PointPCA2-RS}: {PointPCA2} with Resource Saving},
booktitle = {XLIII Brazilian Symposium on Telecommunications and Signal Processing (SBrT)},
address = {Natal, Brazil},
year = {2025},
url = {https://biblioteca.sbrt.org.br/articlefile/4834.pdf}
}
License
Metadata
Release files for pointpca3 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pointpca3-1.0.0-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| pointpca3-1.0.0-cp312-cp312-manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64 | Details |
| pointpca3-1.0.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| pointpca3-1.0.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| pointpca3-1.0.0-cp311-cp311-manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64 | Details |
| pointpca3-1.0.0-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| pointpca3-1.0.0-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| pointpca3-1.0.0-cp310-cp310-manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64 | Details |
| pointpca3-1.0.0-cp310-cp310-macosx_11_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ ARM64 | Details |
Total release size: 3.7 MB
Release files / pointpca3-1.0.0-cp312-cp312-win_amd64.whl
| Download URL | pointpca3-1.0.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 316.4 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
182749be6b10f687f71bbafb84eb0acb29341ed743d5c9a5a1437860a796b98d
|
|
BLAKE2b-256 checksum How to use checksums |
a9c7b57770fa7a1b97ab6cec135443b10971640f18d7eedde609b542d071bb61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | pointpca3-1.0.0-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 492.7 kB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
128667938fd4516dc4a64ba6394e95aa6caede96072ee856fdb2d54408996c9e
|
|
BLAKE2b-256 checksum How to use checksums |
00daae5e3658d3042e498f8d7ce1cb5d49ae4c8d24e46879a8299dddce60ffbf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pointpca3-1.0.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 406.2 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3fe038b25d0fd35e799eb166d5dfb8ff1ee78e5c68ff2e513af04327908b0a63
|
|
BLAKE2b-256 checksum How to use checksums |
84c871ac4225d75e7d596ce7db79f175f5b9e11d7501951ff168f083de0d2a17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp311-cp311-win_amd64.whl
| Download URL | pointpca3-1.0.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 316.3 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1a99e35f5e8edeae864a6fa5ebebaad121d418ded7fc1e77d7a839de9c2e4c66
|
|
BLAKE2b-256 checksum How to use checksums |
d5d9cfe56b590c1320b37fe4bcee478c9ce07571605d5e53a879c1e1a07447d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | pointpca3-1.0.0-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 493.4 kB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f450c236417e37621ed016663d1d7c85b04d7fdc75185cdf5b372dfb4f4e2d3a
|
|
BLAKE2b-256 checksum How to use checksums |
9fe0154aa2b75faeb668d10738559b9cdc1805e8b9539434ca56f190a05dccf6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pointpca3-1.0.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 409.1 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6146e4c90e5569cd77e3f65749f0dbdd9d9631992a9a2c4fd8ec7fa234cc110e
|
|
BLAKE2b-256 checksum How to use checksums |
e198e2fe4e7ffba96858406bbc107dc2e7c978ba1f0c88edaadd37e643c9f3bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp310-cp310-win_amd64.whl
| Download URL | pointpca3-1.0.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 316.6 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3d44b0860fa0c1d43ab2c3737e7d83f05448fb44e10c1749b44e7adbac315ee1
|
|
BLAKE2b-256 checksum How to use checksums |
539bb381a65ed017b530c489fbfcebf4551d8d87578a0d95793da7ca7c890eed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | pointpca3-1.0.0-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 493.5 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3a05246cd3b1a0ef87464695bea5d8b7a6618089746ccf3a906fdfa15c78d219
|
|
BLAKE2b-256 checksum How to use checksums |
59c30def59c19935dd6ab2c0c480ee0d93ca3d64961caf71f4b8fb3b3b6ddcd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / pointpca3-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pointpca3-1.0.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 407.8 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5a202185b9a3948953f9bec926e7093c2f0ace158df23c7164c90db0b5b78ce0
|
|
BLAKE2b-256 checksum How to use checksums |
5316706478576fc34facf0752621816fbeb4c7eccfbe3efde1fb2fca2dcfa989
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Security for pointpca3 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.