Due to the massive nature of HEP data, performance has always been a factor in its analysis and processing. Languages like C++ would be fast enough but are often challenging to grasp for beginners, and can be difficult to iterate quickly in an interactive environment . On the other hand, the ease of writing code and extensive library ecosystem make Python an enticing choice for data analysis. Increasing interoperability between Python and C++, as well as the introduction of libraries such as Numba, had been accelerating Python’s traction in the HEP community.
Vector is a Python library for 2D, 3D, and Lorentz vectors, especially arrays of vectors, designed to solve common physics problems in a NumPy-like way. Vector currently supports pure Python Object, NumPy, Awkward, and Numba-based (Numba-Object, Numba-Awkward) backends.
We are introducing the library, with a focus on the Numba-based Awkward Lorentz vectors to perform operations on HEP data without compromising on the speed and the ease of writing code. Awkward is one of the core libraries of the Scikit-HEP ecosystem that allows data analysis with jagged arrays. Numba, on the other hand, allows Python codebases to harness the power of Just-In-Time compilation, enabling the Python code to be compiled before executing.
The library seamlessly integrates with the existing Scikit-HEP libraries, especially with Awkward. Our talk will start with an introduction to this library, with the main agenda of compiling Awkward Lorentz vectors with Numba. Furthermore, Vector is still under active development and preparing for a 1.0 release; hence, we will also take in user feedback while discussing the overall development roadmap.
All the links are available here - https://iris-hep.org/projects/vector.html
The Vector library is relatively new and has not been independently presented at any HEP-focused conference. Additionally, its interoperability with the Scikit-HEP ecosystem makes it a crucial part of most HEP analyses. Furthermore, the seamless Numba and Awkward support allows it to integrate with any existing HEP pipeline, making the pipeline faster, simpler, and more effective.
- If something is not working the way it should, or if you want to request a new feature, create a new issue on GitHub.
- To discuss something related to vector, use the discussions tab on GitHub or vector’s gitter (Scikit-HEP/vector) chat room.
- Have a look at vector's releases to stay up-to-date!
If you use vector in your work, please cite it using the following metadata -
@article{Chopra_Vector_JIT-compilable_mathematical_2025,
author = {Chopra, Saransh and Schreiner, Henry and Rodrigues, Eduardo and Eschle, Jonas and Pivarski, Jim},
doi = {10.21105/joss.07791},
journal = {Journal of Open Source Software},
month = may,
number = {109},
pages = {7791},
title = {{Vector: JIT-compilable mathematical manipulations of ragged Lorentz vectors}},
url = {https://joss.theoj.org/papers/10.21105/joss.07791},
volume = {10},
year = {2025}
}