CSUBST Validation Parity
Overview
Run CSUBST validation in isolated temp directories, compare outputs deterministically, and report runtime and peak RAM with reproducible evidence.
Workflow
- •Create an isolated benchmark directory under
/tmp. - •Copy only required inputs into that directory.
- •Prefer precomputed IQ-TREE outputs for routine benchmark runs unless the user explicitly asks for fresh IQ-TREE execution.
- •Execute CSUBST from inside the temp directory to avoid polluting the repository root with generated files.
- •Measure runtime and peak RAM with
/usr/bin/time -l -p. - •If peak RAM cannot be collected because of sandbox restrictions, rerun with escalation.
- •Compare deterministic outputs with checksums first.
- •Compare table-level parity with
scripts/compare_tsv_parity.pyand explicitly ignore known runtime columns such aselapsed_sec. - •Report exact file paths, hashes, and any column-level differences.
Frequent Failure Points
- •Writing outputs in the repository root by mistake:
- •Always
cdinto the temp run directory before invokingcsubst/csubst.
- •Always
- •Reporting runtime without peak RAM:
- •Use
/usr/bin/time -l -pand include both elapsed and peak memory footprint.
- •Use
- •Calling a run "identical" while ignoring hidden table drift:
- •Hash key outputs and run table-level parity checks.
- •Comparing runs that use different intermediates:
- •Keep IQ-TREE intermediates identical unless the goal is explicitly to test fresh inference.
Resources
- •Read
references/validation-checklist.mdfor command templates and reporting format. - •Use
scripts/compare_tsv_parity.pyfor numeric and categorical TSV parity checks.