45 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# IPYNB to PY
 | 
						|
IPYNBS = $(wildcard *.ipynb)
 | 
						|
PYS = $(patsubst %.ipynb, %.py, $(IPYNBS))
 | 
						|
 | 
						|
# CSV to PDF
 | 
						|
HIST_DIRS = $(wildcard *_hist/)
 | 
						|
HIST_PDFS := $(foreach dir, $(HIST_DIRS), $(dir)legend.pdf)
 | 
						|
 | 
						|
MEDIAN_DIRS = $(wildcard *_median/)
 | 
						|
MEDIAN_PDFS := $(foreach dir, $(MEDIAN_DIRS), $(dir)legend.pdf)
 | 
						|
 | 
						|
NODETYPE_DIRS = $(wildcard nodetype_*/)
 | 
						|
NODETYPE_PDFS := $(foreach dir, $(NODETYPE_DIRS), $(dir)*legend.pdf)
 | 
						|
 | 
						|
all: $(PYS) $(HIST_PDFS) $(MEDIAN_PDFS) $(NODETYPE_PDFS)
 | 
						|
 | 
						|
%.py: %.ipynb 
 | 
						|
	jupyter nbconvert --to script $< 
 | 
						|
	chmod u+x $@
 | 
						|
 | 
						|
.SECONDEXPANSION:
 | 
						|
$(HIST_PDFS): $$(wildcard $$(dir $$@)test*/*.csv) $$(wildcard $$(dir $$@)*.json) plot_histograms.py
 | 
						|
	./plot_histograms.py $(word 1,$(subst /, ,$@))
 | 
						|
 | 
						|
$(MEDIAN_PDFS): $$(wildcard $$(dir $$@)test*/shift_*/*.csv) $$(wildcard $$(dir $$@)*.json) plot_medians.py
 | 
						|
	./plot_medians.py $(word 1,$(subst /, ,$@))
 | 
						|
 | 
						|
$(NODETYPE_PDFS): $$(wildcard $$(dir $$@)*/*.csv) $$(wildcard $$(dir $$@)*.json) plot_nodetypes.py 
 | 
						|
	# This rather lengthy expression is necessary to make sure we clean up our csv files, but do not break
 | 
						|
	# them in case they were already cleand up
 | 
						|
	#
 | 
						|
	# It is not possible to put everything in one line without bash complaining about the ARG limit. The ARG
 | 
						|
	# limit is also the reason the second line is very "compact". Do not remove the second awk statement that
 | 
						|
	# looks for #s. Since symbolic links are allowed, files will _always_ be touched.
 | 
						|
	#
 | 
						|
	$(foreach f, $(subst \ , ,$^), if [[ "$(f)" == *".csv" && "$$(head -1 $(f) | awk -F\, '{print NF-1}')" -gt "1" ]]; then cut -d, -f3,4 $(f) > temp && mv temp $(f); fi;)
 | 
						|
	$(foreach f, $(subst \ , ,$^), if [[ "$(f)" == *"sv" && "$$(head -1 $(f)|awk -F\# '{print NF-1}')" -eq "0" ]]; then sed '0,/offs/s/^offs/#offs/' $(f) > t && mv t $(f); fi;)
 | 
						|
	./plot_nodetypes.py $(word 1,$(subst /, ,$@)) 
 | 
						|
 | 
						|
clean: 
 | 
						|
	rm -f *.py
 | 
						|
	rm -f */*.pdf
 | 
						|
 | 
						|
.PHONY: clean
 |