Skip to main content

awkward-monetizer

Hybrid analysis of nested (ragged) HEP data: flatten ROOT events into MonetDB tables, push selections down to SQL, then rebuild the nesting in Awkward Array for the physics. An LLM agent can drive the same pipeline through MCP.

Pipeline: ROOT file → uproot → Awkward → flatten → MonetDB → SQL slice and unflatten → Awkward (NF2) → physics; an LLM agent over MCP drives the SQL and Awkward steps

Install

python -m pip install awkward-monetizer             # core
python -m pip install "awkward-monetizer[agent]"    # + LLM agent and MCP server

Python 3.10+. The MonetDB server is installed separately (brew install monetdb on macOS). For development (pip or pixi), see docs/usage.md.

Quickstart

awkward-monetizer make-nano          # synthetic NanoAOD file
awkward-monetizer adl                # IRIS-HEP ADL Q1–Q8 on it, no database needed

With a MonetDB server running, load real CMS Open Data:

monetdb create hep && monetdb release hep
awkward-monetizer ingest <NanoAOD file>.root --dataset nanoaod --database hep \
    --create-schema --step-size 50000 --entry-stop 100000

Agentic analysis

An LLM agent gets six tools: schema discovery, read-only SQL, Awkward code on events selected in SQL, submit, plot, and (over MCP) a check against the ADL reference. To use it from Claude Code:

claude mcp add -s user awkward-monetizer -- awkward-monetizer agent mcp --database hep

It speaks MCP over stdio (started by the client, as above) or HTTP (awkward-monetizer agent mcp --database hep --transport http, local-only by default).

On 100,000 CMS Open Data events (DoubleMuon Run2016H, record 30555), Claude answered all eight ADL questions correctly on the first attempt, doing cuts in SQL and combinatorics in Awkward. On the full record, 48.9 million events streamed from EOS in 22 minutes, all eight reproduce the reference exactly on a laptop, the SQL ones in under 3 s each. See docs/agent.md.

Documentation

  • docs/usage.md: development setup, datasets, ingestion, sharding, benchmarks, notebooks, tests
  • docs/agent.md: the agent, its tools, evaluation and demo
  • CONTRIBUTING.md: how to contribute and how releases are made

Status

A finished prototype in maintenance mode: bug fixes and releases continue, no new features are planned. Arrow transport, electrons and b-tag are open for anyone who wants to take them on.

Metadata

Release files for awkward-monetizer 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for awkward-monetizer 0.3.0
File Size Uploaded Provenance Actions
awkward_monetizer-0.3.0.tar.gz 123.2 kB With provenance Details for awkward_monetizer-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for awkward-monetizer 0.3.0
File Interpreter ABI Platform Actions
awkward_monetizer-0.3.0-py3-none-any.whl Python 3 none any Details for awkward_monetizer-0.3.0-py3-none-any.whl

Total release size: 219.0 kB

Release files / awkward_monetizer-0.3.0.tar.gz

Download URL awkward_monetizer-0.3.0.tar.gz
Size 123.2 kB
Tags Source
SHA-256 checksum
How to use checksums
228ee59a2c8a5a954f6aafac9b36e709213a4705d143df1154fb98ac1863b397
BLAKE2b-256 checksum
How to use checksums
d1271dc45e1328735efb797056cb0a3b7fcf47ba488c8ac5160cdde418a33d37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 29, 2026.

Transparency log

Release files / awkward_monetizer-0.3.0-py3-none-any.whl

Download URL awkward_monetizer-0.3.0-py3-none-any.whl
Size 95.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1891c82d641234fdac7f4c4ce3bef8fa19885099fb03757c5d4b4ab06a86e890
BLAKE2b-256 checksum
How to use checksums
061837aba37d0279012f3193343621bdb702f9fe1576f8636d377e8babd8a41f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 29, 2026.

Transparency log

Security for awkward-monetizer 0.3.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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for awkward_monetizer-0.3.0.tar.gz

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 Oct 29, 2026.

Transparency log

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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