Skip to content

Command-line parameters

Captured from the andes binary built from this commit, so it matches the release. Advanced flags are hidden from --help on purpose; they and the workflow-by-workflow guidance are in the full reference.

andes --help

andes: database search of MGF/mzML spectra against FASTA

Usage: andes [OPTIONS] [COMMAND]

Commands:
  quant      Match-between-runs quantification stages over a `--quant-dir`: `library` (global), `extract` (per run), `finalize` (global). The same result as `andes search --lfq --mbr` on the same inputs
  inference  Protein groups with picked protein-level q-values over the rescored PSMs of one or more runs. Writes the QPX protein-group view
  help       Print this message or the help of the given subcommand(s)

Options:
      --config <FILE>
          YAML run-configuration file. Any parameter can be set here (grouped by experiment: io/search/scoring/decoys/chimeric/refine/rescoring/glyco; see DOCS §1b). An explicit CLI flag always overrides the config value

      --spectrum <SPECTRUM>
          Input spectrum file(s). Repeat `--spectrum` for multiple inputs (one PIN). Format is auto-detected per file by extension

      --database <DATABASE>
          Input protein database (target sequences only; decoys are generated automatically): FASTA, or UniProt XML when the name ends in `.xml` (`.gz` is decompressed either way). A UniProt XML database searches like the UniProt FASTA and also carries annotated modification sites (used by `sites=annotated` mods) and, with `--uniprot-variants`, natural variants

      --uniprot-variants
          UniProt XML database: also search every natural sequence variant (`sequence variant` feature) as its own target entry. Only the peptides carrying the variant are added, under an accession naming the change (`sp|P04637_VAR_005851_D7H|P53_HUMAN`), and decoys mirror them. Grows the search space: measure PSMs at 1% FDR and entrapment FDP before relying on it

      --uniprot-isoforms
          UniProt XML database: also search every described isoform as its own target entry (`sp|P04637-2|P53_HUMAN`), rebuilt from the canonical sequence and its splice variants. An isoform carries its own annotated sites and the canonical ones on the residues it shares, and, with `--uniprot-variants`, its own natural variants. Grows the search space

      --uniprot-chains
          UniProt XML database: also search every mature chain or peptide whose ends differ from the precursor's (after a signal peptide, propeptide or transit peptide is removed) as its own target entry. Only the peptides at those new termini are added; they are protein-terminal there, so protein-terminal mods apply. Grows the search space

      --uniprot-evidence <UNIPROT_EVIDENCE>
          UniProt XML database: minimum UniProt evidence for a sequence variant, an annotated modification site or a mature chain to be used. `experimental` (default: experimental and large-scale proteomics evidence), `curated` (adds manual assertions without experimental support, e.g. "by similarity"; Swiss-Prot chains without evidence codes count here), or `any` (adds automatic annotation and features without evidence)

          [default: experimental]

      --annotations <FILE>
          Annotation file(s) (`<name>.annotations.parquet`): claims about the database's reference proteins (sequence edits, modification sites, mature chains) from any source, one row per claim. Edits become variant entries, chains become chain entries and sites are added to the reference, as from a UniProt XML database. Repeat for several files; they are merged by content. See DOCS.md for the columns

      --knockoffs <KNOCKOFFS>
          Knockoff entries per single-residue variant (0: none), for UniProt XML variants (`--uniprot-variants`) and `--annotations` variants. A knockoff is the same substitution at another position holding the same residue, in a matched sequence context and at least 10 residues from every known variant, so it is almost certainly absent from the sample but fits a mass coincidence or an isotope error as well as the real variant does. The knockoffs accepted per substitution class estimate how many accepted variant PSMs are false, and variant PSMs get a q-value from that estimate too (with --rescore). A variant PSM is accepted only when its variant has a knockoff; knockoff PSMs are never reported. 0 turns this off and leaves variant PSMs to the class FDR alone

          [default: 4]

      --output-pin <OUTPUT_PIN>
          Output Percolator PIN file path

      --output-tsv <OUTPUT_TSV>
          Output TSV file path (optional)

      --output-parquet <OUTPUT_PARQUET>
          Output QPX `.idparquet/` bundle directory (optional; quantms-compatible). Writes `psms.parquet`, `proteins.parquet`, `protein_groups.parquet` (empty) and `search_params.parquet`, and with `--tmt` or `--lfq` `quantms.feature.parquet`

      --decoy-prefix <DECOY_PREFIX>
          Decoy prefix used when generating reversed decoy sequences

          [default: XXX_]

      --decoy-suffix <DECOY_SUFFIX>
          Decoy-accession SUFFIX used to RECOGNIZE pre-built decoys in the input FASTA (e.g. `rev` for quantms `<orig>_rev` decoys). When set, a protein is a decoy iff its accession starts with `<decoy-prefix>_` OR ends with this suffix. Typically paired with `--decoy-strategy none` so andes consumes an externally-built target+decoy database instead of generating its own decoys (which would double-decoy and bias FDR)

      --decoy-strategy <DECOY_STRATEGY>
          How to generate decoys. Decoys are peptide-level: each segment between two cleavage sites is permuted with its cleavage residues, its cleavage-side terminal residue and an initiator Met in place, so every enzymatic peptide has a decoy of the same composition and C-terminal residue (a non-specific search permutes whole sequences). `shuffle` (default; seeded shuffle of each segment), `reverse` (pseudo-reverse each segment; on ETD spectra a pseudo-reversed K-terminal decoy shares c/z ions with its target at every I/L), `sequon` (shuffle, then restore the segment's N-X-S/T sequon count; RECOMMENDED with `--glyco`: a permutation leaves fewer sequons than the target, so decoys reach the glyco sequon gate at a lower rate than targets and the resulting q-values are anti-conservative), or `none` (no decoys — for a FASTA that already contains decoys, or external FDR). `none` with a target-only FASTA leaves the search without decoys (FDR can't be estimated) and warns

          [default: shuffle]

      --precursor-cal <PRECURSOR_CAL>
          Precursor-mass calibration: `off` (default), `auto`, or `on`. `auto`/`on` learn a systematic ppm shift from confident PSMs in a pre-pass and tighten the precursor tolerance for the main search; `auto` skips the correction when the sample is too small to be reliable. Off by default: on the benchmark sets the pre-pass cost 9-17% of the run and fired on none of Astral, TMT, UPS1 or phospho; where a larger sample made it fire (UPS1), the tightened window lost 7.6% of PSMs

          [default: off]

      --index-cache-dir <DIR>
          Directory of the candidate-index cache (`andes-candidx-<key>.bin`), created if missing. Default: the directory of the output files. Pass a shared directory to build the index once for several tasks, or a node-local one for a cache per node. A directory that cannot be written is an error

      --temp-dir <DIR>
          Directory of the run's private temporary files, created if missing and emptied at exit: the MS1 scans kept between searching and quantification, the directory of `--mbr` without `--quant-dir`, and the PIN of `--rescore` with `--keep-pin false`. Default: the directory of the output files. A directory that cannot be written is an error

      --precursor-tol <PRECURSOR_TOL>
          Precursor mass tolerance as `VALUE+unit`. Accepts ppm (e.g. `20ppm`, high-res) or Da (e.g. `0.02da`/`0.02Da`, low-res precursor selection). Default `20ppm`

          [default: 20ppm]

      --enzyme <ENZYME>
          Proteolytic enzyme for in-silico digestion. Named values: trypsin (default), chymotrypsin, lysc, aspn, gluc, lysn, argc, alphalp, nocleavage, nonspecific. A wrong enzyme yields ~no PSMs (fails loud, not silent).

          Multi-protease digest: pass a `,`- or `+`-separated list (e.g. `--enzyme gluc,trypsin`) to accept peptides cleaved by ANY listed protease (the union of their cleavage rules). The FIRST entry is the primary — it drives model selection and the cleavage-credit feature; if no model matches that enzyme for the data, andes WARNs and you should pass `--model`. Combining the universal protease (nonspecific) with specific ones makes the whole digest non-specific (warned).

          [default: trypsin]

      --mods <MODFILE>
          Path to a mods.txt file describing fixed and variable modifications. Format: each non-comment line is `<mass>,<aa>,<fix|opt>,<location>,<name>`, where: - `<mass>` is a numeric monoisotopic mass delta (Da). Composition strings (e.g. `C2H3N1O1`) are **not** yet supported. - `<aa>` is a single uppercase letter or `*` (wildcard). - `<location>` is one of `any|N-term|C-term|Prot-N-term|Prot-C-term`.

          A single `NumMods=N` line sets the max variable mods per peptide. Inline `#`-comments are stripped. Blank lines and full-line `#`-comments are ignored. When omitted, the binary uses its built-in defaults (Carbamidomethyl-C fixed, Oxidation-M + protein-N-term-Acetyl variable).

      --threads <THREADS>
          Number of worker threads for the search loop. Defaults to logical CPU count

          [default: 4]

      --chimeric
          Enable the two-pass chimeric cascade for co-isolated (co-fragmented) peptides. Pass 1 is the normal search and keeps the same `--top-n` candidates per scan; Pass 2 takes the best one as the primary peptide, detects co-isolated precursors in each scan's MS1 isolation window and runs a targeted search for the second peptide on the residual spectrum, emitting it as an extra PSM. Requires mzML (MS1 scans); has no effect on MGF input

      --score <SCORE>
          Ranking / PIN RawScore source: `auto` (default — `strong` for high-res instruments, `rank` for low-res), `rank`, or `strong` (fused intensity + competition score from S1–S3)

          Possible values:
          - auto:   Pick by the resolved model's instrument: `strong` for high-res, `rank` for low-res
          - rank
          - strong

          [default: auto]

      --glyco
          Glycopeptide search mode: retrieve glycans from the loaded database, solve the backbone as `precursor − glycan`, filter by N-X-S/T sequon, and write a `.glyco.pin` file instead of the standard PIN. Default off.

          Requires a glycan database: `--glyco-species` for a bundled one, or `--glyco-glycan-gdb` for your own file (or `glyco.species` / `glyco.glycan_gdb` in `--config`). The requirement is checked as soon as the command line and the config file are merged, so a missing database fails immediately rather than after the digest, index build and spectrum load.

      --glyco-glycan-gdb <GLYCO_GLYCAN_GDB>
          Load an external `.gdb` glycan database: the glycan-first search space. Each canonical string is parsed with its tree structure preserved (core- vs antenna-fucose), and the file's NeuGc content is used as-is (no species filtering). Mutually exclusive with `--glyco-glycan-wurcs` and `--glyco-species`

      --glyco-glycan-wurcs <FILE>
          Load a WURCS 2.0 glycan database CSV (GlycanID, Mass, GlycanComposition, StructureInformation) as the glycan-first search space. Each `StructureInformation` is a WURCS 2.0 string reduced to the same five-symbol tree as a `.gdb` line (anomericity/ring/substituents dropped); the Mass and composition columns are ignored and re-derived from the tree. Mutually exclusive with `--glyco-glycan-gdb` and `--glyco-species`

      --glyco-species <GLYCO_SPECIES>
          Select a bundled species-specific N-glycan database instead of an external `--glyco-glycan-gdb` file or `--glyco-glycan-wurcs` CSV. `--glyco` requires one of the three. Databases and their attribution: `crates/andes-glyco/glycan-db/`

          Possible values:
          - human:        Human N-glycans
          - mouse:        Mouse N-glycans
          - mouse-large:  Mouse, extended
          - high-mannose: High-mannose N-glycans (species-independent)

      --glyco-core <GLYCO_CORE>
          Glycan core type for `--glyco`: `n` searches N-glycans (N-X-S/T sequons, trimannosyl core, default), `o` searches O-glycans (any S/T glycosite, single reducing-end GalNAc core). O-glycans attach with no sequon, so an O run's candidate gate is "has Ser or Thr" and its glycan database must be an O-glycan `.gdb`

          Possible values:
          - n: N-glycan: N-X-S/T sequon gate, trimannosyl core
          - o: O-glycan: Ser/Thr gate, single reducing-end GalNAc core

          [default: n]

      --precursor-mono <PRECURSOR_MONO>
          Correct each precursor to its monoisotopic peak from the preceding MS1 isotope envelope BEFORE searching (`--glyco`; needs MS1, so mzML or Thermo `.raw`). `auto` fits the observed envelope at the reported charge against a glycopeptide isotope model under the hypotheses "the recorded precursor is the M+k peak", k = 0..6, and moves the precursor down when a k > 0 clearly wins; every spectrum whose envelope was fitted is then searched with a `0..1` isotope window instead of the glyco default `0..2` (the `+2` step only carries the Hex+Fuc/NeuGc composition degeneracy once the monoisotope is verified; bigbio/andes#64 arm F), while spectra with no linked MS1 or charge keep the default window. An explicit `--isotope-error` is honoured. `auto` is the default; `off` leaves every precursor as recorded. Motivation: on pGlyco2 mouse liver the firmware records 3-6 Da above the monoisotope on a class of wide, high-mass glycopeptide envelopes, and widening the isotope window to reach them is mass-degenerate with a glycan composition change (bigbio/andes#64). Byte-identical output with `off`, or without MS1

          Possible values:
          - off:  Leave every precursor m/z as recorded
          - auto: Move a precursor down to the monoisotope its MS1 envelope supports (default)

          [default: auto]

      --glyco-min-core-y <GLYCO_MIN_CORE_Y>
          Minimum trimannosyl-core Y ions required before `--glyco` reports a PSM for a scan. andes historically reported a best guess for every scan clearing the oxonium gate, so most reported rows had no glycan evidence at all. Every other engine requires this: the common standard is 2 core Y ions, some engines require 3 with Y1 mandatory. Reads only spectral evidence, so it applies equally to target and decoy scans and cannot skew the target/decoy ratio. 0 disables.

          MEASURED TRADE-OFF, which is why the default is 0. On a pooled human plasma set (stepped-collision HCD) `2` took verified-correct identifications from 0 to 87 at 1% FDR with a measured 0.75% false-discovery proportion — the ungated run accepted 102 PSMs of which NONE were correct. On a mouse AI-ETD benchmark the same value cost 161 of 707 identifications. Set it for collision-dominant data; leave it off for electron-transfer data. Exempting ETD scans automatically was tried and made both regimes worse, because real files are mixed. Under `--glyco-core o` the core ladder is only Y0 and Y1, so a value above 2 rejects every O-glycopeptide.

          [default: 0]

      --glyco-hcd-pair <GLYCO_HCD_PAIR>
          On ETD/AI-ETD spectra, generate candidate backbones from the paired HCD scan (same precursor) while scoring c/z on the ETD scan — targets high-charge glycopeptides (validated +153 backbone-correct @1%). DEFAULT ON; scans with no HCD partner (and multi-file runs) fall back to unpaired automatically. Disable with `--glyco-hcd-pair false`. `action = Set` so the bool takes an explicit value

          [default: true]
          [possible values: true, false]

      --refine
          Enable the PTM-refinement cascade (Pass-2 over confident proteins). Default off

      --rescore
          Run Percolator on the PIN after the search and join its PEP/q-value back into the outputs (QPX `posterior_error_probability` + a `q-value` score, and a filtered `<stem>.q<fdr>.tsv`). Needs a Percolator backend (see `--percolator-bin` / `--percolator-docker`). Default off

      --fdr <FDR>
          FDR (q-value) threshold for the filtered `<stem>.q<fdr>.tsv` output (target PSMs at q ≤ this).

          This is a THRESHOLD, not a switch: it does nothing on its own. andes does not compute FDR unless you ask it to, because doing so would silently launch Percolator or the non-production native rescorer. Pair it with `--rescore` (Percolator) or `--rescore-native`. Setting it alone warns and writes no filtered output. Defaults to 0.01 when rescoring does run.

      --proteoform-fdr <PROTEOFORM_FDR>
          q-value threshold for proteoform claims, with rescoring: the filtered TSV, the proteoform table and quantification accept them at this level instead of `--fdr`. A proteoform claim is a PSM whose every protein is a UniProt variant entry; its q-value already includes the class FDR and, with knockoffs, the knockoff estimate. Isoform and chain PSMs keep `--fdr`. Default: the larger of `--fdr` and 0.05

      --protein-fdr <PROTEIN_FDR>
          Protein-group q-value cutoff, with rescoring. Protein groups and their q-values (`<stem>.protein_groups.tsv`, picked target-decoy competition per protein family) are written either way; with this cutoff the filtered TSV keeps only PSMs whose peptide counts for a group at or below it, and the proteoform table only families of such groups. Default: no protein filter. With `--mbr` and `--output-parquet`, the QPX pg and feature views keep the groups at or below it, 0.01 unless given

      --predict <PREDICT>
          Predicted-spectrum and retention-time features added to the PIN for Percolator, as a comma-separated list: `rt` = retention-time deviation from the bundled andes-rt model; `ms2` = similarity of the observed spectrum to AlphaPeptDeep's predicted fragment intensities; `peptdeep-rt` / `deeplc-rt` = retention-time deviation from AlphaPeptDeep / DeepLC; `none` = no predicted features. Predicted RT is calibrated to observed RT per input file. `ms2`, `peptdeep-rt` and `deeplc-rt` load exported ONNX models from `--predictor-models` and fail at start-up when a model file is missing. Default `rt`

          Possible values:
          - rt:           Retention-time deviation from the bundled andes-rt model
          - ms2:          Spectral similarity to the bundled andes-ms2 model's predicted fragment intensities
          - peptdeep-ms2: Spectral similarity to AlphaPeptDeep's predicted fragment intensities
          - peptdeep-rt:  Retention-time deviation from AlphaPeptDeep
          - deeplc-rt:    Retention-time deviation from DeepLC
          - none:         No predicted features

          [default: rt]

      --predictor-models <PREDICTOR_MODELS>
          Directory with the exported third-party predictor models that `--predict ms2 / peptdeep-rt / deeplc-rt` load: `peptdeep_mods.json`, `peptdeep_{ms2,rt}_dynamic.{json,onnx}` and `deeplc_rt.{json,onnx}` (written by the onnx-infer export scripts)

      --tmt <PLEX>
          Isobaric reporter-ion quantification of the confident PSMs with this labelling kit: tmt6, tmt10, tmt11, tmt16, tmt18, tmt32, tmt35, itraq4 or itraq8. Writes `<stem>.tmt.parquet` and, with `--output-parquet`, the QPX `quantms.feature.parquet`. Combine with `--rescore` so only PSMs at q <= --fdr are quantified

      --tmt-level <TMT_LEVEL>
          MS level the reporter ions are read from: 2 (the identified MS2) or 3 (the SPS-MS3 scan whose precursor references that MS2; mzML and Thermo `.raw`). Default: 3 when the MS2 is low-resolution, cannot separate the plex's channels and the MS3 scans carry reporters (SPS-MS3); else 2

      --tmt-tol <TMT_TOL>
          Reporter-ion m/z tolerance, e.g. `20ppm` or `0.003da`. Default: 20 ppm (10 ppm for tmt32/tmt35) on high-resolution MS2 and at `--tmt-level 3` (SPS-MS3 reporters are read in the Orbitrap), 0.3 Da on ion-trap MS2. A window that reaches half the spacing of the kit's closest channels is refused

      --tmt-correction <FILE>
          Isotope impurity matrix of the kit lot (quantms text form: one line per channel, `-2/-1/+1/+2` percentages, eight columns for TMTpro 16/18). Corrected intensities are solved by non-negative least squares; the raw values are kept alongside. Not supported for tmt32/tmt35. Default: no correction

      --tmt-min-purity <TMT_MIN_PURITY>
          Quantification gate: PSMs whose precursor isolation purity (share of the MS1 isolation window that belongs to the precursor) is below this fail the gate: `tmt.parquet` and the QPX parquet keep them with `quant_weight` 0 (`quant_gate_passed` false in `tmt.parquet`). 0 turns the criterion off

          [default: 0.7]

      --tmt-max-pep <TMT_MAX_PEP>
          Quantification gate: PSMs whose Percolator PEP is above this fail the gate (kept in `tmt.parquet` with `quant_weight` 0). Needs `--rescore` or `--rescore-native`. 1 turns the criterion off

          [default: 0.05]

      --tmt-min-sn <TMT_MIN_SN>
          Quantification gate: PSMs whose summed reporter signal-to-noise is below this fail the gate (kept in `tmt.parquet` with `quant_weight` 0). Applies only where the reporter scan records noise (Thermo `.raw`, or mzML converted with noise arrays); other PSMs are not held to it. 0 turns the criterion off

          [default: 0]

      --tmt-unmix
          Estimate each MS2 scan's co-isolation interference and write the reporter intensities with it removed, as an extra `unmix_` channel block and an `interference` column in `tmt.parquet` (the existing columns are unchanged). A per-run regression explains each scan's summed reporter signal by the precursor's, the co-isolated ions' and the sub-threshold ion current in the isolation window of the bordering MS1 scans; the interference is removed with the run's mean reporter profile. High-resolution MS2 reporters only (`--tmt-level 2`)

      --lfq
          Label-free MS1 quantification of the confident precursors: isotope chromatograms are extracted around each identified peptidoform's retention time and integrated. Writes `<stem>.lfq.parquet` and, with `--output-parquet`, the QPX `quantms.feature.parquet`. mzML and Thermo `.raw` input

      --lfq-tol <LFQ_TOL>
          MS1 m/z tolerance of the isotope chromatograms, e.g. `10ppm`. Default 10 ppm

      --lfq-rt-window <LFQ_RT_WINDOW>
          Retention-time half-window (seconds) around the identifying PSM in which the chromatographic peak is searched. Default 60

          [default: 60]

      --lfq-gaussian-width <LFQ_GAUSSIAN_WIDTH>
          Experimental Gaussian width in seconds (eight sigma) for LFQ peak detection. Areas still use raw signal. Omit for five-scan Savitzky–Golay smoothing. Validate feature-q coverage for the acquisition before using this setting

      --lfq-min-cosine <LFQ_MIN_COSINE>
          Minimum cosine similarity between the observed and theoretical isotope envelope for a feature to be `accepted` in `lfq.parquet` (which keeps every feature with its cosine). Default 0.7

          [default: 0.7]

      --lfq-feature-fdr <LFQ_FEATURE_FDR>
          Feature-level FDR for `accepted` in `lfq.parquet`, from a target/decoy competition of each feature against a twin extracted 11 Th above it. Default 0.05

          [default: 0.05]

      --quant-dir <DIR>
          Directory for the per-run artifacts of multi-run quantification: for each input file `<stem>.ms1.parquet` (its MS1 scans, all FAIMS voltages) and `<stem>.quant.parquet` (every rank-1 PSM, targets and decoys, with no FDR filter; under `--chimeric` also the best PSM of each co-isolated precursor). Implies MS1 capture; same inputs as `--lfq` (mzML or Thermo `.raw`; not with MGF, `.d` or `--glyco`)

      --mbr
          Match-between-runs label-free quantification across the inputs (two or more; needs `--lfq` and `--rescore` or `--rescore-native`). After the per-run quantification, builds the precursor library, aligns retention times across runs, measures every library precursor in every run and writes `<base>.mbr.parquet` and `<base>.mbr_validation.parquet` (with `--output-parquet`, `quantms.feature.parquet` holds these rows instead of the per-run features, without the below-threshold transfers). Uses `--quant-dir` for the per-run artifacts, or a temporary directory that is removed afterwards. With `--rescore` (Percolator), same result as `andes quant library`, `extract` and `finalize` on the same files and Percolator results; the native rescorer's scores have no file input to `quant library`

      --mbr-library-fdr <MBR_LIBRARY_FDR>
          Internal library entry gate (precursor-level), not a reported identification FDR: precursors whose best-PSM target/decoy q-value is at most this enter the match-between-runs library. Default 0.01

          [default: 0.01]

      --quant-feature-fdr <QUANT_FEATURE_FDR>
          Identified-row quality q-value: an identified (precursor, run) whose MS1 feature has a quality q-value against its decoys above this (or none) is reported as `identified_below_threshold` and left out of `quantms.feature.parquet`. An internal quant-quality q-value, not an identification FDR. `off` (the default) reports every identified row and keeps `quant_q` as an annotation

          [default: off]

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

andes inference --help

Protein groups with picked protein-level q-values over the rescored PSMs of one or more runs. Writes the QPX protein-group view

Usage: andes inference [OPTIONS] --psms <TSV>... --decoy-psms <TSV>... --database <FILE> --output <PREFIX>

Options:
      --psms <TSV>...
          Percolator target PSM results (`--results-psms`), one or more files. Their scores must be on one scale: one Percolator run over all the runs (one file, or one file per run from that run)
      --decoy-psms <TSV>...
          Percolator decoy PSM results (`--decoy-results-psms`) of the same Percolator run(s)
      --database <FILE>
          The protein database the PSMs were searched against, with the same options as the search (`--annotations`, `--uniprot-*`, `--knockoffs`, `--enzyme`, decoy affixes), so protein families, knockoff entries and decoy pairs are the search's
      --uniprot-variants

      --uniprot-isoforms

      --uniprot-chains

      --uniprot-evidence <UNIPROT_EVIDENCE>
          [default: experimental]
      --annotations <FILE>

      --knockoffs <KNOCKOFFS>
          [default: 4]
      --enzyme <ENZYME>
          [default: trypsin]
      --decoy-prefix <DECOY_PREFIX>
          [default: XXX_]
      --decoy-suffix <DECOY_SUFFIX>

      --fdr <FDR>
          PSM q-value cutoff for the PSMs and peptides counted per group [default: 0.01]
      --proteoform-fdr <PROTEOFORM_FDR>
          PSM q-value cutoff for proteoform claims (variant-class PSMs). Default: the larger of `--fdr` and 0.05
      --protein-fdr <PROTEIN_FDR>
          Protein q-value cutoff: the pg view keeps the target and decoy groups at or below it (the decoys show the FDR at the cut), and `quant finalize`'s feature view the features of those target groups. 1 keeps every group. Default 0.01 [default: 0.01]
      --runs <NAME>...
          Run names for the groups' `grouped_runs`. Default: one per `--psms` file, named after the file
  -o, --output <PREFIX>
          Output prefix: writes `<PREFIX>.pg.parquet` (the QPX protein-group view)
  -h, --help
          Print help

andes quant --help

Match-between-runs quantification stages over a `--quant-dir`: `library` (global), `extract` (per run), `finalize` (global). The same result as `andes search --lfq --mbr` on the same inputs

Usage: andes quant <COMMAND>

Commands:
  library   Build the precursor library and the joint retention-time alignment from every run's PSM table and the Percolator results of those PSMs. Writes `library.parquet` and `alignment.parquet` into the quant directory
  extract   Measure every library precursor in one run from its MS1 table. Writes `<stem>.extract.parquet`
  finalize  Transfer q-values and the match-between-runs tables from every run's extract table. Writes `<base>.mbr.parquet` and `<base>.mbr_validation.parquet`
  help      Print this message or the help of the given subcommand(s)

Options:
  -h, --help  Print help

andes quant extract --help

Measure every library precursor in one run from its MS1 table. Writes `<stem>.extract.parquet`

Usage: andes quant extract [OPTIONS] --quant-dir <DIR> --run <STEM>

Options:
      --quant-dir <DIR>    Directory with the library and the run's `<stem>.ms1.parquet`
      --run <STEM>         Stem of the run to measure
      --lfq-tol <LFQ_TOL>  MS1 m/z tolerance of the template fit, in ppm (e.g. `10ppm`). Use the `--lfq-tol` of the search for the same result as `--mbr`. Default 10 ppm
      --threads <THREADS>  Worker threads. Default: logical CPU count
  -h, --help               Print help

andes quant finalize --help

Transfer q-values and the match-between-runs tables from every run's extract table. Writes `<base>.mbr.parquet` and `<base>.mbr_validation.parquet`

Usage: andes quant finalize [OPTIONS] --quant-dir <DIR> --output <BASE>

Options:
      --quant-dir <DIR>
          Directory with the library and every run's `<stem>.extract.parquet`
  -o, --output <BASE>
          Output base: writes `<base>.mbr.parquet` and `<base>.mbr_validation.parquet`
      --quant-feature-fdr <QUANT_FEATURE_FDR>
          Identified-row quality q-value: an identified (precursor, run) whose MS1 feature has a quality q-value against its decoys above this (or none) is reported as `identified_below_threshold` and left out of `quantms.feature.parquet`. An internal quant-quality q-value, not an identification FDR. `off` (the default) reports every identified row and keeps `quant_q` as an annotation [default: off]
      --output-parquet <DIR>
          Also write the QPX views into this directory: the protein groups of every run's PSMs as `quantms.pg.parquet`, and the features of the groups at `--protein-fdr` as `quantms.feature.parquet`, each with its group. Needs `--database`, `--psms` and `--decoy-psms`
      --database <FILE>
          The protein database the PSMs were searched against, with the search's database options (as `andes inference`)
      --psms <TSV>...
          Percolator target PSM results of every run (as `andes inference`): one file from one Percolator run over all the runs, or one per run
      --decoy-psms <TSV>...
          Percolator decoy PSM results of the same Percolator run(s)
      --uniprot-variants

      --uniprot-isoforms

      --uniprot-chains

      --uniprot-evidence <UNIPROT_EVIDENCE>
          [default: experimental]
      --annotations <FILE>

      --knockoffs <KNOCKOFFS>
          [default: 4]
      --enzyme <ENZYME>
          [default: trypsin]
      --decoy-prefix <DECOY_PREFIX>
          [default: XXX_]
      --decoy-suffix <DECOY_SUFFIX>

      --fdr <FDR>
          PSM q-value cutoff for the PSMs and peptides counted per group [default: 0.01]
      --proteoform-fdr <PROTEOFORM_FDR>
          PSM q-value cutoff for proteoform claims (variant-class PSMs). Default: the larger of `--fdr` and 0.05
      --protein-fdr <PROTEIN_FDR>
          Protein q-value cutoff: the pg view keeps the target and decoy groups at or below it (the decoys show the FDR at the cut), and `quant finalize`'s feature view the features of those target groups. 1 keeps every group. Default 0.01 [default: 0.01]
      --temp-dir <DIR>
          Directory of the temporary tables (removed at the end), e.g. a local disk. Default: the directory of the output base
      --threads <THREADS>
          Worker threads. Default: logical CPU count
  -h, --help
          Print help

andes quant library --help

Build the precursor library and the joint retention-time alignment from every run's PSM table and the Percolator results of those PSMs. Writes `library.parquet` and `alignment.parquet` into the quant directory

Usage: andes quant library [OPTIONS] --quant-dir <DIR> --psms <TSV|STEM=TSV>... --decoy-psms <TSV|STEM=TSV>...

Options:
      --quant-dir <DIR>
          Directory with each run's `<stem>.quant.parquet` and `<stem>.ms1.parquet`
      --runs <STEM>...
          Run stems to include. Default: every `<stem>.quant.parquet` in the directory. A run whose PSM or MS1 table is missing is an error
      --psms <TSV|STEM=TSV>...
          Percolator target PSM results (`--results-psms`), with its `score` column: one file over every run (SpecIds must be distinct across runs), or `<stem>=<file>` once per run, repeated. PSMs are joined to the run tables on (run, SpecId)
      --decoy-psms <TSV|STEM=TSV>...
          Percolator decoy PSM results (`--decoy-results-psms`), in the same form as `--psms`
      --mbr-library-fdr <MBR_LIBRARY_FDR>
          Internal library entry gate (precursor-level), not a reported identification FDR. Default 0.01 [default: 0.01]
      --quant-fdr <QUANT_FDR>
          PSM q-value (the Percolator `q-value` column) at or below which a target PSM identifies its precursor in its run: those runs are the precursor's donors and get identified rows; the other runs get transfers. Use the search's `--quant-fdr` (default `--fdr`) for the same result as `--mbr`. Default 0.01 [default: 0.01]
      --pep <PEP>
          PEP cap (the Percolator `posterior_error_prob` column) of the donor PSMs, applied in addition to `--quant-fdr`: a target PSM identifies its precursor only when it passes both. Use the search's `--pep` for the same result as `--mbr`. Default: no PEP cap
      --threads <THREADS>
          Worker threads. Default: logical CPU count
  -h, --help
          Print help