iskra ✨ Modern Geometry Processing
Lightweight geometry processing library that is a one-stop shop for all your geometric needs. Iskra is:
- modern and Python-first,
- simple by default, powerful when needed,
- fully differentiable and compatible with machine learning,
- CPU and GPU enabled,
- actievely maintained.
Support the project by starring it:
Example
Computing vertex normals in iskra is as simple as:
import torch
from iskra.geometry import triangle_normals
from iskra.mesh import Mesh
from iskra.topology import face_index, reduce_on_subface
mesh, _ = Mesh.from_path(
"oded://objects/koala/koala_low_resolution.obj",
device="cpu"
)
verts = mesh.vertices # [V, 3]
faces = mesh.faces # [F, 3]
tris = face_index(verts, faces) # [F, 3, 3]
tri_normals = triangle_normals(tris) # [F, 3]
vert_normals = reduce_on_subface(tri_normals, faces, verts.shape[0], "sum") # [V, 3]
vert_normals = torch.nn.functional.normalize(vert_normals, dim=-1) # [V, 3]
Obtaining iskra ✨
You will need PyTorch installed for iskra ✨ to work: see PyTorch installation instructions here.
pip install torch --index-url ... # your preferred PyTorch distribution
The code has been tested with torch==2.12, but will likely work with other versions too.
Finally, install iskra ✨ to your active environment using:
pip install -e git+https://github.com/anadodik/iskra/
Development
Lastly, if you plan on contributing, you will need the development dependencies and to compile the C++ extensions in editable mode. This can be done by running the following:
conda env create -f environment.yaml
conda env update -f environment-dev.yaml
conda activate iskra
pip install --no-build-isolation -Ceditable.rebuild=true -ve .
FAQ
- Why the name? Iskra means “spark” in Serbo-Croatian: a spark enables using (a) torch. We also expect our system to be the spark that ignites exciting research in geometry. Most importantly, it sounds cool.
- How much of
iskra✨ is LLM generated? Iskra started back in 2022 at the start of my PhD because I enjoy writing and learning geometry algorithms. It is therefore almost entirely good old fashioned free range human generated slop, except for a select few parts. These are clearly marked in the codebase. [As a side-note, doing it this way had some benefits beyond being fun: being deeply bonded with geometry code in PyTorch lead me to come up with the tensor-based scatter-gather abstraction and I do not think I would have done so had I computer-slopped it together!]
Metadata
Release files for iskra-graphics 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iskra_graphics-0.0.1.tar.gz | 1.5 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| iskra_graphics-0.0.1-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| iskra_graphics-0.0.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| iskra_graphics-0.0.1-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 | Details |
| iskra_graphics-0.0.1-cp312-abi3-macosx_11_0_arm64.whl | CPython 3.12 | abi3 | macOS 11.0+ ARM64 | Details |
| iskra_graphics-0.0.1-cp312-abi3-macosx_10_15_x86_64.whl | CPython 3.12 | abi3 | macOS 10.15+ x86-64 | Details |
Total release size: 3.2 MB
Release files / iskra_graphics-0.0.1.tar.gz
| Download URL | iskra_graphics-0.0.1.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8af9f97a25dda5ae31099ef4c5878c85708ff09778bc3c2ed65dca4d34016b91
|
|
BLAKE2b-256 checksum How to use checksums |
d8b94f4ac7aa350f41485d8b6f66f9c91b89044507bb15eb5d97810753fa34b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / iskra_graphics-0.0.1-cp312-abi3-win_amd64.whl
| Download URL | iskra_graphics-0.0.1-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 510.2 kB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
bc870b6a122dc7b6beaa6feae35ee1f0ac0504a7016c94860ff20659de8e697a
|
|
BLAKE2b-256 checksum How to use checksums |
04f3e6bdd7df092d7420ba5664a410680d4238cbdade5bd8dd70aa41edc08b0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / iskra_graphics-0.0.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | iskra_graphics-0.0.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 365.1 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
190b0c733676e38d7c7923f446c84553b097bf3be619cdf448a9fc9b94bbd314
|
|
BLAKE2b-256 checksum How to use checksums |
9b9f5729973e096f76d633b1525e12ddd73818dbe7fcef6004ee7615aaa20b19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / iskra_graphics-0.0.1-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | iskra_graphics-0.0.1-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 350.8 kB |
| Tags | CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
200c99ed16a6b91dbf1f50ead6768070d715972eafd82e4896e203ac42a0af8a
|
|
BLAKE2b-256 checksum How to use checksums |
4a069c28a43bf878ca829f61a7e54858f109a426255fb77ae8f6a7d90b1c8215
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / iskra_graphics-0.0.1-cp312-abi3-macosx_11_0_arm64.whl
| Download URL | iskra_graphics-0.0.1-cp312-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 275.9 kB |
| Tags | CPython 3.12 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
712b3b328ff05f68d7435074f56f245d90af5089c40559fbcd0d2394832e7d9c
|
|
BLAKE2b-256 checksum How to use checksums |
178002fc843668fc32d33ae63ca07a2d7c1b3eb4994759871ecdf5f8682451f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / iskra_graphics-0.0.1-cp312-abi3-macosx_10_15_x86_64.whl
| Download URL | iskra_graphics-0.0.1-cp312-abi3-macosx_10_15_x86_64.whl |
|---|---|
| Size | 280.5 kB |
| Tags | CPython 3.12 abi3 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
2b0c050c09d480d848c288f7203946fcd7fb4f55a7b6336e36c3d60e61a8ba8b
|
|
BLAKE2b-256 checksum How to use checksums |
51806a7e036082d95236483714f3c382eff70968d1eca95f4848db8b1d14e679
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency log