Audit Proteomics Exchange (PRIDE) study metadata from the command line.
I made PXAudit because I was checking PRIDE submissions by hand and got tired of repeating the same steps.
PXAudit reads project metadata and file listings from the PRIDE Archive, classifies the deposited files, assigns a seven-level FAIR tier and a separate quantification-readiness tier, then saves the audit to SQLite. It does not download deposited data files.
Quick start
PXAudit supports Python 3.12 through 3.14. The source checkout uses uv:
git clone https://github.com/LangeLab/PXAudit.git
cd PXAudit
uv sync
uv run pxaudit check PXD000001
The first audit queries PRIDE and creates pxaudit_results.db in the current directory. API responses are cached under ~/.pxaudit_cache/, so a fresh repeat audit does not need another request.
PXAudit currently audits PRIDE PXD accessions. Safe identifiers from other ProteomeXchange repositories are accepted as Unverifiable; repository adapters are not implemented yet. The unreleased v0.6.0 package is PRIDE-only. Partner adapters are planned after publication.
Audit evidence uses the v3 outcomes passed, failed, and unknown. Unknown evidence is shown as ?, does not block tier progression, and is counted in ambiguity_count; export consumers should treat has_* columns as strings rather than integer booleans.
Interactive terminal output uses restrained color for flags and tiers when standard output is a TTY. Meaning stays in the glyphs and labels, so --no-color, NO_COLOR, quiet mode, and redirected output are plain by default. An explicit color = true setting is the opt-in override.
Common tasks
# Audit a list containing one accession per line
uv run pxaudit bulk-audit --input accessions.txt --format tsv --output results.tsv
# For large local runs, add --batch-size N to commit after each N accessions.
# Inspect the stored file inventory
uv run pxaudit manifest PXD000001
# Review effective settings and cache state
uv run pxaudit config show
uv run pxaudit cache info
# Review aggregate counts from a stored database
uv run pxaudit summary --db pxaudit_results.db
# Generate a self-contained HTML report
uv sync --extra report
uv run pxaudit report --db pxaudit_results.db --output report/
The default batch size is 1, preserving per-accession durability. A stop-on-error or interrupted run rolls back its active batch; --continue-on-error commits pending successes before skipping the failed accession.
Run uv run pxaudit --help or uv run pxaudit COMMAND --help for command-line help.
Use as a Python library
The public Python API provides the same single-accession audit used by the CLI and persists the completed result to SQLite:
from pxaudit import audit_accessions, check_accession
one = check_accession("PXD000001", db_path="audits.db")
print(one.tier, one.quant_tier)
cohort = audit_accessions(["PXD000001", "PXD004683"], db_path="audits.db")
print(len(cohort))
db_path may be a string or pathlib.Path. The helpers use the local JSON cache, normalize accessions, and stop on the first error. Use the CLI bulk-audit --continue-on-error command when a batch must continue after an individual failure. Lower-level callers can import compute_audit and FileClass for deterministic scoring and filename classification.
Documentation
The wiki contains the detailed contracts and examples:
- Home: workflow overview and report preview
- CLI Reference: commands, flags, configuration, caching, errors, and exit codes
- Tier System: FAIR and quantification tiers, evidence flags, and scoring rules
- Database Schema: tables, columns, migrations, and example queries
- FAQ: supported accessions, file classification, offline use, and common scoring questions
- Development: setup, architecture, testing, style, and CI
Contributions and issue reports are much appreciated. The development guide explains the local checks and documentation workflow.
Citation
If you use PXAudit in your research, please cite it as:
@software{ergin_pxaudit_2026,
author = {Ergin, Enes Kemal},
title = {{PXAudit}: A command-line tool for auditing {Proteomics Exchange} study metadata},
year = {2026},
version = {0.6.0},
url = {https://github.com/LangeLab/PXAudit},
license = {MIT},
}
A CITATION.cff file is included in the repository root for tools that parse it automatically (e.g. GitHub's Cite this repository button, Zenodo).
License
MIT License. See LICENSE for details.
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 pxaudit-0.6.0.tar.gz.
File metadata
- Download URL: pxaudit-0.6.0.tar.gz
- Upload date:
- Size: 56.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2986d408273e47057ba9ed6c89950039c8263a02f9da867a79f9b1746aefe239
|
|
| MD5 |
91c685fa913ec3c39d7cc1e0639013bf
|
|
| BLAKE2b-256 |
53d0e847213137e692f436c0a4a4809ff537e9f8a4669557c9d74b46257e8738
|
Provenance
The following attestation bundles were made for pxaudit-0.6.0.tar.gz:
Publisher:
publish.yml on LangeLab/PXAudit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pxaudit-0.6.0.tar.gz -
Subject digest:
2986d408273e47057ba9ed6c89950039c8263a02f9da867a79f9b1746aefe239 - Sigstore transparency entry: 2501526008
- Sigstore integration time:
-
Permalink:
LangeLab/PXAudit@0c02c5d7eff530d213e0cd388b6493a17b80929f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/LangeLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0c02c5d7eff530d213e0cd388b6493a17b80929f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file pxaudit-0.6.0-py3-none-any.whl.
File metadata
- Download URL: pxaudit-0.6.0-py3-none-any.whl
- Upload date:
- Size: 61.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bd8ccd58e4c65a122788c84508e62ce68ff7631d2f01d68f6957ed750d54c2f
|
|
| MD5 |
619eb02a986b89d116b917342f3fe610
|
|
| BLAKE2b-256 |
a2c87c7f67d2ecbd39a692a2042af33094825ca3cfdc1b118d6f131b3403b015
|
Provenance
The following attestation bundles were made for pxaudit-0.6.0-py3-none-any.whl:
Publisher:
publish.yml on LangeLab/PXAudit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pxaudit-0.6.0-py3-none-any.whl -
Subject digest:
1bd8ccd58e4c65a122788c84508e62ce68ff7631d2f01d68f6957ed750d54c2f - Sigstore transparency entry: 2501526028
- Sigstore integration time:
-
Permalink:
LangeLab/PXAudit@0c02c5d7eff530d213e0cd388b6493a17b80929f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/LangeLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0c02c5d7eff530d213e0cd388b6493a17b80929f -
Trigger Event:
workflow_dispatch
-
Statement type: