FAST-HEP workflows are extensible through registries and profiles.
Registries provide implementations and capabilities. Profiles compose and activate those capabilities for workflows.
This mechanism allows FAST-HEP to remain modular while supporting:
Registries are the mechanism FAST-HEP uses to map workflow concepts to concrete implementations.
Registries can contribute or override:
This allows workflows to remain declarative while different packages provide implementations.
The FAST-HEP workflow language intentionally does not hardcode:
Instead, functionality is registered through registries.
This separation allows:
A registry typically maps operation kinds to implementations.
Example concepts include:
For example, a workflow operation:
op: hep.definemay be resolved through a registry entry contributed by fasthep_carpenter.
The workflow language itself does not need to know where the implementation originates.
For more detail on operations and specifications, see:
Multiple registries may be active simultaneously.
Registries can:
This layering mechanism allows analyses and experiments to customise behavior without modifying FAST-HEP core packages directly.
For example:
The resulting workflow environment is assembled during workflow compilation.
Profiles are composable bundles of workflow configuration.
A profile typically activates one or more registries together with workflow defaults and runtime configuration.
Profiles allow analyses to construct custom workflow environments without modifying FAST-HEP core packages.
Profiles are activated in author.yaml:
use:
profiles:
- registry
- fasthep_carpenter:registry
- fasthep_curator:registry
- fasthep_render:registryEach entry references a profile resource.
The general form is:
package_name:profile_nameFor example:
- fasthep_render:registryloads:
profiles/registry.yamlfrom the installed fasthep_render package.
The core workflow package provides built-in profiles such as:
- registryThese typically provide:
Additional packages extend the ecosystem through their own registries and profiles.
Packages commonly expose a registry profile.
Examples include:
| Package | Typical contents |
|---|---|
fasthep_carpenter | transforms, histogramming, ROOT sources |
fasthep_curator | metadata, provenance, diagnostics |
fasthep_render | plotting and rendering operations |
fasthep_workshop | tutorial/example extensions |
A workflow can combine multiple profiles simultaneously.
Analysis packages can provide their own profiles and registries.
Example structure:
src/my_analysis/
├── profiles/
│ └── registry.yaml
├── transforms/
├── hooks/
├── sinks/
└── sources/This allows analyses to contribute:
without modifying FAST-HEP core packages.
FAST-HEP resolves profiles using Python package resources.
For example:
- fasthep_workshop:registrycauses FAST-HEP to:
fasthep_workshopprofiles/registry.yamlThis mechanism allows extensions to behave like normal installable Python packages.
Profiles are designed to compose rather than deeply inherit from one another.
A workflow may activate multiple independent profiles:
use:
profiles:
- fasthep_carpenter:registry
- fasthep_render:registry
- my_analysis:registryEach profile contributes functionality to the shared workflow environment.
This keeps the ecosystem modular and extensible.
Registries are resolved before workflow planning begins.
This is important because planners need to understand:
before execution plans can be constructed.
Profiles and registries intentionally separate:
This separation helps FAST-HEP support: