Skip to main content

Tools to inspect ROOT files with uproot

Project description

uproot-browser

uproot-browser

Actions Status PyPI version PyPI platforms GitHub Discussion Gitter License Scikit-HEP Conda-Forge

uproot-browser is a plotext based command line library in which the command line interface is provided by Click. It is powered by Hist and it's TUI is put together by Textual. Its aim is to enable a user to browse and look inside a ROOT file, completely via the terminal. It takes its inspiration from the ROOT object browser.

Installation

You can install this library from PyPI with pip:

python3 -m pip install uproot-browser

You can also use pipx run or uvx to run the library without installing it; for example, this will let you try it out in one line:

uvx uproot-browser[testdata] --testdata uproot-Event.root

Features

uproot-browser currently provides the following features (get help with -h or --help, view the current version with --version):

  • browse can be used to display a TUI (text user interface), acts as default if no subcommand specified.
  • plot can be used to display a plot.
  • tree can be used to display a tree.

Examples

This example uses data from the scikit-hep-testdata package. The --testdata flag will load from there if it is installed; use the [testdata] extra if you want to play with it.

browse command:

uproot-browser browse --testdata uproot-Event.root

GIF of the TUI functionality

plot command:

uproot-browser plot --testdata uproot-Event.root:hstat
                        hstat -- Entries: 1000
    ┌───────────────────────────────────────────────────────────────┐
18.0┤▐▌                                                                 │▐▌                                                 ▗▖         ▄│
15.6┤▐▌▗▖                                               ▐▌         █│
    │███▌                                             ▐▌        ▐█│
13.1┤████▟▌    ▗▖  ▗▖   █▌▗▖ ▐▌          █▌     ▟▌█ ▗▄▐▙▗▖    ▐▌▐█│
10.6┤█████▌    ▐▌  ▐▙▖  █▌▐▌ ▐▙       █▄  █▙     █▌█ ▐█▟█▐▌  ▗▄▟▌▐█│
    │█████▌ █▌▐█▌  ████▌█▌▐█ ▐█▐▌ ▐▌  ███▐██  ▐█ ▐████▐███▐▌ ▐███▌▐█│
 8.2┤█████▌▐█▌▐█▌ █████▌██▐█ ██▐█ ▐▌▐████▐███▌▐█ █████▐███▐██▐████▐█│
    │████████▙██▌█████████▟█▖████▖▟██████▟██████▖████████████▟██████│
 5.8┤███████████▙███████████▙████▌██████████████▌███████████████████│
    │████████████████████████████▌██████████████████████████████████│
 3.3┤███████████████████████████████████████████████████████████████│
    └┬───────────────┬──────────────┬───────────────┬──────────────┬┘
     0.00          0.25           0.50            0.75          1.00
                               [x] xaxis
If you're on macOS and using iTerm2, click here:

You can get an iterm plot, the required dependencies can be installed via:

python3 -m pip install uproot-browser[iterm]

Or can be run via pipx without installing:

pipx run uproot-browser[iterm]

Adding the argument --iterm gives us the plot:

uproot-browser plot --testdata uproot-Event.root:hstat --iterm
iterm example

tree command:

uproot-browser tree --testdata uproot-Event.root
📁 uproot-Event.root
┣━━  <unnamed> TProcessID
┣━━ 🌴 T (1000)   ┗━━ 🌿 event Event
┃       ┣━━ 🌿 TObject (group of fUniqueID:uint32_t, fBits:uint32_t)          ┣━━ 🍁 fBits uint32_t
┃          ┗━━ 🍁 fUniqueID uint32_t
┃       ┣━━ 🍁 fClosestDistance unknown[]       ┣━━ 🍁 fEventName char*
┃       ┣━━ 🌿 fEvtHdr EventHeader
┃          ┣━━ 🍁 fEvtHdr.fDate int32_t
┃          ┣━━ 🍁 fEvtHdr.fEvtNum int32_t
┃          ┗━━ 🍁 fEvtHdr.fRun int32_t
┃       ┣━━ 🍁 fFlag uint32_t
┃       ┣━━ 🍁 fH TH1F
┃       ┣━━ 🍁 fHighPt TRefArray*
┃       ┣━━ 🍁 fIsValid bool
┃       ┣━━ 🍁 fLastTrack TRef
┃       ┣━━ 🍁 fMatrix[4][4] float[4][4]       ┣━━ 🍁 fMeasures[10] int32_t[10]       ┣━━ 🍁 fMuons TRefArray*
┃       ┣━━ 🍁 fNseg int32_t
┃       ┣━━ 🍁 fNtrack int32_t
┃       ┣━━ 🍁 fNvertex uint32_t
┃       ┣━━ 🍁 fTemperature float
┃       ┣━━ 🌿 fTracks TClonesArray*
┃          ┣━━ 🍃 fTracks.fBits uint32_t[]          ┣━━ 🍃 fTracks.fBx Float16_t[]          ┣━━ 🍃 fTracks.fBy Float16_t[]          ┣━━ 🍃 fTracks.fCharge Double32_t[]          ┣━━ 🍃 fTracks.fMass2 Float16_t[]          ┣━━ 🍃 fTracks.fMeanCharge float[]          ┣━━ 🍃 fTracks.fNpoint int32_t[]          ┣━━ 🍃 fTracks.fNsp uint32_t[]          ┣━━ 🍁 fTracks.fPointValue unknown[][]          ┣━━ 🍃 fTracks.fPx float[]          ┣━━ 🍃 fTracks.fPy float[]          ┣━━ 🍃 fTracks.fPz float[]          ┣━━ 🍃 fTracks.fRandom float[]          ┣━━ 🍃 fTracks.fTArray[3] float[][3]          ┣━━ 🍁 fTracks.fTriggerBits.fAllBits uint8_t[][]          ┣━━ 🍃 fTracks.fTriggerBits.fBits uint32_t[]          ┣━━ 🍃 fTracks.fTriggerBits.fNbits uint32_t[]          ┣━━ 🍃 fTracks.fTriggerBits.fNbytes uint32_t[]          ┣━━ 🍃 fTracks.fTriggerBits.fUniqueID uint32_t[]          ┣━━ 🍃 fTracks.fUniqueID uint32_t[]          ┣━━ 🍃 fTracks.fValid int16_t[]          ┣━━ 🍃 fTracks.fVertex[3] Double32_t[][3]          ┣━━ 🍃 fTracks.fXfirst Float16_t[]          ┣━━ 🍃 fTracks.fXlast Float16_t[]          ┣━━ 🍃 fTracks.fYfirst Float16_t[]          ┣━━ 🍃 fTracks.fYlast Float16_t[]          ┣━━ 🍃 fTracks.fZfirst Float16_t[]          ┗━━ 🍃 fTracks.fZlast Float16_t[]       ┣━━ 🌿 fTriggerBits TBits
┃          ┣━━ 🌿 fTriggerBits.TObject (group of fTriggerBits.fUniqueID:uint32_t, fTriggerBits.fBits:uint32_t)             ┣━━ 🍁 fTriggerBits.fBits uint32_t
┃             ┗━━ 🍁 fTriggerBits.fUniqueID uint32_t
┃          ┣━━ 🍃 fTriggerBits.fAllBits uint8_t[]          ┣━━ 🍁 fTriggerBits.fNbits uint32_t
┃          ┗━━ 🍁 fTriggerBits.fNbytes uint32_t
┃       ┣━━ 🍁 fType[20] int8_t[20]       ┗━━ 🍁 fWebHistogram TRef
┣━━ 📊 hstat TH1F (100)
┗━━ 📊 htime TH1F (10)

Development

pre-commit.ci status

See CONTRIBUTING.md for details on how to set up a development environment.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uproot_browser-0.9.0.tar.gz (90.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uproot_browser-0.9.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file uproot_browser-0.9.0.tar.gz.

File metadata

  • Download URL: uproot_browser-0.9.0.tar.gz
  • Upload date:
  • Size: 90.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for uproot_browser-0.9.0.tar.gz
Algorithm Hash digest
SHA256 39efd2371a59ea58f4276d8fc1ebed9f279195952c3222acc7ee473b0ec2ee3d
MD5 d3fe427cd1b8c4835a251b7938c9ae28
BLAKE2b-256 20047beeac9ba5a22f8f582dbdc515c1251d2f8e1a4f0c1ca50ed97b802a10d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for uproot_browser-0.9.0.tar.gz:

Publisher: cd.yml on scikit-hep/uproot-browser

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file uproot_browser-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: uproot_browser-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for uproot_browser-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c55938f1b07d1664f0890599cf16460fbb3f4d26e122bb83bede9e7a55ed438
MD5 2c01154622df799a80ce2fc6b6994c3d
BLAKE2b-256 df3054a8c9499027d59a8595265ebf21c8d907f13e3e330e37a1fe60a044939b

See more details on using hashes here.

Provenance

The following attestation bundles were made for uproot_browser-0.9.0-py3-none-any.whl:

Publisher: cd.yml on scikit-hep/uproot-browser

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page