diff --git a/Makefile b/Makefile index 9589654..ad49376 100644 --- a/Makefile +++ b/Makefile @@ -1,41 +1,58 @@ .ONESHELL: SHELL = /bin/bash -.PHONY: help clean environment kernel post-render data +.PHONY: help clean environment kernel teardown post-render data + YML = $(wildcard notebooks/*.yml) QMD = $(wildcard chapters/*.qmd) REQ = $(basename $(notdir $(YML))) +BASENAME = $(CURDIR) + +CONDA_ACTIVATE = source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate CONDA_ENV_DIR := $(foreach i,$(REQ),$(shell conda info --base)/envs/$(i)) KERNEL_DIR := $(foreach i,$(REQ),$(shell jupyter --data-dir)/kernels/$(i)) -CONDA_ACTIVATE = source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate help: - @echo "make clean" - @echo " clean all jupyter checkpoints" - @echo "make environment" - @echo " create a conda environment" - @echo "make kernel" - @echo " make ipykernel based on conda lock file" + @echo "Makefile for setting up environment, kernel, and pulling notebooks" + @echo "" + @echo "Usage:" + @echo " make environment - Create Conda environments" + @echo " make kernel - Create Conda environments and Jupyter kernels" + @echo " " + @echo " make teardown - Remove Conda environments and Jupyter kernels" + @echo " make clean - Removes ipynb_checkpoints" + @echo " make help - Display this help message" clean: - rm --force --recursive .ipynb_checkpoints/ - for i in $(REQ); do conda remove -n $$i --all -y ; jupyter kernelspec uninstall -y $$i ; done + rm --force --recursive .ipynb_checkpoints/ **/.ipynb_checkpoints/ _book/ \ + _freeze/ .quarto/ + +teardown: + $(foreach f, $(REQ), \ + $(CONDA_ACTIVATE) $(f); \ + jupyter kernelspec uninstall -y $(f); \ + conda deactivate; \ + conda remove -n $(f) --all -y ; \ + conda deactivate; ) -$(CONDA_ENV_DIR): - for i in $(YML); do conda env create -f $$i; done +$(CONDA_ENV_DIR): $(YML) + - conda update -n base -c conda-forge conda -y + $(foreach f, $^, conda env create --file $(f); ) environment: $(CONDA_ENV_DIR) @echo -e "conda environments are ready." $(KERNEL_DIR): $(CONDA_ENV_DIR) - pip install --upgrade pip + - pip install --upgrade pip pip install jupyter - for i in $(REQ); do $(CONDA_ACTIVATE) $$i ; python -m ipykernel install --user --name $$i --display-name $$i ; conda deactivate; done + $(foreach f, $(REQ), \ + $(CONDA_ACTIVATE) $(f); \ + python -m ipykernel install --user --name $(f) --display-name $(f); \ + conda deactivate; ) kernel: $(KERNEL_DIR) @echo -e "conda jupyter kernel is ready." post-render: - for i in $(QMD); do quarto convert $$i; done - mv chapters/*.ipynb notebooks/ >/dev/null 2>&1 - for f in chapters/*.quarto_ipynb ; do mv -- "$f" "${f%.quarto_ipynb}.ipynb" >/dev/null 2>&1; done cp Makefile notebooks/ diff --git a/_toc.yml b/_toc.yml index c429fcc..90b7723 100644 --- a/_toc.yml +++ b/_toc.yml @@ -3,13 +3,4 @@ parts: - caption: Preamble chapters: - file: notebooks/how-to-cite -- caption: Classification - chapters: - - file: notebooks/01_classification -- caption: Floodmapping - chapters: - - file: notebooks/02_floodmapping -- caption: References - chapters: - - file: notebooks/references root: README diff --git a/notebooks/01_classification.yml b/notebooks/01_classification.yml index 0715a82..73b8806 100644 --- a/notebooks/01_classification.yml +++ b/notebooks/01_classification.yml @@ -1,25 +1,23 @@ name: 01_classification channels: - conda-forge - - defaults dependencies: + - python=3.12 + - pip + - mamba + - jupyter - cmcrameri - dask - geopandas - - ipykernel - - jupyter - - mamba - matplotlib - nbformat - numpy - odc-stac - openssl - - python==3.10 - rasterio - rioxarray - scikit-learn - seaborn - stackstac - xarray - - pip: - - pystac-client + - pystac-client \ No newline at end of file diff --git a/notebooks/02_floodmapping.yml b/notebooks/02_floodmapping.yml index c0aa697..f2d39ae 100644 --- a/notebooks/02_floodmapping.yml +++ b/notebooks/02_floodmapping.yml @@ -2,7 +2,7 @@ name: 02_floodmapping channels: - conda-forge dependencies: - - python=3.10 + - python=3.12 - pip - mamba - jupyter diff --git a/notebooks/Makefile b/notebooks/Makefile index 9589654..ad49376 100644 --- a/notebooks/Makefile +++ b/notebooks/Makefile @@ -1,41 +1,58 @@ .ONESHELL: SHELL = /bin/bash -.PHONY: help clean environment kernel post-render data +.PHONY: help clean environment kernel teardown post-render data + YML = $(wildcard notebooks/*.yml) QMD = $(wildcard chapters/*.qmd) REQ = $(basename $(notdir $(YML))) +BASENAME = $(CURDIR) + +CONDA_ACTIVATE = source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate CONDA_ENV_DIR := $(foreach i,$(REQ),$(shell conda info --base)/envs/$(i)) KERNEL_DIR := $(foreach i,$(REQ),$(shell jupyter --data-dir)/kernels/$(i)) -CONDA_ACTIVATE = source $$(conda info --base)/etc/profile.d/conda.sh ; conda activate ; conda activate help: - @echo "make clean" - @echo " clean all jupyter checkpoints" - @echo "make environment" - @echo " create a conda environment" - @echo "make kernel" - @echo " make ipykernel based on conda lock file" + @echo "Makefile for setting up environment, kernel, and pulling notebooks" + @echo "" + @echo "Usage:" + @echo " make environment - Create Conda environments" + @echo " make kernel - Create Conda environments and Jupyter kernels" + @echo " " + @echo " make teardown - Remove Conda environments and Jupyter kernels" + @echo " make clean - Removes ipynb_checkpoints" + @echo " make help - Display this help message" clean: - rm --force --recursive .ipynb_checkpoints/ - for i in $(REQ); do conda remove -n $$i --all -y ; jupyter kernelspec uninstall -y $$i ; done + rm --force --recursive .ipynb_checkpoints/ **/.ipynb_checkpoints/ _book/ \ + _freeze/ .quarto/ + +teardown: + $(foreach f, $(REQ), \ + $(CONDA_ACTIVATE) $(f); \ + jupyter kernelspec uninstall -y $(f); \ + conda deactivate; \ + conda remove -n $(f) --all -y ; \ + conda deactivate; ) -$(CONDA_ENV_DIR): - for i in $(YML); do conda env create -f $$i; done +$(CONDA_ENV_DIR): $(YML) + - conda update -n base -c conda-forge conda -y + $(foreach f, $^, conda env create --file $(f); ) environment: $(CONDA_ENV_DIR) @echo -e "conda environments are ready." $(KERNEL_DIR): $(CONDA_ENV_DIR) - pip install --upgrade pip + - pip install --upgrade pip pip install jupyter - for i in $(REQ); do $(CONDA_ACTIVATE) $$i ; python -m ipykernel install --user --name $$i --display-name $$i ; conda deactivate; done + $(foreach f, $(REQ), \ + $(CONDA_ACTIVATE) $(f); \ + python -m ipykernel install --user --name $(f) --display-name $(f); \ + conda deactivate; ) kernel: $(KERNEL_DIR) @echo -e "conda jupyter kernel is ready." post-render: - for i in $(QMD); do quarto convert $$i; done - mv chapters/*.ipynb notebooks/ >/dev/null 2>&1 - for f in chapters/*.quarto_ipynb ; do mv -- "$f" "${f%.quarto_ipynb}.ipynb" >/dev/null 2>&1; done cp Makefile notebooks/