Pasture-based mother-cow sensor data pipeline. Sister project to DigiMuh (stall-based dairy); DaVaSus is the pasture counterpart with smaXtec rumen boluses, eShepherd virtual-fence collars, an ATB Potsdam weather station, and operator-driven allocation events.
The scientific aim is to compare circadian zeitgebers between human-paced stall life and pasture life — quantifying how much of the rumen-temperature rhythm is locked to the sun versus to the allocation schedule.
Pre-alpha — ingestion pipeline under construction.
git clone <url>
cd DaVaSus
# conda (recommended)
conda env create -f environment.yml
conda activate davasus
# or pip
pip install -e ".[dev]"# Smoke test with the first 100k rows of the merged file
davasus-ingest \
--merged /media/geuba03p/DATADRIVE1/DaVaSus/merged_eshepherd_smaxtec_weather_data_2024.csv \
--weather /media/geuba03p/DATADRIVE1/DaVaSus/Weather_20240221to20241218.csv \
--db cow_test.db \
--test-n 100000
# Full ingestion
davasus-ingest \
--merged /media/geuba03p/DATADRIVE1/DaVaSus/merged_eshepherd_smaxtec_weather_data_2024.csv \
--weather /media/geuba03p/DATADRIVE1/DaVaSus/Weather_20240221to20241218.csv \
--db cow.dbDaVaSus/
├── src/davasus/ # package
│ ├── schema.py # CREATE TABLE statements (single source of truth)
│ ├── db.py # Database connection + dim-table helpers
│ ├── ingest_weather.py
│ ├── ingest_merged.py
│ └── cli.py # davasus-ingest entry point
├── tests/ # pytest, synthetic CSV fixtures
├── docs/ # database structure, column dictionary, pipeline
├── figures/ # generated figures (PNG + editable-text SVG + CSV); gitignored
├── scripts/ # ops scripts (run inside the repo)
└── .github/workflows/ # CI (pytest, ruff)
docs/database_structure.md— full schemadocs/column_dictionary.md— column-level data dictionarydocs/pipeline.md— end-to-end pipeline overview
MIT