Skip to main content

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.

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.

  1. 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.
  2. 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

MIT 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)

Table of built distributions (wheels) for pointpca3 1.0.0
File
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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

9 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page