reproducible-science
Scaffold reproducible science workflows in one command.
Install
pip install reproducible-science
This installs repro and its three dependencies: prereg, citations, results-cli.
Quick start
repro init my_experiment
initializing my_experiment
wrote my_experiment/my_experiment/PREREG.md
wrote my_experiment/.results/ledger.jsonl
wrote my_experiment/.citations/
wrote my_experiment/CLAUDE.md
This creates:
my_experiment/
PREREG.md the plan (OSF headings)
CLAUDE.md tells Claude Code about the tools
.results/ results ledger
.citations/ citation library
claims/ claim files for citation verification
data/ raw data
scripts/ analysis scripts
figures/ output figures
Verify everything at once
cd my_experiment
repro verify
Reads repro.yaml and checks every declared evidence assertion against the artifact it names. It spawns nothing: prereg, results and citations are separate commands.
The workflow
prereg freeze # lock the plan
results seal PREREG.md analysis.py # hash inputs
results access "read metadata" --level "metadata only"
# run the computation
results run output.json --run-id exp_001
results claim "ICC = 0.42" --run-id exp_001 --confirmatory --location "Table 2"
repro verify # check everything
What's included
| Tool | CLI | PyPI | What it does |
|---|---|---|---|
| prereg | prereg |
prereg |
Freeze a plan before running, record what changed after |
| citations | citations |
citations |
Verify quotations resolve in pinned source artifacts |
| results | results |
results-cli |
Seal inputs, record outputs, bind claims to runs, verify the chain |
Inside adduce
adduce scores a repository for reproducibility across
categories. Installing the extra registers one rule with it, so a repository that declares a
repro.yaml has its evidence assertions checked as part of adduce check:
pip install "reproducible-science[adduce]"
adduce check .
The rule reports an aggregate — every assertion holding is a pass, some holding is partial, a
pinned artifact having changed is a failure naming it — and writes the full per-assertion
report to .adduce/repro-report.json, since one finding cannot carry thousands of outcomes.
A repository with no manifest is out of scope rather than failing, and a verifier that cannot
run reports UNKNOWN: a missing toolchain is not the repository's fault.
adduce is not a dependency of this package, and this package is not a dependency of adduce.
Claude Code
This repo is also a Claude Code plugin marketplace bundling all three tools:
/plugin marketplace add elliottower/reproducible-science
Or install them individually: elliottower/prereg, elliottower/citations, elliottower/results.
MIT licensed.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reproducible_science-0.2.0.tar.gz.
File metadata
- Download URL: reproducible_science-0.2.0.tar.gz
- Upload date:
- Size: 85.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a82965d9015b9af90ca86a93d2f153bd94feaac1ccb2e57cf9101b4d94611ee
|
|
| MD5 |
6619983f0246fc9333216504e8653a2d
|
|
| BLAKE2b-256 |
7bbc84770d7be4f0228b83c97d1279c6f18978682b1cb4233fbe127b3469ac78
|
Provenance
The following attestation bundles were made for reproducible_science-0.2.0.tar.gz:
Publisher:
publish-repro.yml on elliottower/reproducible-science
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reproducible_science-0.2.0.tar.gz -
Subject digest:
7a82965d9015b9af90ca86a93d2f153bd94feaac1ccb2e57cf9101b4d94611ee - Sigstore transparency entry: 2582505481
- Sigstore integration time:
-
Permalink:
elliottower/reproducible-science@e19b7e952529c76fe4f9d304c7dc93f806ad2a72 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/elliottower
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-repro.yml@e19b7e952529c76fe4f9d304c7dc93f806ad2a72 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file reproducible_science-0.2.0-py3-none-any.whl.
File metadata
- Download URL: reproducible_science-0.2.0-py3-none-any.whl
- Upload date:
- Size: 56.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d1b4e0bc45d702cb2df590cf6427a289b0247d1172e436def92e8879afac998
|
|
| MD5 |
bc93f57476ef4ccff5e3962483e47d01
|
|
| BLAKE2b-256 |
c830a24a420a4a0384a7549564f1d9f94a0798a26b674e86a65479f62ac44da0
|
Provenance
The following attestation bundles were made for reproducible_science-0.2.0-py3-none-any.whl:
Publisher:
publish-repro.yml on elliottower/reproducible-science
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reproducible_science-0.2.0-py3-none-any.whl -
Subject digest:
6d1b4e0bc45d702cb2df590cf6427a289b0247d1172e436def92e8879afac998 - Sigstore transparency entry: 2582505490
- Sigstore integration time:
-
Permalink:
elliottower/reproducible-science@e19b7e952529c76fe4f9d304c7dc93f806ad2a72 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/elliottower
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-repro.yml@e19b7e952529c76fe4f9d304c7dc93f806ad2a72 -
Trigger Event:
workflow_dispatch
-
Statement type: