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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.