Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

RECAP

Reproducible provenance for high-throughput experiments

RECAP (Reproducible Experiment Capture and Provenance) is a Python framework for organizing the metadata, resources, and workflows generated by large-scale experiments.

High-throughput experiments produce more than data files. They produce samples, plates, detector outputs, processing results, instrument configurations, workflow parameters, and relationships between all of them. RECAP records those relationships so results remain traceable after the experiment is complete.

What RECAP provides

RECAP helps you:

  • Define reusable templates for samples, plates, files, instruments, and other experimental resources.
  • Record hierarchical resources such as plates containing wells or collections containing samples.
  • Define repeatable workflows as process templates with ordered steps, parameters, and resource slots.
  • Record each execution as a process run with its actual inputs, outputs, and parameter values.
  • Organize experiments with hierarchical namespaces.
  • Query resources, process runs, properties, parameters, and provenance relationships.
  • Preserve lineage when immutable resources need to be modified.
  • Work with local SQLite databases or authenticated remote RECAP servers.

How the data is organized

RECAP separates reusable definitions from experimental instances:

ResourceTemplate
    └── Resource

ProcessTemplate
    └── ProcessRun
            ├── assigned Resources
            ├── ordered Steps
            └── recorded Parameters

Resources and process runs form a provenance graph:

Sample
  └── Sample Preparation
        └── Prepared Sample
              └── Data Collection
                    └── Raw Data File
                          └── Data Processing
                                └── Processed Result

This structure lets you answer questions such as:

  • Which sample and preparation conditions produced this result?
  • Which resources were used by this process run?
  • Which parameters controlled a particular analysis?
  • Which results depend on a specific input?
  • What metadata belongs to all experiments in a namespace? Why this is useful for high-throughput science High-throughput workflows often repeat the same operations across many samples, plates, visits, or processing batches. Manually maintaining relationships in notebooks, filenames, and spreadsheets makes provenance difficult to query and easy to lose. RECAP turns those relationships into structured records. Templates capture the stable parts of a workflow, while process runs record what happened for one specific experiment. Resource hierarchies preserve relationships within physical and digital artifacts, and namespaces provide organization and access boundaries as projects grow. The result is a provenance layer that can support automation, quality control, reproducibility, and downstream analysis without requiring every application to invent its own data model. Minimal example from recap.client import RecapClient

with RecapClient.from_sqlite("experiment.db") as client: client.create_namespace("beamline") client.create_namespace("beamline/amx", metadata={"beamline": "amx"}) namespace = client.namespace("beamline/amx")

with namespace.build_resource_template(
    name="Sample Plate",
    type_names=["container", "plate"],
) as template:
    template.add_properties({
        "dimensions": [
            {"name": "rows", "type": "int", "default": 8},
            {"name": "columns", "type": "int", "default": 12},
        ]
    })

with namespace.build_resource(
    name="Plate 001",
    template_name="Sample Plate",
) as plate_builder:
    plate = plate_builder.resource

The same namespace-scoped client can define process templates, create process runs, assign resources, record parameters, and query the resulting provenance graph. Local and remote use For local workflows, RECAP manages a SQLite database: client = RecapClient.from_sqlite("experiment.db") For shared or service-based deployments, clients connect to an authenticated RECAP server: client = RecapClient.from_url( "https://recap.example.org", api_key="your-api-key", ) Remote clients use authenticated REST for queries, reads, creates, updates, and resource copies. Applications do not need direct access to the server's database filesystem.

Remote queries use ordinary JSON request and result envelopes. Local and remote clients share the same QueryDSL, canonical entity identity, and load-aware model behavior. Query results default to full models with relationships unloaded; explicit include(...) or load="eager" controls hydration. Builders collect drafts and submit one aggregate command at save(), locally or through REST.

Query results can be passed to query.export(format, destination) through the registered exporter extension point. RECAP does not prescribe a built-in export format. What RECAP does not do RECAP records experimental data and provenance. It is not:

  • An electronic lab notebook.
  • A laboratory inventory management system.
  • An instrument-control system.
  • A scientific analysis or computation engine. Applications can build those capabilities on top of RECAP's provenance model. Learn more
  • Getting started (/getting_started/00-orientation.html)
  • Complete provenance workflow (/getting_started/04-complete-provenance-workflow.html)
  • Quick start: create and store data locally (/how-to/quick-start-create-and-store-data-locally.html)
  • Model a process workflow (/getting_started/03-process-workflow.html)
  • How-to guides (/how-to/index.html)
  • Reference (/reference/index.html)
  • Explanations (/explanation/index.html)
  • Tutorials (/tutorials/index.html) Install pip install pyrecap Install server support with: pip install "pyrecap[server]" RECAP is released under the 3-clause BSD license.

Metadata

Release files for pyrecap 0.0.1b1

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

Source distribution (sdist)

Source distribution for pyrecap 0.0.1b1
File Size Uploaded Provenance Actions
pyrecap-0.0.1b1.tar.gz 292.1 kB Without provenance Details for pyrecap-0.0.1b1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyrecap 0.0.1b1
File Interpreter ABI Platform Actions
pyrecap-0.0.1b1-py3-none-any.whl Python 3 none any Details for pyrecap-0.0.1b1-py3-none-any.whl

Total release size: 618.6 kB

Release files / pyrecap-0.0.1b1.tar.gz

Download URL pyrecap-0.0.1b1.tar.gz
Size 292.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d2afec515832ab8596b2d57cf8e4dd10899f4cfadb0218d3d56af41f17559ef5
BLAKE2b-256 checksum
How to use checksums
bb812ec9474d8cc30ccea80e8c39f7e8e8e60be6794e4a7154b52d3a284dbf43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.23.0

Release files / pyrecap-0.0.1b1-py3-none-any.whl

Download URL pyrecap-0.0.1b1-py3-none-any.whl
Size 326.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a68cef5d1ebfd0dff9a701fc32a78ecea9e662dcee8b1b985ca0f1654e81cdee
BLAKE2b-256 checksum
How to use checksums
6c48908608d790ee386a7dae55ba0bb903d9c2da260287cd66919d4f77673e8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.23.0

Security for pyrecap 0.0.1b1

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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