diff --git a/README.md b/README.md index 20bbb0b..0c4daac 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,11 @@ specifically for multiplex imaging data. General view: ![plot](figs/main_figure.png) -image made with image2go + ## Table of Contents - [Clone the Repository](#clone-the-repository) -- [Requirements](#requirements) +- [Requirements/Installation](#requirements) - [Getting started](#getting-started) - [Credits](#credits) - [License](#license) @@ -46,19 +46,33 @@ git clone https://github.com/your_username/your_repository.git ## Create conda environment -Download the package and create environment or check requirements +You can create the environment installing the packages or using the ymal file. + +To manually create and install packages use: + +```bash +conda create --name penguin +conda activate penguin +conda install matplotlib pandas panel numpy opencv scikit-image ipywidgets jupyter ipykernel plotly +pip install apeer-ometiff-library --no-deps +``` -if trouble with appeear-ome ti... and imagecodecs install no deps +Alternatively, you can create the environemtn using the yml file: + +```bash +conda env create --file penguin_env.yml +conda activate penguin +pip install apeer-ometiff-library --no-deps +``` After you created the environment, and if you want to use the Jupyter notebooks -activate penguin environment and add the environment kernel to jupyter +add the environment kernel to jupyter ~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ```bash python -m ipykernel install --user --name=penguin ``` - launch the jupyter and be sure that you are running with the penguin kernel ## Getting started diff --git a/penguin_env.yml b/penguin_env.yml new file mode 100644 index 0000000..e2151c0 --- /dev/null +++ b/penguin_env.yml @@ -0,0 +1,373 @@ +name: penguin +channels: + - conda-forge + - defaults +dependencies: + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - alsa-lib=1.2.11=hd590300_1 + - anyio=4.3.0=pyhd8ed1ab_0 + - aom=3.9.0=hac33072_0 + - argon2-cffi=23.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=21.2.0=py312h98912ed_4 + - arrow=1.3.0=pyhd8ed1ab_0 + - asttokens=2.4.1=pyhd8ed1ab_0 + - async-lru=2.0.4=pyhd8ed1ab_0 + - attr=2.5.1=h166bdaf_1 + - attrs=23.2.0=pyh71513ae_0 + - babel=2.14.0=pyhd8ed1ab_0 + - beautifulsoup4=4.12.3=pyha770c72_0 + - bleach=6.1.0=pyhd8ed1ab_0 + - blosc=1.21.5=hc2324a3_1 + - bokeh=3.4.1=pyhd8ed1ab_0 + - brotli=1.1.0=hd590300_1 + - brotli-bin=1.1.0=hd590300_1 + - brotli-python=1.1.0=py312h30efb56_1 + - brunsli=0.1=h9c3ff4c_0 + - bzip2=1.0.8=hd590300_5 + - c-ares=1.28.1=hd590300_0 + - c-blosc2=2.14.4=hb4ffafa_1 + - ca-certificates=2024.2.2=hbcca054_0 + - cached-property=1.5.2=hd8ed1ab_1 + - cached_property=1.5.2=pyha770c72_1 + - cairo=1.18.0=h3faef2a_0 + - certifi=2024.2.2=pyhd8ed1ab_0 + - cffi=1.16.0=py312hf06ca03_0 + - charls=2.4.2=h59595ed_0 + - charset-normalizer=3.3.2=pyhd8ed1ab_0 + - colorama=0.4.6=pyhd8ed1ab_0 + - comm=0.2.2=pyhd8ed1ab_0 + - contourpy=1.2.1=py312h8572e83_0 + - cycler=0.12.1=pyhd8ed1ab_0 + - dav1d=1.2.1=hd590300_0 + - dbus=1.13.6=h5008d03_3 + - debugpy=1.8.1=py312h30efb56_0 + - decorator=5.1.1=pyhd8ed1ab_0 + - defusedxml=0.7.1=pyhd8ed1ab_0 + - double-conversion=3.3.0=h59595ed_0 + - entrypoints=0.4=pyhd8ed1ab_0 + - exceptiongroup=1.2.0=pyhd8ed1ab_2 + - executing=2.0.1=pyhd8ed1ab_0 + - expat=2.6.2=h59595ed_0 + - ffmpeg=6.1.1=gpl_h1a7fc40_111 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_2 + - fontconfig=2.14.2=h14ed4e7_0 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.51.0=py312h98912ed_0 + - fqdn=1.5.1=pyhd8ed1ab_0 + - freeglut=3.2.2=hac7e632_2 + - freetype=2.12.1=h267a509_2 + - fribidi=1.0.10=h36c2ea0_0 + - gettext=0.22.5=h59595ed_2 + - gettext-tools=0.22.5=h59595ed_2 + - giflib=5.2.2=hd590300_0 + - glib=2.80.2=hf974151_0 + - glib-tools=2.80.2=hb6ce0ca_0 + - gmp=6.3.0=h59595ed_1 + - gnutls=3.7.9=hb077bed_0 + - graphite2=1.3.13=h59595ed_1003 + - gst-plugins-base=1.22.9=hfa15dee_1 + - gstreamer=1.22.9=h98fc4e7_1 + - h11=0.14.0=pyhd8ed1ab_0 + - h2=4.1.0=pyhd8ed1ab_0 + - harfbuzz=8.5.0=hfac3d4d_0 + - hdf5=1.14.3=nompi_h4f84152_101 + - hpack=4.0.0=pyh9f0ad1d_0 + - httpcore=1.0.5=pyhd8ed1ab_0 + - httpx=0.27.0=pyhd8ed1ab_0 + - hyperframe=6.0.1=pyhd8ed1ab_0 + - icu=73.2=h59595ed_0 + - idna=3.7=pyhd8ed1ab_0 + - imagecodecs=2024.1.1=py312hb7b22c5_6 + - imageio=2.34.1=pyh4b66e23_0 + - imath=3.1.11=hfc55251_0 + - importlib-metadata=7.1.0=pyha770c72_0 + - importlib_metadata=7.1.0=hd8ed1ab_0 + - importlib_resources=6.4.0=pyhd8ed1ab_0 + - ipykernel=6.29.3=pyhd33586a_0 + - ipython=8.24.0=pyh707e725_0 + - ipywidgets=8.1.2=pyhd8ed1ab_1 + - isoduration=20.11.0=pyhd8ed1ab_0 + - jasper=4.2.4=h536e39c_0 + - jedi=0.19.1=pyhd8ed1ab_0 + - jinja2=3.1.4=pyhd8ed1ab_0 + - json5=0.9.25=pyhd8ed1ab_0 + - jsonpointer=2.4=py312h7900ff3_3 + - jsonschema=4.22.0=pyhd8ed1ab_0 + - jsonschema-specifications=2023.12.1=pyhd8ed1ab_0 + - jsonschema-with-format-nongpl=4.22.0=pyhd8ed1ab_0 + - jupyter=1.0.0=pyhd8ed1ab_10 + - jupyter-lsp=2.2.5=pyhd8ed1ab_0 + - jupyter_client=8.6.1=pyhd8ed1ab_0 + - jupyter_console=6.6.3=pyhd8ed1ab_0 + - jupyter_core=5.7.2=py312h7900ff3_0 + - jupyter_events=0.10.0=pyhd8ed1ab_0 + - jupyter_server=2.14.0=pyhd8ed1ab_0 + - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0 + - jupyterlab=4.2.0=pyhd8ed1ab_1 + - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1 + - jupyterlab_server=2.27.1=pyhd8ed1ab_0 + - jupyterlab_widgets=3.0.10=pyhd8ed1ab_0 + - jxrlib=1.1=hd590300_3 + - keyutils=1.6.1=h166bdaf_0 + - kiwisolver=1.4.5=py312h8572e83_1 + - krb5=1.21.2=h659d440_0 + - lame=3.100=h166bdaf_1003 + - lazy_loader=0.4=pyhd8ed1ab_0 + - lcms2=2.16=hb7c19ff_0 + - ld_impl_linux-64=2.40=h55db66e_0 + - lerc=4.0.0=h27087fc_0 + - libabseil=20240116.2=cxx17_h59595ed_0 + - libaec=1.1.3=h59595ed_0 + - libasprintf=0.22.5=h661eb56_2 + - libasprintf-devel=0.22.5=h661eb56_2 + - libass=0.17.1=h8fe9dca_1 + - libavif16=1.0.4=hfa3d5b6_3 + - libblas=3.9.0=22_linux64_openblas + - libbrotlicommon=1.1.0=hd590300_1 + - libbrotlidec=1.1.0=hd590300_1 + - libbrotlienc=1.1.0=hd590300_1 + - libcap=2.69=h0f662aa_0 + - libcblas=3.9.0=22_linux64_openblas + - libclang-cpp15=15.0.7=default_h127d8a8_5 + - libclang-cpp18.1=18.1.5=default_h127d8a8_0 + - libclang13=18.1.5=default_h5d6823c_0 + - libcups=2.3.3=h4637d8d_4 + - libcurl=8.7.1=hca28451_0 + - libdeflate=1.20=hd590300_0 + - libdrm=2.4.120=hd590300_0 + - libedit=3.1.20191231=he28a2e2_2 + - libev=4.33=hd590300_2 + - libevent=2.1.12=hf998b51_1 + - libexpat=2.6.2=h59595ed_0 + - libffi=3.4.2=h7f98852_5 + - libflac=1.4.3=h59595ed_0 + - libgcc-ng=13.2.0=h77fa898_7 + - libgcrypt=1.10.3=hd590300_0 + - libgettextpo=0.22.5=h59595ed_2 + - libgettextpo-devel=0.22.5=h59595ed_2 + - libgfortran-ng=13.2.0=h69a702a_7 + - libgfortran5=13.2.0=hca663fb_7 + - libglib=2.80.2=hf974151_0 + - libglu=9.0.0=hac7e632_1003 + - libgomp=13.2.0=h77fa898_7 + - libgpg-error=1.49=h4f305b6_0 + - libhwloc=2.10.0=default_h5622ce7_1001 + - libhwy=1.1.0=h00ab1b0_0 + - libiconv=1.17=hd590300_2 + - libidn2=2.3.7=hd590300_0 + - libjpeg-turbo=3.0.0=hd590300_1 + - libjxl=0.10.2=hcae5a98_0 + - liblapack=3.9.0=22_linux64_openblas + - liblapacke=3.9.0=22_linux64_openblas + - libllvm15=15.0.7=hb3ce162_4 + - libllvm18=18.1.5=hb77312f_0 + - libnghttp2=1.58.0=h47da74e_1 + - libnsl=2.0.1=hd590300_0 + - libogg=1.3.4=h7f98852_1 + - libopenblas=0.3.27=pthreads_h413a1c8_0 + - libopencv=4.9.0=qt6_py312h400c3b0_614 + - libopenvino=2024.1.0=h2da1b83_7 + - libopenvino-auto-batch-plugin=2024.1.0=hb045406_7 + - libopenvino-auto-plugin=2024.1.0=hb045406_7 + - libopenvino-hetero-plugin=2024.1.0=h5c03a75_7 + - libopenvino-intel-cpu-plugin=2024.1.0=h2da1b83_7 + - libopenvino-intel-gpu-plugin=2024.1.0=h2da1b83_7 + - libopenvino-intel-npu-plugin=2024.1.0=he02047a_7 + - libopenvino-ir-frontend=2024.1.0=h5c03a75_7 + - libopenvino-onnx-frontend=2024.1.0=h07e8aee_7 + - libopenvino-paddle-frontend=2024.1.0=h07e8aee_7 + - libopenvino-pytorch-frontend=2024.1.0=he02047a_7 + - libopenvino-tensorflow-frontend=2024.1.0=h39126c6_7 + - libopenvino-tensorflow-lite-frontend=2024.1.0=he02047a_7 + - libopus=1.3.1=h7f98852_1 + - libpciaccess=0.18=hd590300_0 + - libpng=1.6.43=h2797004_0 + - libpq=16.3=ha72fbe1_0 + - libprotobuf=4.25.3=h08a7969_0 + - libsndfile=1.2.2=hc60ed4a_1 + - libsodium=1.0.18=h36c2ea0_1 + - libsqlite=3.45.3=h2797004_0 + - libssh2=1.11.0=h0841786_0 + - libstdcxx-ng=13.2.0=hc0a3c3a_7 + - libsystemd0=255=h3516f8a_1 + - libtasn1=4.19.0=h166bdaf_0 + - libtiff=4.6.0=h1dd3fc0_3 + - libunistring=0.9.10=h7f98852_0 + - libuuid=2.38.1=h0b41bf4_0 + - libva=2.21.0=hd590300_0 + - libvorbis=1.3.7=h9c3ff4c_0 + - libvpx=1.14.0=h59595ed_0 + - libwebp-base=1.4.0=hd590300_0 + - libxcb=1.15=h0b41bf4_0 + - libxcrypt=4.4.36=hd590300_1 + - libxkbcommon=1.7.0=h662e7e4_0 + - libxml2=2.12.7=hc051c1a_0 + - libzlib=1.2.13=hd590300_5 + - libzopfli=1.0.3=h9c3ff4c_0 + - linkify-it-py=2.0.3=pyhd8ed1ab_0 + - lz4-c=1.9.4=hcb278e6_0 + - markdown=3.6=pyhd8ed1ab_0 + - markdown-it-py=3.0.0=pyhd8ed1ab_0 + - markupsafe=2.1.5=py312h98912ed_0 + - matplotlib=3.8.4=py312h7900ff3_2 + - matplotlib-base=3.8.4=py312h20ab3a6_2 + - matplotlib-inline=0.1.7=pyhd8ed1ab_0 + - mdit-py-plugins=0.4.1=pyhd8ed1ab_0 + - mdurl=0.1.2=pyhd8ed1ab_0 + - mistune=3.0.2=pyhd8ed1ab_0 + - mpg123=1.32.6=h59595ed_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - mysql-common=8.3.0=hf1915f5_4 + - mysql-libs=8.3.0=hca2cd23_4 + - nbclient=0.10.0=pyhd8ed1ab_0 + - nbconvert=7.16.4=hd8ed1ab_0 + - nbconvert-core=7.16.4=pyhd8ed1ab_0 + - nbconvert-pandoc=7.16.4=hd8ed1ab_0 + - nbformat=5.10.4=pyhd8ed1ab_0 + - ncurses=6.5=h59595ed_0 + - nest-asyncio=1.6.0=pyhd8ed1ab_0 + - nettle=3.9.1=h7ab15ed_0 + - networkx=3.3=pyhd8ed1ab_1 + - notebook=7.2.0=pyhd8ed1ab_0 + - notebook-shim=0.2.4=pyhd8ed1ab_0 + - nspr=4.35=h27087fc_0 + - nss=3.100=hca3bf56_0 + - numpy=1.26.4=py312heda63a1_0 + - ocl-icd=2.3.2=hd590300_1 + - opencv=4.9.0=qt6_py312hac6a15e_614 + - openexr=3.2.2=haf962dd_1 + - openh264=2.4.1=h59595ed_0 + - openjpeg=2.5.2=h488ebb8_0 + - openssl=3.3.0=hd590300_0 + - overrides=7.7.0=pyhd8ed1ab_0 + - p11-kit=0.24.1=hc5aa10d_0 + - packaging=24.0=pyhd8ed1ab_0 + - pandas=2.2.2=py312h1d6d2e6_1 + - pandoc=3.2=ha770c72_0 + - pandocfilters=1.5.0=pyhd8ed1ab_0 + - panel=1.4.2=pyhd8ed1ab_0 + - param=2.1.0=pyhca7485f_0 + - parso=0.8.4=pyhd8ed1ab_0 + - pcre2=10.43=hcad00b1_0 + - pexpect=4.9.0=pyhd8ed1ab_0 + - pickleshare=0.7.5=py_1003 + - pillow=10.3.0=py312hdcec9eb_0 + - pip=24.0=pyhd8ed1ab_0 + - pixman=0.43.2=h59595ed_0 + - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1 + - platformdirs=4.2.2=pyhd8ed1ab_0 + - plotly=5.22.0=pyhd8ed1ab_0 + - ply=3.11=pyhd8ed1ab_2 + - prometheus_client=0.20.0=pyhd8ed1ab_0 + - prompt-toolkit=3.0.42=pyha770c72_0 + - prompt_toolkit=3.0.42=hd8ed1ab_0 + - psutil=5.9.8=py312h98912ed_0 + - pthread-stubs=0.4=h36c2ea0_1001 + - ptyprocess=0.7.0=pyhd3deb0d_0 + - pugixml=1.14=h59595ed_0 + - pulseaudio-client=17.0=hb77b528_0 + - pure_eval=0.2.2=pyhd8ed1ab_0 + - py-opencv=4.9.0=qt6_py312hb24711e_614 + - pycparser=2.22=pyhd8ed1ab_0 + - pygments=2.18.0=pyhd8ed1ab_0 + - pyparsing=3.1.2=pyhd8ed1ab_0 + - pyqt=5.15.9=py312h949fe66_5 + - pyqt5-sip=12.12.2=py312h30efb56_5 + - pysocks=1.7.1=pyha2e5f31_6 + - python=3.12.3=hab00c5b_0_cpython + - python-dateutil=2.9.0=pyhd8ed1ab_0 + - python-fastjsonschema=2.19.1=pyhd8ed1ab_0 + - python-json-logger=2.0.7=pyhd8ed1ab_0 + - python-tzdata=2024.1=pyhd8ed1ab_0 + - python_abi=3.12=4_cp312 + - pytz=2024.1=pyhd8ed1ab_0 + - pyviz_comms=3.0.2=pyhd8ed1ab_1 + - pywavelets=1.4.1=py312hc7c0aa3_1 + - pyyaml=6.0.1=py312h98912ed_1 + - pyzmq=26.0.3=py312h8fd38d8_0 + - qt-main=5.15.8=h112747c_20 + - qt6-main=6.6.3=hd0aab4e_0 + - qtconsole-base=5.5.2=pyha770c72_0 + - qtpy=2.4.1=pyhd8ed1ab_0 + - rav1e=0.6.6=he8a937b_2 + - readline=8.2=h8228510_1 + - referencing=0.35.1=pyhd8ed1ab_0 + - requests=2.31.0=pyhd8ed1ab_0 + - rfc3339-validator=0.1.4=pyhd8ed1ab_0 + - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + - rpds-py=0.18.1=py312h4413252_0 + - scikit-image=0.22.0=py312hfb8ada1_2 + - scipy=1.13.0=py312hc2bc53b_1 + - send2trash=1.8.3=pyh0d859eb_0 + - setuptools=69.5.1=pyhd8ed1ab_0 + - sip=6.7.12=py312h30efb56_0 + - six=1.16.0=pyh6c4a22f_0 + - snappy=1.2.0=hdb0a2a9_1 + - sniffio=1.3.1=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - stack_data=0.6.2=pyhd8ed1ab_0 + - svt-av1=2.0.0=h59595ed_0 + - tbb=2021.12.0=h297d8ca_1 + - tenacity=8.3.0=pyhd8ed1ab_0 + - terminado=0.18.1=pyh0d859eb_0 + - tifffile=2024.5.10=pyhd8ed1ab_0 + - tinycss2=1.3.0=pyhd8ed1ab_0 + - tk=8.6.13=noxft_h4845f30_101 + - toml=0.10.2=pyhd8ed1ab_0 + - tomli=2.0.1=pyhd8ed1ab_0 + - tornado=6.4=py312h98912ed_0 + - tqdm=4.66.4=pyhd8ed1ab_0 + - traitlets=5.14.3=pyhd8ed1ab_0 + - types-python-dateutil=2.9.0.20240316=pyhd8ed1ab_0 + - typing-extensions=4.11.0=hd8ed1ab_0 + - typing_extensions=4.11.0=pyha770c72_0 + - typing_utils=0.1.0=pyhd8ed1ab_0 + - tzdata=2024a=h0c530f3_0 + - uc-micro-py=1.0.3=pyhd8ed1ab_0 + - uri-template=1.3.0=pyhd8ed1ab_0 + - urllib3=2.2.1=pyhd8ed1ab_0 + - wcwidth=0.2.13=pyhd8ed1ab_0 + - webcolors=1.13=pyhd8ed1ab_0 + - webencodings=0.5.1=pyhd8ed1ab_2 + - websocket-client=1.8.0=pyhd8ed1ab_0 + - wheel=0.43.0=pyhd8ed1ab_1 + - widgetsnbextension=4.0.10=pyhd8ed1ab_0 + - x264=1!164.3095=h166bdaf_2 + - x265=3.5=h924138e_3 + - xcb-util=0.4.0=hd590300_1 + - xcb-util-cursor=0.1.4=hd590300_1 + - xcb-util-image=0.4.0=h8ee46fc_1 + - xcb-util-keysyms=0.4.0=h8ee46fc_1 + - xcb-util-renderutil=0.3.9=hd590300_1 + - xcb-util-wm=0.4.1=h8ee46fc_1 + - xkeyboard-config=2.41=hd590300_0 + - xorg-fixesproto=5.0=h7f98852_1002 + - xorg-inputproto=2.3.2=h7f98852_1002 + - xorg-kbproto=1.0.7=h7f98852_1002 + - xorg-libice=1.1.1=hd590300_0 + - xorg-libsm=1.2.4=h7391055_0 + - xorg-libx11=1.8.9=h8ee46fc_0 + - xorg-libxau=1.0.11=hd590300_0 + - xorg-libxdmcp=1.1.3=h7f98852_0 + - xorg-libxext=1.3.4=h0b41bf4_2 + - xorg-libxfixes=5.0.3=h7f98852_1004 + - xorg-libxi=1.7.10=h7f98852_0 + - xorg-libxrender=0.9.11=hd590300_0 + - xorg-renderproto=0.11.1=h7f98852_1002 + - xorg-xextproto=7.3.0=h0b41bf4_1003 + - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002 + - xorg-xproto=7.0.31=h7f98852_1007 + - xyzservices=2024.4.0=pyhd8ed1ab_0 + - xz=5.2.6=h166bdaf_0 + - yaml=0.2.5=h7f98852_2 + - zeromq=4.3.5=h75354e8_4 + - zfp=1.0.1=h59595ed_0 + - zipp=3.17.0=pyhd8ed1ab_0 + - zlib=1.2.13=hd590300_5 + - zlib-ng=2.0.7=h0b41bf4_0 + - zstd=1.5.6=ha6fb4c9_0