all: install data train eval city_distances.csv: generate_data.py @echo "Generating distance data..." @bash -c 'time python generate_data.py --country US --workers 8 --chunk-size 4200' @echo "Calculating range of generated data..." @cat city_distances.csv | tail -n +2 | sort -t',' -k3n | head -n1 @cat city_distances.csv | tail -n +2 | sort -t',' -k3nr | head -n1 data: city_distances.csv train: check train.py @echo "Training embeddings..." @bash -c 'time python train.py' eval: check eval.py @echo "Evaluating trained model..." @bash -c 'time python eval.py' lint: @echo "Auto-linting files and performing final style checks..." @isort --profile=black . @black . @flake8 --max-line-length=88 --ignore E203 . check: lint @echo "Checking for unstaged or untracked changes..." @git diff-index --quiet HEAD -- || { echo "Unstaged or untracked changes detected!"; exit 1; } clean: @echo "Removing outputs/ and checkpoints/ directories" @rm -rf output/ @rm -rf checkpoints/ compress: plots/progress_12474_sm.png plots/progress_12474_sm.png: plots/progress_12474.png @convert -resize 33% plots/progress_12474.png progress_sample.png install: .requirements_installed .requirements_installed: requirements.txt pip install -r requirements.txt @echo "installed requirements" > .requirements_installed .PHONY: data train eval lint check clean all