-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
57 lines (51 loc) · 2.13 KB
/
Makefile
File metadata and controls
57 lines (51 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Can run: make runSampleMetadata make runSampleMetadata FILTER="EcoFoci"
# Find directories for different metadata types
SAMPLE_SUBDIRS := $(shell find projects/*/*/ -name "main.py" -exec dirname {} \; 2>/dev/null | sort)
EXPERIMENT_SUBDIRS := $(shell find runs/ -maxdepth 1 -type d ! -name runs 2>/dev/null | sort)
# Find config.yaml files in experiment subdirectories (relative to runs/ directory)
EXPERIMENT_CONFIG_FILES := $(shell cd runs && find . -maxdepth 2 -name "config.yaml" 2>/dev/null | sort)
# API rate limiting delay (in seconds)
API_DELAY := 10
# Optional filter parameter - can be set on command line
FILTER ?=
# Default target
.PHONY: all runSampleMetadata runExperimentMetadata validateSampleCSVs
all: runSampleMetadata runExperimentMetadata
# Run sample metadata projects
runSampleMetadata:
@echo "Running each cruise sample metadata..."
@if [ "$(FILTER)" != "" ]; then \
echo "Filtering for subdirectories containing: $(FILTER)"; \
filtered_dirs=$$(echo "$(SAMPLE_SUBDIRS)" | tr ' ' '\n' | grep "$(FILTER)"); \
if [ -z "$$filtered_dirs" ]; then \
echo "No directories found containing '$(FILTER)'"; \
exit 1; \
fi; \
for dir in $$filtered_dirs; do \
echo "-> Running $$dir/main.py"; \
cd $$dir && python main.py && cd - > /dev/null; \
echo " Waiting $(API_DELAY) seconds to avoid API rate limits..."; \
sleep $(API_DELAY); \
echo ""; \
done; \
else \
for dir in $(SAMPLE_SUBDIRS); do \
echo "-> Running $$dir/main.py"; \
cd $$dir && python main.py && cd - > /dev/null; \
echo " Waiting $(API_DELAY) seconds to avoid API rate limits..."; \
sleep $(API_DELAY); \
echo ""; \
done; \
fi
@echo "Sample metadata projects completed!"
# Run experiment metadata projects
runExperimentMetadata:
@echo "Running experiment metadata with different configs..."
@for config_file in $(EXPERIMENT_CONFIG_FILES); do \
echo "-> Running main.py with config $$config_file"; \
cd runs && python main.py "$$config_file" && cd - > /dev/null; \
echo " Waiting $(API_DELAY) seconds to avoid API rate limits..."; \
sleep $(API_DELAY); \
echo ""; \
done
@echo "Experiment metadata projects completed!"