Try GEO preflight demo
Run FAIRy locally in 2 minutes. No account needed. No uploads.
Watch 2-min demo1. Run the kata locally
Copy and paste the commands below to install FAIRy, run it on the demo fixtures, and open the generated report.
# Create and activate a Python virtual environment python3 -m venv .venv source .venv/bin/activate # Install FAIRy (engine) from GitHub pip install -U pip pip install "git+https://github.com/yuummmer/fairy-core.git@main" fairy --version # Clone GEO rulepacks (if rerunning, delete the folder first) rm -rf fairy-rulepacks-geo git clone https://github.com/yuummmer/fairy-rulepacks-geo.git cd fairy-rulepacks-geo # Run preflight mkdir -p .tmp fairy preflight \ --rulepack rulepacks/geo_bulk_seq/v0_2_0.json \ --samples rulepacks/geo_bulk_seq/fixtures/samples_bad.tsv \ --files rulepacks/geo_bulk_seq/fixtures/files.tsv \ --out .tmp/geo_bulk_seq_report.json # Open the report less .tmp/geo_bulk_seq_report.md
This installs FAIRy, clones the demo fixtures, runs validation, and generates the report — all in one go. The report is saved as Markdown (.md) and JSON. Want a clean run? Swap samples_bad.tsv → samples.tsv in the preflight command.
2. What you'll see
# FAIRy Preflight Report - **Schema version:** 1.0.0 - **Rulepack:** geo_bulk_seq@0.2.0 - **FAIRy version:** 0.2.2 - **Generated at (UTC):** 2025-12-29T20:29:58.466142Z - **Dataset ID:** sha256:052c2ab58c6ad35669b47881262e006a9e8b795a9af62f7aae9a9ce48d6c6faf - **submission_ready:** `False` ## Summary - FAIL findings: 1 ['GEO.BIO.CONTEXT_MISSING'] - WARN findings: 1 ['CORE.DATE.INVALID_ISO8601'] If `submission_ready` is `True`, FAIRy believes this dataset is ready to submit. --- ## Input provenance These hashes and dimensions identify the exact files that FAIRy validated. You can hand this block to a curator or PI as evidence of what was checked. ### samples.tsv - path: 'rulepacks/geo_bulk_seq/fixtures/samples_bad.tsv' - sha256: '96ae14a766369c0ab581bf7dc16af186fc732139adc23eb438d8de47ad49e798' - rows: '2' - cols: '8' ### files.tsv - path: 'rulepacks/geo_bulk_seq/fixtures/files.tsv' - sha256: '3305edf715ad6f1bf9ade6ee48cfc84e6599d25e42cf2a32d8741a32185ed348' - rows: '4' - cols: '3' --- ## Results (all current issues) Level `fail` means "must fix before submission." Level `warn` means "soft violation / likely curator feedback." Level `pass` means the rule passed with no violations. | Level | Rule | Count | Samples | |-------|------|-------|--------| | warn | CORE.DATE.INVALID_ISO8601 | 1 | row 1, col collection_date | | pass | CORE.ID.UNMATCHED_SAMPLE | 0 | (none) | | fail | GEO.BIO.CONTEXT_MISSING | 1 | row 1 | | pass | GEO.FILE.PAIRING_MISMATCH | 0 | (none) | | pass | GEO.REQ.MISSING_FIELD | 0 | (none) | | pass | GEO.REQ.MISSING_PROCESSED_DATA | 0 | (none) | ### CORE.DATE.INVALID_ISO8601 (warn, 1 sample) - row 1, column 'collection_date', message: Value '2025/01/15' in collection_date is not ISO8601 (YYYY-MM-DD)., hint: Use format YYYY-MM-DD, e.g. 2025-10-02. ### GEO.BIO.CONTEXT_MISSING (fail, 1 sample) - row 1, message: Sample 'S1' does not provide tissue/cell_line/cell_type., hint: Fill at least one of: tissue, cell_line, or cell_type. --- ## Resolved since last run _No baseline from prior run (first run or cache missing)._
FAIRy generates a Markdown report you can share with contributors, plus a machine-readable JSON attestation file.
3. Watch the walkthrough
2-minute demo showing how FAIRy validates datasets and generates readiness reports.
What's next?
Ready for your own data?
If you're working with your lab's data and need help setting up validation rules or creating custom rulepacks, request a pilot scope.
Request a pilot scope →Want to use FAIRy-core?
Get the open-source validator on GitHub and start using it with existing rulepacks.
Get FAIRy-core on GitHub →Related
Need help with your own datasets?
If you're working with your lab's data and need help setting up validation rules or creating custom rulepacks, we're here to help.
For labs, cores, and institutions looking to implement FAIRy for their data submission workflows.