diff --git a/cdbpr-env.yml b/cdbpr-env.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9479da223ffdad33be9bedb0814aef0d3aa90639
--- /dev/null
+++ b/cdbpr-env.yml
@@ -0,0 +1,202 @@
+name: cdbpr-env
+channels:
+  - anaconda
+  - pytorch
+  - defaults
+dependencies:
+  - _libgcc_mutex=0.1=main
+  - _openmp_mutex=5.1=1_gnu
+  - anyio=4.2.0=py311h06a4308_0
+  - argon2-cffi=21.3.0=pyhd3eb1b0_0
+  - argon2-cffi-bindings=21.2.0=py311h5eee18b_0
+  - asttokens=2.0.5=pyhd3eb1b0_0
+  - async-lru=2.0.4=py311h06a4308_0
+  - attrs=23.1.0=py311h06a4308_0
+  - babel=2.11.0=py311h06a4308_0
+  - beautifulsoup4=4.12.2=py311h06a4308_0
+  - blas=1.0=mkl
+  - bleach=4.1.0=pyhd3eb1b0_0
+  - bottleneck=1.3.5=py311hbed6279_0
+  - bzip2=1.0.8=h7b6447c_0
+  - ca-certificates=2023.12.12=h06a4308_0
+  - certifi=2024.2.2=py311h06a4308_0
+  - cffi=1.16.0=py311h5eee18b_0
+  - charset-normalizer=2.0.4=pyhd3eb1b0_0
+  - comm=0.1.2=py311h06a4308_0
+  - cpuonly=2.0=0
+  - cyrus-sasl=2.1.28=h52b45da_1
+  - dbus=1.13.18=hb2f20db_0
+  - debugpy=1.6.7=py311h6a678d5_0
+  - decorator=5.1.1=pyhd3eb1b0_0
+  - defusedxml=0.7.1=pyhd3eb1b0_0
+  - executing=0.8.3=pyhd3eb1b0_0
+  - expat=2.5.0=h6a678d5_0
+  - ffmpeg=4.3=hf484d3e_0
+  - filelock=3.13.1=py311h06a4308_0
+  - fontconfig=2.14.1=h4c34cd2_2
+  - freetype=2.12.1=h4a9f257_0
+  - glib=2.69.1=he621ea3_2
+  - gmp=6.2.1=h295c915_3
+  - gmpy2=2.1.2=py311hc9b5ff0_0
+  - gnutls=3.6.15=he1e5248_0
+  - gst-plugins-base=1.14.1=h6a678d5_1
+  - gstreamer=1.14.1=h5eee18b_1
+  - icu=73.1=h6a678d5_0
+  - idna=3.4=py311h06a4308_0
+  - intel-openmp=2023.1.0=hdb19cb5_46306
+  - ipykernel=6.28.0=py311h06a4308_0
+  - ipython=8.20.0=py311h06a4308_0
+  - ipywidgets=8.0.4=py311h06a4308_0
+  - jedi=0.18.1=py311h06a4308_1
+  - jinja2=3.1.3=py311h06a4308_0
+  - joblib=1.2.0=py311h06a4308_0
+  - jpeg=9e=h5eee18b_1
+  - json5=0.9.6=pyhd3eb1b0_0
+  - jsonschema=4.19.2=py311h06a4308_0
+  - jsonschema-specifications=2023.7.1=py311h06a4308_0
+  - jupyter=1.0.0=py311h06a4308_8
+  - jupyter-lsp=2.2.0=py311h06a4308_0
+  - jupyter_client=8.6.0=py311h06a4308_0
+  - jupyter_console=6.6.3=py311h06a4308_0
+  - jupyter_core=5.5.0=py311h06a4308_0
+  - jupyter_events=0.8.0=py311h06a4308_0
+  - jupyter_server=2.10.0=py311h06a4308_0
+  - jupyter_server_terminals=0.4.4=py311h06a4308_1
+  - jupyterlab=4.0.11=py311h06a4308_0
+  - jupyterlab_pygments=0.1.2=py_0
+  - jupyterlab_server=2.25.1=py311h06a4308_0
+  - jupyterlab_widgets=3.0.9=py311h06a4308_0
+  - krb5=1.20.1=h143b758_1
+  - lame=3.100=h7b6447c_0
+  - lcms2=2.12=h3be6417_0
+  - ld_impl_linux-64=2.38=h1181459_1
+  - lerc=3.0=h295c915_0
+  - libclang=14.0.6=default_hc6dbbc7_1
+  - libclang13=14.0.6=default_he11475f_1
+  - libcups=2.4.2=h2d74bed_1
+  - libdeflate=1.17=h5eee18b_1
+  - libedit=3.1.20230828=h5eee18b_0
+  - libffi=3.4.4=h6a678d5_0
+  - libgcc-ng=11.2.0=h1234567_1
+  - libgfortran-ng=11.2.0=h00389a5_1
+  - libgfortran5=11.2.0=h1234567_1
+  - libgomp=11.2.0=h1234567_1
+  - libiconv=1.16=h7f8727e_2
+  - libidn2=2.3.4=h5eee18b_0
+  - libjpeg-turbo=2.0.0=h9bf148f_0
+  - libllvm14=14.0.6=hdb19cb5_3
+  - libpng=1.6.39=h5eee18b_0
+  - libpq=12.17=hdbd6064_0
+  - libsodium=1.0.18=h7b6447c_0
+  - libstdcxx-ng=11.2.0=h1234567_1
+  - libtasn1=4.19.0=h5eee18b_0
+  - libtiff=4.5.1=h6a678d5_0
+  - libunistring=0.9.10=h27cfd23_0
+  - libuuid=1.41.5=h5eee18b_0
+  - libwebp-base=1.3.2=h5eee18b_0
+  - libxcb=1.15=h7f8727e_0
+  - libxkbcommon=1.0.1=h5eee18b_1
+  - libxml2=2.10.4=hf1b16e4_1
+  - llvm-openmp=14.0.6=h9e868ea_0
+  - lz4-c=1.9.4=h6a678d5_0
+  - markupsafe=2.1.3=py311h5eee18b_0
+  - matplotlib-inline=0.1.6=py311h06a4308_0
+  - mistune=2.0.4=py311h06a4308_0
+  - mkl=2023.1.0=h213fc3f_46344
+  - mkl-service=2.4.0=py311h5eee18b_1
+  - mkl_fft=1.3.8=py311h5eee18b_0
+  - mkl_random=1.2.4=py311hdb19cb5_0
+  - mpc=1.1.0=h10f8cd9_1
+  - mpfr=4.0.2=hb69a4c5_1
+  - mpmath=1.3.0=py311h06a4308_0
+  - mysql=5.7.24=h721c034_2
+  - nbclient=0.8.0=py311h06a4308_0
+  - nbconvert=7.10.0=py311h06a4308_0
+  - nbformat=5.9.2=py311h06a4308_0
+  - ncurses=6.4=h6a678d5_0
+  - nest-asyncio=1.5.6=py311h06a4308_0
+  - nettle=3.7.3=hbbd107a_1
+  - networkx=3.1=py311h06a4308_0
+  - notebook=7.0.6=py311h06a4308_0
+  - notebook-shim=0.2.3=py311h06a4308_0
+  - numexpr=2.8.7=py311h65dcdc2_0
+  - numpy=1.26.3=py311h08b1b3b_0
+  - numpy-base=1.26.3=py311hf175353_0
+  - openh264=2.1.1=h4ff587b_0
+  - openjpeg=2.4.0=h3ad879b_0
+  - openssl=3.0.13=h7f8727e_0
+  - overrides=7.4.0=py311h06a4308_0
+  - packaging=23.1=py311h06a4308_0
+  - pandas=2.1.4=py311ha02d727_0
+  - pandocfilters=1.5.0=pyhd3eb1b0_0
+  - parso=0.8.3=pyhd3eb1b0_0
+  - pcre=8.45=h295c915_0
+  - pexpect=4.8.0=pyhd3eb1b0_3
+  - pillow=10.2.0=py311h5eee18b_0
+  - pip=23.3.1=py311h06a4308_0
+  - platformdirs=3.10.0=py311h06a4308_0
+  - ply=3.11=py311h06a4308_0
+  - prometheus_client=0.14.1=py311h06a4308_0
+  - prompt-toolkit=3.0.43=py311h06a4308_0
+  - prompt_toolkit=3.0.43=hd3eb1b0_0
+  - psutil=5.9.0=py311h5eee18b_0
+  - ptyprocess=0.7.0=pyhd3eb1b0_2
+  - pure_eval=0.2.2=pyhd3eb1b0_0
+  - pycparser=2.21=pyhd3eb1b0_0
+  - pygments=2.15.1=py311h06a4308_1
+  - pyqt=5.15.10=py311h6a678d5_0
+  - pyqt5-sip=12.13.0=py311h5eee18b_0
+  - python=3.11.7=h955ad1f_0
+  - python-dateutil=2.8.2=pyhd3eb1b0_0
+  - python-fastjsonschema=2.16.2=py311h06a4308_0
+  - python-json-logger=2.0.7=py311h06a4308_0
+  - python-tzdata=2023.3=pyhd3eb1b0_0
+  - pytorch=2.2.0=py3.11_cpu_0
+  - pytorch-mutex=1.0=cpu
+  - pytz=2023.3.post1=py311h06a4308_0
+  - pyyaml=6.0.1=py311h5eee18b_0
+  - pyzmq=25.1.2=py311h6a678d5_0
+  - qt-main=5.15.2=h53bd1ea_10
+  - qtconsole=5.5.0=py311h06a4308_0
+  - qtpy=2.4.1=py311h06a4308_0
+  - readline=8.2=h5eee18b_0
+  - referencing=0.30.2=py311h06a4308_0
+  - requests=2.31.0=py311h06a4308_1
+  - rfc3339-validator=0.1.4=py311h06a4308_0
+  - rfc3986-validator=0.1.1=py311h06a4308_0
+  - rpds-py=0.10.6=py311hb02cf49_0
+  - scikit-learn=1.2.2=py311h6a678d5_1
+  - scipy=1.11.4=py311h08b1b3b_0
+  - send2trash=1.8.2=py311h06a4308_0
+  - setuptools=68.2.2=py311h06a4308_0
+  - sip=6.7.12=py311h6a678d5_0
+  - six=1.16.0=pyhd3eb1b0_1
+  - sniffio=1.3.0=py311h06a4308_0
+  - soupsieve=2.5=py311h06a4308_0
+  - sqlite=3.41.2=h5eee18b_0
+  - stack_data=0.2.0=pyhd3eb1b0_0
+  - sympy=1.12=py311h06a4308_0
+  - tbb=2021.8.0=hdb19cb5_0
+  - terminado=0.17.1=py311h06a4308_0
+  - threadpoolctl=2.2.0=pyh0d69192_0
+  - tinycss2=1.2.1=py311h06a4308_0
+  - tk=8.6.12=h1ccaba5_0
+  - torchaudio=2.2.0=py311_cpu
+  - torchvision=0.17.0=py311_cpu
+  - tornado=6.3.3=py311h5eee18b_0
+  - traitlets=5.7.1=py311h06a4308_0
+  - typing-extensions=4.9.0=py311h06a4308_1
+  - typing_extensions=4.9.0=py311h06a4308_1
+  - tzdata=2023d=h04d1e81_0
+  - urllib3=2.1.0=py311h06a4308_0
+  - wcwidth=0.2.5=pyhd3eb1b0_0
+  - webencodings=0.5.1=py311h06a4308_1
+  - websocket-client=0.58.0=py311h06a4308_4
+  - wheel=0.41.2=py311h06a4308_0
+  - widgetsnbextension=4.0.5=py311h06a4308_0
+  - xz=5.4.5=h5eee18b_0
+  - yaml=0.2.5=h7b6447c_0
+  - zeromq=4.3.5=h6a678d5_0
+  - zlib=1.2.13=h5eee18b_0
+  - zstd=1.5.5=hc292b87_0
+prefix: /home/arthurb/anaconda3/envs/cdbpr-env
diff --git a/makefile b/makefile
index 39341c59cdf974917a03bc9ec19d01610e80e0c3..743059f791fcf173701995eb2637af76494ee1f5 100644
--- a/makefile
+++ b/makefile
@@ -1,8 +1,16 @@
-.PHONY: build, clean
+.PHONY: build, clean, check_conda
 
-build:
+build: check_conda
 	unzip data.zip
 	unzip results.zip
-	
+	conda env create --file cdbpr-env.yml
 clean:
 	rm -rf data/
+
+check_conda:
+	@if command -v conda >/dev/null 2>&1; then \
+		echo "conda is installed"; \
+	else \
+		echo "conda needs to be installed\nrun the makefile again after the installation"; \
+		exit 1; \
+	fi
\ No newline at end of file