Parser registry¶
Every input format is one adapter: a pure function
(StudyConfig, paths) -> (rows, *stats) emitting canonical-schema row dicts.
Adding a dataset is a YAML edit; adding a format is one module + one
registry entry.
from proteoform_regions import list_parsers
list_parsers()
# ['diann', 'fragpipe', 'glycopeptide', 'maxquant_msms', 'maxquant_peptides',
# 'mzidentml', 'progenesis', 'spectronaut']
Adapters¶
| adapter key | format | entity level | tier |
|---|---|---|---|
maxquant_peptides |
MaxQuant peptides.txt / .csv tables |
peptide | B |
maxquant_msms |
MaxQuant msms.txt PSM tables (PSM-aggregated) |
peptide | B |
diann |
DIA-NN report.tsv (precursor level) |
peptide | A |
mzidentml |
mzIdentML .mzid / .mzid.gz (two-pass lxml, passThreshold PSMs) |
peptide | B |
fragpipe |
FragPipe/MSFragger combined PSM table (PSM-aggregated, protein coordinates) | peptide | B |
glycopeptide |
pGlyco3 / GlyPep-Quant per-run glycopeptide records | peptidoform | A |
spectronaut |
Spectronaut facility peptide-quant TSV | peptide | C |
progenesis |
Progenesis QI peptide CSV | peptide | C |
Adapter-specific StudyConfig flags¶
| flag | adapter | semantics |
|---|---|---|
extract_protein_names |
maxquant_peptides |
map Protein names into protein_name_raw (S1 pilots: true; S6 extension: false) |
drop_zero_intensities |
maxquant_peptides |
drop exact-0.0 reporters before summing (S6 extension quirk) |
psm_count_zero_as_none |
maxquant_peptides |
MS/MS Count 0 → None (S6 extension quirk) |
build_usi |
diann |
build USI examples from MS2.Scan when present |
The S6 quirk flags exist for one reason: byte-for-byte freeze parity with the paper's frozen evidence table, whose S6 studies were produced with those semantics. Defaults keep the S1 pilot semantics (zeros kept, counts kept).
Canonical output¶
Every adapter emits rows with exactly the 44 canonical columns
(schema.py).
Study metadata never appears inside adapter code — it is seeded from
StudyConfig by base_row().
Testing philosophy¶
- Synthetic unit fixtures pin each adapter's structural quirks (decoy flags, skiprows headers, record blocks, reference graphs, PSM aggregation).
- Freeze parity (
tests/test_parity.py,parity-marked) proves the adapters + harmonizer reproduce the paper's frozen 70,020-row evidence table on all ten studies when the paper repository is available read-only.