Problem
Our current repository layout includes several large reference datasets committed directly inside holodeck/data/. This introduces significant technical friction and data-compliance challenges.
1. Technical Friction & Git Bloat
Because Git tracks history permanently, storing binary formats (like .hdf5, .npz, and .tar.gz) breaks delta compression. Every modification forces Git to store a fresh copy of the asset.
You can reproduce and audit this bloat yourself using the following commands:
- Check the active workspace size for data and dotfiles:
du -sh * .[^.]* | sort -rh
- Verify the heaviest historical objects packing down the
.git folder:
git verify-pack -v .git/objects/pack/pack-*.idx \
| grep blob \
| sort -k3 -nr \
| head -n 10 \
| while read -r hash type size size_pack offset; do \
file=$(git rev-list --objects --all | grep "$hash" | awk '{print $2}'); \
echo "$((size_pack / 1024 / 1024)) MB \t (uncompressed: $((size / 1024 / 1024)) MB) \t $file"; \
done
Result: The local directory contains a little under 200 MB of active data (bad), but the historical .git/objects/pack binaries take up over 700 MB of redundant space (terrible) due to old snapshots of these files (e.g., multiple copies of 67 MB TNG HDF5 logs).
2. Licensing & Authorship Compliance
Almost all of these reference data are the product of external collaborations (such as IllustrisTNG). We don't own the copyright to these data and papers and can't distribute them in this git repo maybe at all, but definitely not under an MIT license. It also implies our authorship.
Proposed Strategy
We can decouple our functional code logic from external scientific data products
- Purge History: Permanently scrub these heavy data paths out of the Git ledger using
git-filter-repo --path holodeck/data/.
- Ignore: Add
holodeck/data/ straight to the .gitignore.
- Automate: Add a native fetching helper (e.g., pixi task
pixi run download-data in pyproject.toml or make a download-holodeck-auxdata.sh script) so users and contributors can download the active data directly to their local environments only when needed.
Items Up for Discussion
- Storage Hosting: Where should we house these data? Do we use a NANOGrav Google Drive, institutional server, or GitLab Pages? Crucially, do we have explicit permission from the original creators to mirror and host copies of these specific datasets publicly?
- Data Retations: Do we actively need all of these data from our core simulation runs or current unit testing suites, or can some of these legacy assets be retired entirely?
Please share your thoughts on access requirements and hosting setups below.
(This issue was brought up by a comment by @scottransom on slack. I investigated with the help of Google Gemini 3.5 Flash, confirmed my proposed solution with the LLM, and had the LLM write 99% of the above text.)
Problem
Our current repository layout includes several large reference datasets committed directly inside
holodeck/data/. This introduces significant technical friction and data-compliance challenges.1. Technical Friction & Git Bloat
Because Git tracks history permanently, storing binary formats (like
.hdf5,.npz, and.tar.gz) breaks delta compression. Every modification forces Git to store a fresh copy of the asset.You can reproduce and audit this bloat yourself using the following commands:
.gitfolder:Result: The local directory contains a little under 200 MB of active data (bad), but the historical
.git/objects/packbinaries take up over 700 MB of redundant space (terrible) due to old snapshots of these files (e.g., multiple copies of 67 MB TNG HDF5 logs).2. Licensing & Authorship Compliance
Almost all of these reference data are the product of external collaborations (such as IllustrisTNG). We don't own the copyright to these data and papers and can't distribute them in this git repo maybe at all, but definitely not under an MIT license. It also implies our authorship.
Proposed Strategy
We can decouple our functional code logic from external scientific data products
git-filter-repo --path holodeck/data/.holodeck/data/straight to the.gitignore.pixi run download-datainpyproject.tomlor make adownload-holodeck-auxdata.shscript) so users and contributors can download the active data directly to their local environments only when needed.Items Up for Discussion
Please share your thoughts on access requirements and hosting setups below.
(This issue was brought up by a comment by @scottransom on slack. I investigated with the help of Google Gemini 3.5 Flash, confirmed my proposed solution with the LLM, and had the LLM write 99% of the above text.)