Contributing to popgenVCF
Source:CONTRIBUTING.md
Thank you for helping improve popgenVCF. Contributions must align with the Project Charter: scientific correctness, reproducibility, transparency, and publication-ready outputs take priority over feature count.
Before starting
For substantial scientific modules or public-interface changes, open an issue describing:
- the scientific question and estimator;
- assumptions and expected interpretation;
- proposed independent validation;
- expected inputs, outputs, and dependencies;
- compatibility and computational impact.
Small fixes and documentation improvements may go directly to a focused pull request.
Development workflow
- Create a focused branch from
main. - Keep the change coherent and avoid unrelated formatting churn.
- Add or update tests for every behavioral change.
- Add independent numerical validation for new or changed estimators.
- Update documentation,
NEWS.md, and generated methods text when semantics change. - Run package checks and relevant validation suites.
- Open a pull request using the checklist below.
See the Development Guide and Style Guide.
Required local checks
core <- popgenVCF::run_scientific_validation(
integration = TRUE,
threads = 4
)
structure <- popgenVCF::run_population_structure_validation(
integration = TRUE
)
stopifnot(core$passed, structure$passed)Run the GHCR container smoke test or relevant external-engine test when the change affects containers, system dependencies, or external adapters.
Scientific changes
A statistical change must document:
- exact estimator and methodological references;
- differences from existing implementations;
- sample and marker ordering behavior;
- missing-data behavior;
- random seeds and replicate strategy;
- comparison metric and justified tolerance;
- validation result and reference-tool version.
Do not loosen tolerances solely to make a test pass. Do not describe different estimators as equivalent when they target different quantities.
Output requirements
Canonical outputs remain machine-readable. Publication tables, figures, reports, methods, and captions are derived products generated from canonical results.
New complete modules should follow the artifact contract described in Architecture.
Dependency policy
- Do not install packages inside analysis functions.
- Keep optional dependencies optional unless the selected analysis requires them.
- Record external executable versions and command lines.
- Avoid adding heavy dependencies when a maintained existing dependency or clear base-R implementation is sufficient.
- Update Conda/container definitions when system requirements change.