--- id: uproot version: "5.7.5" license: BSD-3-Clause license_treatment: permissive maintenance: active --- # uproot — ROOT I/O in pure Python and NumPy. License: permissive · Maintenance: active · Downloads: 1.2M/mo ## What it is and what it does Uproot is a pure-Python I/O library for reading and writing ROOT files, the standard data format in high-energy physics experiments. It streams data directly into NumPy arrays and other Python data structures without depending on the C++ ROOT library, making it lightweight and suitable for machine learning pipelines. The package integrates with NumPy, Awkward Array for irregular data, and optional libraries like Pandas and Dask for downstream analysis. Unlike PyROOT or root_numpy, Uproot does not require a C++ ROOT installation, reducing setup complexity. It handles both simple columnar data and complex nested structures through its Awkward Array dependency. The library supports reading from local files and remote sources (S3, XRootD, HTTP) via fsspec, and can export to Pandas DataFrames or Dask collections for distributed computing. Use it for: - Stream particle physics detector data from ROOT files into NumPy arrays for machine learning model training. - Convert ROOT histograms and TTrees to Pandas DataFrames for statistical analysis and plotting. - Read remote ROOT files from S3 or XRootD servers in a distributed Dask workflow without downloading locally. - Extract nested or jagged array structures from ROOT files using Awkward Array for complex event data. - Integrate ROOT data into Python-native analysis pipelines without installing the full C++ ROOT framework. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Uproot reads and writes ROOT files (the data format used in high-energy physics) directly in Python using NumPy, without requiring the C++ ROOT library. Yes. Uproot is production-stable (Development Status 5), actively maintained, has no known vulnerabilities, and solves a specific problem—reading ROOT files in pure Python—with low install friction. It is the standard choice for HEP researchers and ML engineers working with CERN data who want to avoid C++ ROOT dependencies. Install it if you work with ROOT files or need to integrate them into Python data pipelines. ## Install pip install uproot uv add uproot poetry add uproot ## Installing uproot Before you install: Low friction: pure Python wheel with seven runtime dependencies (awkward, cramjam, fsspec, numpy, packaging, typing-extensions, xxhash) that pip installs automatically. Active maintenance with a recent release 41 days ago. License in practice: BSD-3-Clause is permissive; you can use, modify, and distribute this package freely in both open-source and commercial projects, provided you include the license notice. Quickstart: pip install uproot import uproot file = uproot.open('data.root') tree = file['tree_name'] array = tree['branch_name'].array() Requires Python 3.10 or later. Verify before relying: - Whether remote file access (s3://, root://) requires optional dependencies to be installed separately. - Performance characteristics when handling very large ROOT files or streaming into distributed frameworks like Dask. ## Package facts - License: BSD-3-Clause (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 1.2M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags ROOT file reader python, HEP data I/O library, physics data format parser, numpy ROOT file access, CERN ROOT format python, particle physics data streaming, ROOT to numpy conversion, physics-data, hep-tools, data-io [View on SkillFed](https://skillfed.io/packages/uproot) · [View on PyPI](https://pypi.org/project/uproot/)