-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
PXAudit requests two PRIDE Archive API resources for each PXD accession:
- project metadata; and
- the complete paginated file listing.
It classifies filenames and PRIDE file categories, computes the evidence flags, and stores the result in SQLite.
No. I did not want a metadata audit to quietly turn into a multi-gigabyte download. PXAudit records names, categories, locations, sizes, and checksums returned by PRIDE, but it does not fetch raw spectra, processed results, or archive contents.
Canonical PRIDE identifiers must be PXD followed by at least six digits. Input is trimmed and converted to uppercase.
pxaudit check pxd000001 # audited as PXD000001Safe 3 to 64 character identifiers from other repositories are accepted, including MassIVE (MSV), jPOST (JPST), and iProX (IPX) identifiers. They score Unverifiable because PXAudit 0.5.1 only queries PRIDE.
Embedded whitespace, path separators, query or fragment markers, control characters, .., unsafe endpoints, and malformed PXD-like values are rejected.
Mixed ProteomeXchange lists are common, and rejecting every partner identifier makes batch bookkeeping harder. PXAudit keeps those identifiers visible without inventing PRIDE evidence for them. Their repository is inferred when the prefix is recognized, and both tiers remain Unverifiable.
I would rather make that limitation obvious than pretend several repositories share one API contract. Native adapters can be added when their metadata and file semantics are handled properly.
The FAIR ladder stops at the first failed gate. Check the evidence in order:
- Is the title non-empty?
- Does the first organism entry have a name?
- Does the first instrument entry have a name?
- Is there recognized processed result evidence?
- Is there a supported PSI identification result (
.mzid,.mzidentml, or proteomics.mztab)? - Is there an SDRF?
- Are open spectra and organism-part annotation both present?
- Is a non-zero PubMed ID linked?
A publication cannot raise a dataset past Silver when SDRF is missing. Likewise, an SDRF cannot raise a dataset past Gold when open spectra or organism part is missing.
Run verbose mode to see cache and fetch details, then inspect Tier System for the exact scoring gates:
pxaudit -v check PXD000001RESULT is broad processed-result evidence. has_psi_results is deliberately narrower and requires a filename ending in .mzid, .mzidentml, or proteomics .mztab after compression removal.
Examples:
| File | Processed result | PSI result |
|---|---|---|
results.csv with PRIDE category RESULT
|
Yes | No |
results.idXML |
Yes | No |
results.mzid.gz |
Yes | Yes |
results.mztab |
Yes | Yes |
quality.mzQC |
No | No |
metabolomics.mztab-m |
No | No |
The separation prevents a generic category from being treated as proof of a specific scientific standard.
An identification or PSM list can contain useful numbers without being an abundance summary or matrix. PXAudit reserves has_tabular_quant for recognized protein, peptide, precursor, or ion abundance outputs such as MaxQuant proteinGroups.txt or DIA-NN report.tsv.
This distinction matters because Quant-Ready and Quant-Complete claim that both PSI identification evidence and a reusable quantitative table are present.
Known compression suffixes are removed layer by layer before format and basename rules run. These classify by their underlying content name:
results.mzid.gz -> RESULT and PSI evidence
study.sdrf.tsv.zip -> SDRF
report.tsv.gz -> QUANT_MATRIX
Compound formats are checked before generic compression removal, so a Skyline .sky.zip archive remains a recognized SEARCH file.
PXAudit requires an sdrf token and either a tabular extension (.tsv, .txt, or .csv) or the PRIDE experimental-design category. This accepts names such as study.sdrf.tsv while rejecting unrelated or ambiguous names such as asdrf.tsv, sdrfile.tsv, and sdrf_instructions.pdf without the matching PRIDE category.
It can reuse cached responses, but a first audit needs PRIDE unless the cache was populated elsewhere.
The default cache lifetime is seven days. A fresh two-endpoint cache hit performs no network request. When a live request fails, default and --refresh modes may fall back to a compatible stale entry and report its age.
# Reuse fresh cache when available
pxaudit check PXD000001
# Try live first, then allow stale fallback
pxaudit check PXD000001 --refresh
# Use no cache at all
pxaudit check PXD000001 --no-cache--no-cache performs no fresh read, stale read, or write. It is not an offline mode.
Project metadata and the file list are separate PRIDE responses. Version-2 cache entries store a snapshot identifier for responses retrieved during the same audit. PXAudit warns when the identifiers differ or when a compatible older entry has no identifier.
The warning means the responses are individually usable but cannot be proven to describe the same moment. Use --refresh to request both endpoints again. A partial live failure can still produce a mixed snapshot when one endpoint falls back to stale data.
Default and refresh modes first try the allowed cache path described above. Without usable project data, the command exits with code 1. Without a usable file response, the audit is incomplete and also exits with code 1.
Important
PXAudit does not replace missing file evidence with an empty list and score it as Raw. It writes no new database rows for that attempt, and a previous completed record remains unchanged.
I care about this behavior because an API outage and a dataset with no processed files are not the same scientific observation.
pxaudit cache clear deletes only regular version-2 entries that prove PXAudit ownership and whose embedded accession, endpoint, payload type, and filename agree.
Caution
--yes skips the confirmation prompt. It does not weaken cache-path or ownership validation.
It ignores unrelated files, directories, symbolic links, temporary files, corrupt JSON, legacy payloads, and identity mismatches. It also refuses broad cache locations such as the home directory, current directory, filesystem root, or system temporary directory.
Inspect the exact owned and ignored counts first:
pxaudit cache info
pxaudit cache clearThe default database is pxaudit_results.db in the current directory. Override it per command or in ~/.pxaudit.toml:
pxaudit check PXD000001 --db ~/audits/pride.db
pxaudit manifest PXD000001 --db ~/audits/pride.dbSee Database Schema for tables, NULL semantics, migrations, and SQL examples.
The accession must have a completed audit in the selected database. Confirm both the accession and database path:
pxaudit check PXD004683 --db cohort.db
pxaudit manifest PXD004683 --db cohort.dbAn incomplete audit does not create an empty manifest. If the audit failed because file evidence was unavailable, resolve the network or cache problem and run it again.
PXAudit protects an existing report unless --overwrite is explicit:
pxaudit report --db cohort.db --output report/ --overwriteThe output directory itself may already exist. Only the target report.html conflicts. Symbolic links and non-file targets are refused.
From a source checkout, install the optional dependencies first:
uv sync --extra reportFind rows written by an older scoring contract:
SELECT accession
FROM audit
WHERE tier_logic_version IS NULL
OR tier_logic_version != 'v2.1';Re-run each accession. Add --refresh when current live responses are required:
pxaudit check PXD000001 --refreshThe repository includes CITATION.cff, which GitHub and reference managers can parse. The equivalent BibTeX entry is:
@software{ergin_pxaudit_2026,
author = {Ergin, Enes Kemal},
title = {{PXAudit}: A command-line tool for auditing {Proteomics Exchange} study metadata},
year = {2026},
version = {0.5.1},
url = {https://github.com/LangeLab/PXAudit},
license = {MIT},
}Open an issue at github.com/LangeLab/PXAudit/issues. Include the PXAudit version, command, accession when it is safe to share, exit code, and the complete error message. Do not attach private cache contents or databases unless you have reviewed them first.
PXAudit 0.5.1 documentation | Changelog | Issues
Getting started
Understand the audit
Help
Contributing