diff --git a/.gitignore b/.gitignore
index e1a09c0e84c91d70be96bce960ed00c331aac2b9..e807c4516f427be4247ac50af7f654efdce509a2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-.idea
+.idea*
 *__pycache__*
\ No newline at end of file
diff --git a/environment.yml b/environment.yml
new file mode 100644
index 0000000000000000000000000000000000000000..11ef57e8b87b6b217f608a207ec9f9ecbd5d75c9
--- /dev/null
+++ b/environment.yml
@@ -0,0 +1,482 @@
+name: base
+channels:
+  - defaults
+dependencies:
+  - _anaconda_depends=2023.07
+  - abseil-cpp=20211102.0
+  - aiobotocore=2.4.2
+  - aiofiles=22.1.0
+  - aiohttp=3.8.3
+  - aioitertools=0.7.1
+  - aiosignal=1.2.0
+  - aiosqlite=0.18.0
+  - alabaster=0.7.12
+  - anaconda-catalogs=0.2.0
+  - anaconda-client=1.12.0
+  - anaconda-navigator=2.4.2
+  - anaconda-project=0.11.1
+  - anyio=3.5.0
+  - appdirs=1.4.4
+  - argon2-cffi=21.3.0
+  - argon2-cffi-bindings=21.2.0
+  - arrow=1.2.3
+  - arrow-cpp=11.0.0
+  - astroid=2.14.2
+  - astropy=5.1
+  - asttokens=2.0.5
+  - async-timeout=4.0.2
+  - atomicwrites=1.4.0
+  - attrs=22.1.0
+  - automat=20.2.0
+  - autopep8=1.6.0
+  - aws-c-common=0.4.57
+  - aws-c-event-stream=0.1.6
+  - aws-checksums=0.1.9
+  - aws-sdk-cpp=1.8.185
+  - babel=2.11.0
+  - backcall=0.2.0
+  - backports=1.1
+  - backports.functools_lru_cache=1.6.4
+  - backports.tempfile=1.0
+  - backports.weakref=1.0.post1
+  - bcrypt=3.2.0
+  - beautifulsoup4=4.12.2
+  - binaryornot=0.4.4
+  - black=23.3.0
+  - blas=1.0
+  - bleach=4.1.0
+  - blosc=1.21.3
+  - bokeh=3.2.1
+  - boltons=23.0.0
+  - boost-cpp=1.73.0
+  - boto3=1.24.28
+  - botocore=1.27.59
+  - bottleneck=1.3.5
+  - brotli=1.0.9
+  - brotli-bin=1.0.9
+  - brotlipy=0.7.0
+  - bzip2=1.0.8
+  - c-ares=1.19.0
+  - c-blosc2=2.8.0
+  - ca-certificates=2023.05.30
+  - certifi=2023.7.22
+  - cffi=1.15.1
+  - cfitsio=3.470
+  - chardet=4.0.0
+  - charls=2.2.0
+  - charset-normalizer=2.0.4
+  - click=8.0.4
+  - cloudpickle=2.2.1
+  - clyent=1.2.2
+  - colorama=0.4.6
+  - colorcet=3.0.1
+  - comm=0.1.2
+  - conda=23.7.2
+  - conda-build=3.26.0
+  - conda-content-trust=0.1.1
+  - conda-index=0.2.3
+  - conda-libmamba-solver=23.5.0
+  - conda-pack=0.6.0
+  - conda-package-handling=2.2.0
+  - conda-package-streaming=0.9.0
+  - conda-repo-cli=1.0.41
+  - conda-token=0.4.0
+  - conda-verify=3.4.2
+  - console_shortcut=0.1.1
+  - constantly=15.1.0
+  - contourpy=1.0.5
+  - cookiecutter=1.7.3
+  - cryptography=41.0.2
+  - cssselect=1.1.0
+  - curl=8.1.1
+  - cycler=0.11.0
+  - cytoolz=0.12.0
+  - daal4py=2023.1.1
+  - dal=2023.1.1
+  - dask=2023.6.0
+  - dask-core=2023.6.0
+  - datashader=0.15.1
+  - datashape=0.5.4
+  - debugpy=1.6.7
+  - decorator=5.1.1
+  - defusedxml=0.7.1
+  - diff-match-patch=20200713
+  - dill=0.3.6
+  - distributed=2023.6.0
+  - docstring-to-markdown=0.11
+  - docutils=0.18.1
+  - entrypoints=0.4
+  - et_xmlfile=1.1.0
+  - executing=0.8.3
+  - filelock=3.9.0
+  - flake8=6.0.0
+  - flask=2.2.2
+  - fmt=9.1.0
+  - fonttools=4.25.0
+  - freetype=2.12.1
+  - frozenlist=1.3.3
+  - fsspec=2023.3.0
+  - future=0.18.3
+  - gensim=4.3.0
+  - gflags=2.2.2
+  - giflib=5.2.1
+  - glib=2.69.1
+  - glob2=0.7
+  - glog=0.5.0
+  - greenlet=2.0.1
+  - gst-plugins-base=1.18.5
+  - gstreamer=1.18.5
+  - h5py=3.7.0
+  - hdf5=1.10.6
+  - heapdict=1.0.1
+  - holoviews=1.17.0
+  - hvplot=0.8.4
+  - hyperlink=21.0.0
+  - icc_rt=2022.1.0
+  - icu=58.2
+  - idna=3.4
+  - imagecodecs=2021.8.26
+  - imageio=2.26.0
+  - imagesize=1.4.1
+  - imbalanced-learn=0.10.1
+  - importlib-metadata=6.0.0
+  - importlib_metadata=6.0.0
+  - incremental=21.3.0
+  - inflection=0.5.1
+  - iniconfig=1.1.1
+  - intake=0.6.8
+  - intel-openmp=2023.1.0
+  - intervaltree=3.1.0
+  - ipykernel=6.19.2
+  - ipython=8.12.0
+  - ipython_genutils=0.2.0
+  - ipywidgets=8.0.4
+  - isort=5.9.3
+  - itemadapter=0.3.0
+  - itemloaders=1.0.4
+  - itsdangerous=2.0.1
+  - jaraco.classes=3.2.1
+  - jedi=0.18.1
+  - jellyfish=0.9.0
+  - jinja2=3.1.2
+  - jinja2-time=0.2.0
+  - jmespath=0.10.0
+  - joblib=1.2.0
+  - jpeg=9e
+  - jq=1.6
+  - json5=0.9.6
+  - jsonpatch=1.32
+  - jsonpointer=2.1
+  - jsonschema=4.17.3
+  - jupyter=1.0.0
+  - jupyter_client=7.4.9
+  - jupyter_console=6.6.3
+  - jupyter_core=5.3.0
+  - jupyter_events=0.6.3
+  - jupyter_server=1.23.4
+  - jupyter_server_fileid=0.9.0
+  - jupyter_server_ydoc=0.8.0
+  - jupyter_ydoc=0.2.4
+  - jupyterlab=3.6.3
+  - jupyterlab_pygments=0.1.2
+  - jupyterlab_server=2.22.0
+  - jupyterlab_widgets=3.0.5
+  - jxrlib=1.1
+  - keyring=23.13.1
+  - kiwisolver=1.4.4
+  - krb5=1.19.4
+  - lazy-object-proxy=1.6.0
+  - lazy_loader=0.2
+  - lcms2=2.12
+  - lerc=3.0
+  - libaec=1.0.4
+  - libarchive=3.6.2
+  - libboost=1.73.0
+  - libbrotlicommon=1.0.9
+  - libbrotlidec=1.0.9
+  - libbrotlienc=1.0.9
+  - libclang=14.0.6
+  - libclang13=14.0.6
+  - libcurl=8.1.1
+  - libdeflate=1.17
+  - libevent=2.1.12
+  - libffi=3.4.4
+  - libiconv=1.16
+  - liblief=0.12.3
+  - libllvm14=14.0.6
+  - libmamba=1.4.1
+  - libmambapy=1.4.1
+  - libogg=1.3.5
+  - libpng=1.6.39
+  - libprotobuf=3.20.3
+  - libsodium=1.0.18
+  - libsolv=0.7.22
+  - libspatialindex=1.9.3
+  - libssh2=1.10.0
+  - libthrift=0.15.0
+  - libtiff=4.5.0
+  - libvorbis=1.3.7
+  - libwebp=1.2.4
+  - libwebp-base=1.2.4
+  - libxml2=2.10.3
+  - libxslt=1.1.37
+  - libzopfli=1.0.3
+  - linkify-it-py=2.0.0
+  - llvmlite=0.40.0
+  - locket=1.0.0
+  - lxml=4.9.2
+  - lz4=4.3.2
+  - lz4-c=1.9.4
+  - lzo=2.10
+  - m2-msys2-runtime=2.5.0.17080.65c939c
+  - m2-patch=2.7.5
+  - m2w64-libwinpthread-git=5.0.0.4634.697f757
+  - markdown=3.4.1
+  - markdown-it-py=2.2.0
+  - markupsafe=2.1.1
+  - matplotlib=3.7.1
+  - matplotlib-base=3.7.1
+  - matplotlib-inline=0.1.6
+  - mccabe=0.7.0
+  - mdit-py-plugins=0.3.0
+  - mdurl=0.1.0
+  - menuinst=1.4.19
+  - mistune=0.8.4
+  - mkl=2023.1.0
+  - mkl-service=2.4.0
+  - mkl_fft=1.3.6
+  - mkl_random=1.2.2
+  - more-itertools=8.12.0
+  - mpmath=1.3.0
+  - msgpack-python=1.0.3
+  - msys2-conda-epoch=20160418
+  - multidict=6.0.2
+  - multipledispatch=0.6.0
+  - munkres=1.1.4
+  - mypy_extensions=0.4.3
+  - navigator-updater=0.4.0
+  - nbclassic=0.5.5
+  - nbclient=0.5.13
+  - nbconvert=6.5.4
+  - nbformat=5.7.0
+  - nest-asyncio=1.5.6
+  - networkx=3.1
+  - nltk=3.8.1
+  - notebook=6.5.4
+  - notebook-shim=0.2.2
+  - numba=0.57.0
+  - numexpr=2.8.4
+  - numpy=1.24.3
+  - numpy-base=1.24.3
+  - numpydoc=1.5.0
+  - openjpeg=2.4.0
+  - openpyxl=3.0.10
+  - openssl=1.1.1u
+  - orc=1.7.4
+  - packaging=23.0
+  - pandas=1.5.3
+  - pandocfilters=1.5.0
+  - panel=1.2.1
+  - param=1.13.0
+  - paramiko=2.8.1
+  - parsel=1.6.0
+  - parso=0.8.3
+  - partd=1.2.0
+  - pathlib=1.0.1
+  - pathspec=0.10.3
+  - patsy=0.5.3
+  - pcre=8.45
+  - pcre2=10.37
+  - pep8=1.7.1
+  - pexpect=4.8.0
+  - pickleshare=0.7.5
+  - pillow=9.4.0
+  - pip=23.2.1
+  - pkginfo=1.9.6
+  - platformdirs=2.5.2
+  - plotly=5.9.0
+  - pluggy=1.0.0
+  - ply=3.11
+  - pooch=1.4.0
+  - powershell_shortcut=0.0.1
+  - poyo=0.5.0
+  - prometheus_client=0.14.1
+  - prompt-toolkit=3.0.36
+  - prompt_toolkit=3.0.36
+  - protego=0.1.16
+  - psutil=5.9.0
+  - ptyprocess=0.7.0
+  - pure_eval=0.2.2
+  - py-cpuinfo=8.0.0
+  - py-lief=0.12.3
+  - pyarrow=11.0.0
+  - pyasn1=0.4.8
+  - pyasn1-modules=0.2.8
+  - pybind11-abi=4
+  - pycodestyle=2.10.0
+  - pycosat=0.6.4
+  - pycparser=2.21
+  - pyct=0.5.0
+  - pycurl=7.45.2
+  - pydispatcher=2.0.5
+  - pydocstyle=6.3.0
+  - pyerfa=2.0.0
+  - pyflakes=3.0.1
+  - pygments=2.15.1
+  - pyjwt=2.4.0
+  - pylint=2.16.2
+  - pylint-venv=2.3.0
+  - pyls-spyder=0.4.0
+  - pynacl=1.5.0
+  - pyodbc=4.0.34
+  - pyopenssl=23.2.0
+  - pyparsing=3.0.9
+  - pyqt=5.15.7
+  - pyqt5-sip=12.11.0
+  - pyqtwebengine=5.15.7
+  - pyrsistent=0.18.0
+  - pysocks=1.7.1
+  - pytables=3.8.0
+  - pytest=7.4.0
+  - python=3.11.4
+  - python-dateutil=2.8.2
+  - python-fastjsonschema=2.16.2
+  - python-json-logger=2.0.7
+  - python-libarchive-c=2.9
+  - python-lmdb=1.4.1
+  - python-lsp-black=1.2.1
+  - python-lsp-jsonrpc=1.0.0
+  - python-lsp-server=1.7.2
+  - python-slugify=5.0.2
+  - python-snappy=0.6.1
+  - pytoolconfig=1.2.5
+  - pytz=2022.7
+  - pyviz_comms=2.3.0
+  - pywavelets=1.4.1
+  - pywin32=305
+  - pywin32-ctypes=0.2.0
+  - pywinpty=2.0.10
+  - pyyaml=6.0
+  - pyzmq=23.2.0
+  - qdarkstyle=3.0.2
+  - qstylizer=0.2.2
+  - qt-main=5.15.2
+  - qt-webengine=5.15.9
+  - qtawesome=1.2.2
+  - qtconsole=5.4.2
+  - qtpy=2.2.0
+  - qtwebkit=5.212
+  - queuelib=1.5.0
+  - re2=2022.04.01
+  - regex=2022.7.9
+  - reproc=14.2.4
+  - reproc-cpp=14.2.4
+  - requests=2.31.0
+  - requests-file=1.5.1
+  - requests-toolbelt=1.0.0
+  - rfc3339-validator=0.1.4
+  - rfc3986-validator=0.1.1
+  - rope=1.7.0
+  - rtree=1.0.1
+  - ruamel.yaml=0.17.21
+  - ruamel_yaml=0.17.21
+  - s3fs=2023.3.0
+  - s3transfer=0.6.0
+  - sacremoses=0.0.43
+  - scikit-image=0.20.0
+  - scikit-learn=1.3.0
+  - scikit-learn-intelex=2023.1.1
+  - scipy=1.10.1
+  - scrapy=2.8.0
+  - seaborn=0.12.2
+  - send2trash=1.8.0
+  - service_identity=18.1.0
+  - setuptools=68.0.0
+  - sip=6.6.2
+  - six=1.16.0
+  - smart_open=5.2.1
+  - snappy=1.1.9
+  - sniffio=1.2.0
+  - snowballstemmer=2.2.0
+  - sortedcontainers=2.4.0
+  - soupsieve=2.4
+  - sphinx=5.0.2
+  - sphinxcontrib-applehelp=1.0.2
+  - sphinxcontrib-devhelp=1.0.2
+  - sphinxcontrib-htmlhelp=2.0.0
+  - sphinxcontrib-jsmath=1.0.1
+  - sphinxcontrib-qthelp=1.0.3
+  - sphinxcontrib-serializinghtml=1.1.5
+  - spyder=5.4.3
+  - spyder-kernels=2.4.3
+  - sqlalchemy=1.4.39
+  - sqlite=3.41.2
+  - stack_data=0.2.0
+  - statsmodels=0.14.0
+  - sympy=1.11.1
+  - tabulate=0.8.10
+  - tbb=2021.8.0
+  - tbb4py=2021.8.0
+  - tblib=1.7.0
+  - tenacity=8.2.2
+  - terminado=0.17.1
+  - text-unidecode=1.3
+  - textdistance=4.2.1
+  - threadpoolctl=2.2.0
+  - three-merge=0.1.1
+  - tifffile=2021.7.2
+  - tinycss2=1.2.1
+  - tk=8.6.12
+  - tldextract=3.2.0
+  - toml=0.10.2
+  - tomlkit=0.11.1
+  - toolz=0.12.0
+  - tornado=6.3.2
+  - tqdm=4.65.0
+  - traitlets=5.7.1
+  - transformers=2.1.1
+  - twisted=22.10.0
+  - twisted-iocpsupport=1.0.2
+  - typing-extensions=4.7.1
+  - typing_extensions=4.7.1
+  - tzdata=2023c
+  - uc-micro-py=1.0.1
+  - ujson=5.4.0
+  - unidecode=1.2.0
+  - urllib3=1.26.16
+  - utf8proc=2.6.1
+  - vc=14.2
+  - vs2015_runtime=14.27.29016
+  - w3lib=1.21.0
+  - watchdog=2.1.6
+  - wcwidth=0.2.5
+  - webencodings=0.5.1
+  - websocket-client=0.58.0
+  - werkzeug=2.2.3
+  - whatthepatch=1.0.2
+  - wheel=0.38.4
+  - widgetsnbextension=4.0.5
+  - win_inet_pton=1.1.0
+  - winpty=0.4.3
+  - wrapt=1.14.1
+  - xarray=2023.6.0
+  - xlwings=0.29.1
+  - xyzservices=2022.9.0
+  - xz=5.4.2
+  - y-py=0.5.9
+  - yaml=0.2.5
+  - yaml-cpp=0.7.0
+  - yapf=0.31.0
+  - yarl=1.8.1
+  - ypy-websocket=0.8.2
+  - zeromq=4.3.4
+  - zfp=0.5.5
+  - zict=2.2.0
+  - zipp=3.11.0
+  - zlib=1.2.13
+  - zlib-ng=2.0.7
+  - zope=1.0
+  - zope.interface=5.4.0
+  - zstandard=0.19.0
+  - zstd=1.5.5
+prefix: C:\Users\rhodes\AppData\Local\anaconda3