Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.ipynb filter=nbstripout
*.zpln filter=nbstripout
*.ipynb diff=ipynb
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.ipynb_checkpoints/
.commit

7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,10 @@
This directory contains an ipython notebook contianing Python code for the Spider Algorithm. Information on how it works and references are contained inside notebook.

This project was done by Jeffrey Lantz and Riley Guyett as part of their senior theses with Professor Hubbard in Spring 2023.

## Developer Notes
The python environment is managed via (mini)conda, which can be installed [here](https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html). The environment is managed in env.yaml, and should be automatically managed via git hooks. However, on initial install, one may need to run `conda env create -f env.yml`

Additionally, as working with Jupyter notebooks in version control can be difficult, we have included `nbstripout` in the conda environment. This may need to be manually initialized with `nbstripout --install --attributes .gitattributes`. This makes `git diff` show fewer non-code related changes, at the expense of not showing output data. I tried to include automatically generated outputs, but it wasn't working; for now, if we choose to include sample outputs in the repo, they will be added manually.

In order to run the Jupyter Notebook, simply call `jupyter lab` from the root directory of the repository, then select `spider-algorithm.ipynb` from the file explorer on the left. Jupyterlab supports a few nice features over jupyter notebook, accessible under `Settings > Advanced Settings Editor`. Here you can change the theme to dark under `Theme > Selected Theme`, and enable automatically formatting the code on saving the notebook under `Jupyterlab Code Formatter > Auto format config`.
192 changes: 192 additions & 0 deletions env.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
name: spideralgorithm
channels:
- conda-forge
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- _openmp_mutex=5.1=1_gnu
- anyio=3.5.0=py38h06a4308_0
- argon2-cffi=21.3.0=pyhd3eb1b0_0
- argon2-cffi-bindings=21.2.0=py38h7f8727e_0
- astroid=2.14.2=py38h06a4308_0
- asttokens=2.0.5=pyhd3eb1b0_0
- attrs=22.1.0=py38h06a4308_0
- babel=2.11.0=py38h06a4308_0
- backcall=0.2.0=pyhd3eb1b0_0
- beautifulsoup4=4.11.1=py38h06a4308_0
- black=22.6.0=py38h06a4308_0
- blas=1.0=mkl
- bleach=4.1.0=pyhd3eb1b0_0
- brotli=1.0.9=h5eee18b_7
- brotli-bin=1.0.9=h5eee18b_7
- brotlipy=0.7.0=py38h27cfd23_1003
- ca-certificates=2023.01.10=h06a4308_0
- certifi=2022.12.7=py38h06a4308_0
- cffi=1.15.1=py38h5eee18b_3
- charset-normalizer=2.0.4=pyhd3eb1b0_0
- click=8.0.4=py38h06a4308_0
- colorama=0.4.6=py38h06a4308_0
- comm=0.1.2=py38h06a4308_0
- contourpy=1.0.5=py38hdb19cb5_0
- cryptography=39.0.1=py38h9ce1e76_0
- cycler=0.11.0=pyhd3eb1b0_0
- dbus=1.13.18=hb2f20db_0
- debugpy=1.5.1=py38h295c915_0
- decorator=5.1.1=pyhd3eb1b0_0
- defusedxml=0.7.1=pyhd3eb1b0_0
- dill=0.3.6=py38h06a4308_0
- entrypoints=0.4=py38h06a4308_0
- executing=0.8.3=pyhd3eb1b0_0
- expat=2.4.9=h6a678d5_0
- flit-core=3.6.0=pyhd3eb1b0_0
- fontconfig=2.14.1=h52c9d5c_1
- fonttools=4.25.0=pyhd3eb1b0_0
- freetype=2.12.1=h4a9f257_0
- giflib=5.2.1=h5eee18b_3
- glib=2.69.1=he621ea3_2
- gst-plugins-base=1.14.1=h6a678d5_1
- gstreamer=1.14.1=h5eee18b_1
- icu=58.2=he6710b0_3
- idna=3.4=py38h06a4308_0
- importlib-metadata=4.11.3=py38h06a4308_0
- importlib_resources=5.2.0=pyhd3eb1b0_1
- intel-openmp=2021.4.0=h06a4308_3561
- ipykernel=6.19.2=py38hb070fc8_0
- ipython=8.10.0=py38h06a4308_0
- ipython_genutils=0.2.0=pyhd3eb1b0_1
- isort=5.9.3=pyhd3eb1b0_0
- jedi=0.18.1=py38h06a4308_1
- jinja2=3.1.2=py38h06a4308_0
- jpeg=9e=h7f8727e_0
- json5=0.9.6=pyhd3eb1b0_0
- jsonschema=4.17.3=py38h06a4308_0
- jupyter_client=7.4.9=py38h06a4308_0
- jupyter_core=5.2.0=py38h06a4308_0
- jupyter_server=1.23.4=py38h06a4308_0
- jupyterlab=3.5.3=py38h06a4308_0
- jupyterlab_code_formatter=1.5.3=pyhd8ed1ab_0
- jupyterlab_pygments=0.1.2=py_0
- jupyterlab_server=2.19.0=py38h06a4308_0
- kiwisolver=1.4.4=py38h6a678d5_0
- krb5=1.19.4=h568e23c_0
- lazy-object-proxy=1.6.0=py38h27cfd23_0
- lcms2=2.12=h3be6417_0
- ld_impl_linux-64=2.38=h1181459_1
- lerc=3.0=h295c915_0
- libbrotlicommon=1.0.9=h5eee18b_7
- libbrotlidec=1.0.9=h5eee18b_7
- libbrotlienc=1.0.9=h5eee18b_7
- libclang=10.0.1=default_hb85057a_2
- libdeflate=1.17=h5eee18b_0
- libedit=3.1.20221030=h5eee18b_0
- libevent=2.1.12=h8f2d780_0
- libffi=3.4.2=h6a678d5_6
- libgcc-ng=11.2.0=h1234567_1
- libgomp=11.2.0=h1234567_1
- libllvm10=10.0.1=hbcb73fb_5
- libpng=1.6.37=hbc83047_0
- libpq=12.9=h16c4e8d_3
- libsodium=1.0.18=h7b6447c_0
- libstdcxx-ng=11.2.0=h1234567_1
- libtiff=4.5.0=h6a678d5_2
- libuuid=1.41.5=h5eee18b_0
- libwebp=1.2.4=h11a3e52_1
- libwebp-base=1.2.4=h5eee18b_1
- libxcb=1.15=h7f8727e_0
- libxkbcommon=1.0.1=hfa300c1_0
- libxml2=2.9.14=h74e7548_0
- libxslt=1.1.35=h4e12654_0
- lxml=4.9.1=py38h1edc446_0
- lz4-c=1.9.4=h6a678d5_0
- markupsafe=2.1.1=py38h7f8727e_0
- matplotlib=3.7.0=py38h06a4308_0
- matplotlib-base=3.7.0=py38h417a72b_0
- matplotlib-inline=0.1.6=py38h06a4308_0
- mccabe=0.7.0=pyhd3eb1b0_0
- mistune=0.8.4=py38h7b6447c_1000
- mkl=2021.4.0=h06a4308_640
- mkl-service=2.4.0=py38h7f8727e_0
- mkl_fft=1.3.1=py38hd3c417c_0
- mkl_random=1.2.2=py38h51133e4_0
- munkres=1.1.4=py_0
- mypy_extensions=0.4.3=py38h06a4308_1
- nbclassic=0.5.2=py38h06a4308_0
- nbclient=0.5.13=py38h06a4308_0
- nbconvert=6.5.4=py38h06a4308_0
- nbformat=5.7.0=py38h06a4308_0
- nbstripout=0.6.1=pyhd8ed1ab_0
- ncurses=6.4=h6a678d5_0
- nest-asyncio=1.5.6=py38h06a4308_0
- notebook=6.5.2=py38h06a4308_0
- notebook-shim=0.2.2=py38h06a4308_0
- nspr=4.33=h295c915_0
- nss=3.74=h0370c37_0
- numpy=1.23.5=py38h14f4228_0
- numpy-base=1.23.5=py38h31eccc5_0
- openssl=1.1.1t=h7f8727e_0
- packaging=22.0=py38h06a4308_0
- pandocfilters=1.5.0=pyhd3eb1b0_0
- parso=0.8.3=pyhd3eb1b0_0
- pathspec=0.10.3=py38h06a4308_0
- pcre=8.45=h295c915_0
- pexpect=4.8.0=pyhd3eb1b0_3
- pickleshare=0.7.5=pyhd3eb1b0_1003
- pillow=9.4.0=py38h6a678d5_0
- pip=22.3.1=py38h06a4308_0
- pkgutil-resolve-name=1.3.10=py38h06a4308_0
- platformdirs=2.5.2=py38h06a4308_0
- ply=3.11=py38_0
- prometheus_client=0.14.1=py38h06a4308_0
- prompt-toolkit=3.0.36=py38h06a4308_0
- psutil=5.9.0=py38h5eee18b_0
- ptyprocess=0.7.0=pyhd3eb1b0_2
- pure_eval=0.2.2=pyhd3eb1b0_0
- pycparser=2.21=pyhd3eb1b0_0
- pygments=2.11.2=pyhd3eb1b0_0
- pylint=2.16.2=py38h06a4308_0
- pyopenssl=23.0.0=py38h06a4308_0
- pyparsing=3.0.9=py38h06a4308_0
- pyqt=5.15.7=py38h6a678d5_1
- pyqt5-sip=12.11.0=py38h6a678d5_1
- pyrsistent=0.18.0=py38heee7806_0
- pysocks=1.7.1=py38h06a4308_0
- python=3.8.16=h7a1cb2a_2
- python-dateutil=2.8.2=pyhd3eb1b0_0
- python-fastjsonschema=2.16.2=py38h06a4308_0
- pytz=2022.7=py38h06a4308_0
- pyzmq=23.2.0=py38h6a678d5_0
- qt-main=5.15.2=h327a75a_7
- qt-webengine=5.15.9=hd2b0992_4
- qtwebkit=5.212=h4eab89a_4
- readline=8.2=h5eee18b_0
- requests=2.28.1=py38h06a4308_0
- send2trash=1.8.0=pyhd3eb1b0_1
- setuptools=65.6.3=py38h06a4308_0
- sip=6.6.2=py38h6a678d5_0
- six=1.16.0=pyhd3eb1b0_1
- sniffio=1.2.0=py38h06a4308_1
- soupsieve=2.3.2.post1=py38h06a4308_0
- sqlite=3.40.1=h5082296_0
- stack_data=0.2.0=pyhd3eb1b0_0
- terminado=0.17.1=py38h06a4308_0
- tinycss2=1.2.1=py38h06a4308_0
- tk=8.6.12=h1ccaba5_0
- toml=0.10.2=pyhd3eb1b0_0
- tomli=2.0.1=py38h06a4308_0
- tomlkit=0.11.1=py38h06a4308_0
- tornado=6.2=py38h5eee18b_0
- traitlets=5.7.1=py38h06a4308_0
- typing-extensions=4.4.0=py38h06a4308_0
- typing_extensions=4.4.0=py38h06a4308_0
- urllib3=1.26.14=py38h06a4308_0
- wcwidth=0.2.5=pyhd3eb1b0_0
- webencodings=0.5.1=py38_1
- websocket-client=0.58.0=py38h06a4308_4
- wheel=0.38.4=py38h06a4308_0
- wrapt=1.14.1=py38h5eee18b_0
- xz=5.2.10=h5eee18b_1
- zeromq=4.3.4=h2531618_0
- zipp=3.11.0=py38h06a4308_0
- zlib=1.2.13=h5eee18b_0
- zstd=1.5.2=ha4553b6_0
prefix: /home/jeff/anaconda3/envs/spideralgorithm
Loading