FAST-HEP is a toolkit for building and executing sustainable High Energy Physics (HEP) analysis workflows.

Users describe the scientific workflow they want to perform without coupling it to a particular implementation or execution environment. Flow assembles and validates this description, constructs a logical graph, and compiles it into an execution plan. Registered capabilities then provide the data processing, inspection, provenance, and visualisation capabilities used throughout compilation and execution.

flowchart LR
    Workflow["<b>workflow.yaml</b><br/>scientific workflow"]:::input
    Flow["<b>Flow</b><br/>compile + plan"]:::flow
    Runtime["<b>Execution</b><br/>registered capabilities"]:::runtime
    Artifacts["<b>Artifacts</b><br/>results + provenance"]:::artifact

    Workflow --> Flow --> Runtime --> Artifacts

classDef input fill:#f7f7f7,stroke:#5f6368,stroke-width:2px,color:#111111;
classDef flow fill:#e8f0fe,stroke:#3c6fbd,stroke-width:2px,color:#111111;
classDef source fill:#e7f5ff,stroke:#1c7ed6,stroke-width:2px,color:#111111;
classDef transform fill:#fff9db,stroke:#f08c00,stroke-width:2px,color:#111111;
classDef sink fill:#ebfbee,stroke:#2f9e44,stroke-width:2px,color:#111111;
classDef artifact fill:#eadcf8,stroke:#7950a3,stroke-width:2px,color:#111111;
classDef runtime fill:#fce8d5,stroke:#b56b22,stroke-width:2px,color:#111111;
classDef capability fill:#f7f7f7,stroke:#5f6368,stroke-width:2px,color:#111111;

The resulting intermediate representations make the workflow inspectable before it is executed. Dependencies can be checked early, implementations can be replaced without rewriting the scientific workflow, and execution can be mapped onto different computing environments.

Note

FAST-HEP is developed for HEP analysis, while several of its underlying components, including the workflow infrastructure, are designed to be domain-independent.


Toolkit overview#

FAST-HEP is built from focused packages connected through stable contracts. Flow provides the general workflow, compilation, planning, and orchestration machinery. Other packages register capabilities that can participate in compilation and execution without becoming part of Flow itself.

flowchart LR
    Workflow["<b>workflow.yaml</b><br/>workflow description"]:::input

    subgraph FlowSystem["Flow"]
        direction LR
        Compile["<b>Compilation</b><br/>normalise, analyse,<br/>validate"]:::flow
        Plan["<b>Execution plan</b><br/>resolved operations + dependencies"]:::plan
        Runtime["<b>Execution</b><br/>orchestrated runtime"]:::runtime

        Compile --> Plan --> Runtime
    end

    subgraph Capabilities["Registered capabilities"]
        direction TB
        Carpenter["<b>Carpenter</b><br/>read, transform,<br/>aggregate, write"]:::capability
        Curator["<b>Curator</b><br/>inspect, diagnose,<br/>provenance"]:::capability
        Render["<b>Render</b><br/>plots, reports,<br/>visualisation"]:::capability
        Extensions["<b>Extensions</b><br/>custom capabilities"]:::capability
    end

    Artifacts["<b>Artifacts + provenance</b>"]:::artifact

    Workflow --> Compile

    Capabilities -. "specifications" .-> Compile
    Runtime -. "implementations" .-> Capabilities

    Runtime --> Artifacts

classDef input fill:#f7f7f7,stroke:#5f6368,stroke-width:2px,color:#111111;
classDef flow fill:#e8f0fe,stroke:#3c6fbd,stroke-width:2px,color:#111111;
classDef source fill:#e7f5ff,stroke:#1c7ed6,stroke-width:2px,color:#111111;
classDef transform fill:#fff9db,stroke:#f08c00,stroke-width:2px,color:#111111;
classDef sink fill:#ebfbee,stroke:#2f9e44,stroke-width:2px,color:#111111;
classDef artifact fill:#eadcf8,stroke:#7950a3,stroke-width:2px,color:#111111;
classDef runtime fill:#fce8d5,stroke:#b56b22,stroke-width:2px,color:#111111;
classDef capability fill:#f7f7f7,stroke:#5f6368,stroke-width:2px,color:#111111;

This separation is deliberate: data readers, transforms, writers, inspectors, renderers, and execution technologies should be replaceable without requiring changes throughout the framework.

Note

A note on naming: fasthep-flow is referred to as Flow throughout this documentation. In Python, it is imported as hepflow.


Packages#

The FAST-HEP toolkit currently includes:

PackagePurpose
fasthep-flowWorkflow description, compilation, planning, orchestration, and execution
fasthep-carpenterData readers and writers, HEP transforms, selections, and aggregation
fasthep-curatorInspection, diagnostics, metadata, and provenance
fasthep-renderPlotting, reports, and visualisation
fasthep-cliUnified command-line interface
fasthep-toolbenchShared, domain-independent utilities
fasthep-workshopTutorials, examples, and training material
fasthepMeta-package for installing the FAST-HEP toolkit
fasthep-devDevelopment and integration workspace

Installation#

FAST-HEP packages are published independently and can also be installed through the fasthep meta-package.

pip install "fasthep[hep]"

For tutorials and reproducible example environments, the workshop material uses Pixi.

For development across the full toolkit, see fasthep-dev.


Tutorials and examples#

The fasthep-workshop provides runnable tutorials and example analyses.

It develops a complete analysis from basic columnar data processing through workflow construction, custom operations, rendering, and execution on larger computing resources.

For a first introduction to FAST-HEP, this is the best place to start.


Documentation#

Documentation is split according to purpose:


Contributing#

FAST-HEP is developed openly on GitHub, and contributions are welcome across code, documentation, examples, testing, and infrastructure.

See the contributing guide for the development workflow and toolkit structure.


Get started#

New to FAST-HEP?

Start with the Getting Started guide for a first walkthrough of the toolkit, from installation to running a small analysis workflow.