# Python
__pycache__/
*.pyc
.pytest_cache/
.venv/
build/
dist/
*.egg-info/

# Local scratch
/tmp
*.log
figures/
out/

# Held-out ground truth + generated/downloaded datasets must never be committed
data/**/groundtruth/
data/*/dev/
data/*/scoring/
gt/

# Pipeline runner scratch
.work/

# OSF dataset cache + any local token (secret — never commit)
.osfcache/
*osf*.txt
qsm-ci-osf.txt

# NIfTI volumes are build artifacts (datasets, and per-run viewer volumes) — never committed
*.nii
*.nii.gz

# local static-site serving symlink
web/results

# OS
.DS_Store
algorithms/_qsmxt/qsmxt
web/docs

# Compiled MATLAB artifacts (build locally; the binary ships in the MCR image, not git)
algorithms/*/recon
algorithms/*/run_recon.sh
algorithms/*/readme.txt
algorithms/*/mccExcludedFiles.log
algorithms/*/requiredMCRProducts.txt
algorithms/*/unresolvedSymbols.txt
algorithms/*/includedSupportPackages.txt
algorithms/*/buildresult.json
algorithms/*/nifti/
algorithms/*/medi/
algorithms/*/sti/
algorithms/*/sti_support/
# Compiled-MATLAB submissions ship as prebuilt+pushed GHCR images (the Dockerfile bakes a
# licensed mcc binary that CI cannot reproduce), so CI must PULL image: rather than build the
# Dockerfile. Keeping the Dockerfile out of the checkout makes pipeline.build_env pull it.
# (Dockerfile content is documented in each submission's BUILD.md.)
algorithms/matlab-*/Dockerfile
# New compiled-MATLAB submissions (clean names, not matlab-*) + IR2QSM (a baked pretrained checkpoint
# CI cannot reproduce — the authors' single-file Drive link is quota-blocked). Same rule: CI PULLs
# the pushed image, so keep their Dockerfiles out of the checkout.
algorithms/fansi/Dockerfile
algorithms/ndi/Dockerfile
algorithms/l1-qsm/Dockerfile
algorithms/wh-qsm/Dockerfile
algorithms/hd-qsm/Dockerfile
algorithms/ir2qsm/Dockerfile

# Large network weights are build-time deps (fetched at build), never committed.
algorithms/*/*.mat
algorithms/*/*.pth
algorithms/*/*.onnx
