.PHONY: clean config remaining

UNAME = $(shell uname)

ifeq ($(UNAME),Linux)
#PYTHON = /opt/modules/python/3.7/bin/python3.7
PYTHON = /usr/bin/python3
endif

ifeq ($(UNAME),Darwin)
PYTHON = /opt/local/bin/python3
R = /usr/local/bin/R
endif

# use -include to skip if config.mk is missing (no error)
-include config.mk

all:
	@if [ ! -f config.mk ]; then \
		$(MAKE) config; \
		$(MAKE) remaining; \
	else \
		$(MAKE) remaining; \
	fi

remaining: dirs val raw process entropy lfhf_rt kcoeff collate

config:
	test -f ./config.sh && ./config.sh

dirs:
	mkdir -p data
	mkdir -p data/raw
	mkdir -p data/tm
	mkdir -p data/kcoeff
	mkdir -p data/lfhf
	mkdir -p figs
	mkdir -p plots
	mkdir -p plots/tm
	mkdir -p plots/kcoeff
	mkdir -p plots/lfhf
	mkdir -p graphs

val:
	$(PYTHON) ./hdf5validation.py \
              --indir=$(INDIR) --outdir=$(RAWDIR) \
              --width=$(WIDTH) --height=$(HEIGHT) \
              --dist=$(DIST)

raw:
	$(PYTHON) ./hdf52csv.py \
              --indir=$(INDIR) --outdir=$(RAWDIR) \
              --width=$(WIDTH) --height=$(HEIGHT) \
              --dist=$(DIST)

process:
	$(PYTHON) ./filter.py \
              --smooth=$(SMOOTH) \
              --indir=$(RAWDIR) --imgdir=$(IMGDIR) \
              --dist=$(DIST) --screen=$(SCREEN) \
              --width=$(WIDTH) --height=$(HEIGHT) \
              --hertz=$(HERTZ) \
              --dfdegree=$(DFDEGREE) --dfwidth=$(DFWIDTH) \
              --xtiles=$(XTILES) --ytiles=$(YTILES) \
              --baselineT=$(BASELINE_T) --endT=$(END_T) \
              --vt=$(VT) \
              --aoidir=$(AOIDIR) --outdir=$(OUTDIR)

graph:
	$(PYTHON) ./graph.py \
              --smooth=$(SMOOTH) \
              --indir=$(RAWDIR) --imgdir=$(IMGDIR) \
              --dist=$(DIST) --screen=$(SCREEN) \
              --width=$(WIDTH) --height=$(HEIGHT) \
              --hertz=$(HERTZ) \
              --dfdegree=$(DFDEGREE) --dfwidth=$(DFWIDTH) \
              --xtiles=$(XTILES) --ytiles=$(YTILES) \
              --baselineT=$(BASELINE_T) --endT=$(END_T) \
              --vt=$(VT) \
              --aoidir=$(AOIDIR) --outdir=$(OUTDIR) \
              --pltdir=$(PLTDIR)

collate:
	$(PYTHON) ./collate-amfo.py --indir=$(OUTDIR) --expdir=$(DEMDIR)
	$(PYTHON) ./collate-fxtn.py --indir=$(OUTDIR) --expdir=$(DEMDIR)
	$(PYTHON) ./collate-fxtn-aois.py --indir=$(OUTDIR) --expdir=$(DEMDIR)
	$(PYTHON) ./collate-aois.py --indir=$(OUTDIR) --expdir=$(DEMDIR)
	$(PYTHON) ./collate-kcoeff.py --indir=$(KDIR) --expdir=$(DEMDIR)
	$(PYTHON) ./collate-entropy.py --indir=$(TMDIR) --expdir=$(DEMDIR)
	$(PYTHON) ./collate-lfhf_rt.py --indir=$(LFHFDIR) --expdir=$(DEMDIR)

entropy:
	$(PYTHON) ./compute_entropy.py --indir=$(OUTDIR) --outdir=$(TMDIR)

lfhf_rt:
	$(PYTHON) ./compute_lfhf_rt.py --indir=$(RAWDIR) --outdir=$(LFHFDIR)

# see NOTES
# -s 30       # skip offset (-s 1 means don't skip data)
# --hcut 50   # high cutoff frequency
# -e          # extend data (imputation)#
kcoeff:
	$(PYTHON) ./csv2kcoeff.py --indir $(OUTDIR) --outdir $(KDIR) \
                             -s 1 --normalize --hcut 16
#	$(PYTHON) ./csv2kcoeff.py --indir $(OUTDIR) --outdir $(KDIR) \
#                            -s 1 -e --normalize --hcut 16
#	$(PYTHON) ./csv2kcoeff.py --indir $(OUTDIR) --outdir $(KDIR) \
#                            -s 30 --hcut 50
#	$(PYTHON) ./csv2kcoeff.py --indir $(OUTDIR) --outdir $(KDIR) \
#                            -s 30 -e --normalize --hcut 50
#	$(PYTHON) ./csv2kcoeff.py --indir $(OUTDIR) --outdir $(KDIR) \
#                             -s 1 -e --hcut 5

stats:
	R --vanilla < wm.R > wm.out
#	R --vanilla --args $(XTILES) $(YTILES) < tm.R > tm.out
#	R --vanilla  < pICALH.R > pICALH.out

clean:
	rm -f *.pyc
	rm -f *.mk
	rm -rf __pycache__
	rm -rf figs
	rm -rf plots
	rm -rf data
	rm -rf graphs
	rm -f *.out
	rm -f *.Rout
	rm -f *.RData
	rm -f .RData
	rm -f .Rapp.history
