AllenCellModeling / napari-aicsimageio

Multiple file format reading directly into napari using pure Python
GNU General Public License v3.0
33 stars 10 forks source link

.ims (Bioformats supported) file type not loaded #46

Closed thanushipeiris closed 1 year ago

thanushipeiris commented 2 years ago

Description

Bitplane imaris (.ims) is Bioformats supported file type that should be loaded into napari successfully with this plugin but hasn't worked for me. I'm not sure if it's something wrong with my environment or an actual bug.

Reproduction

None of the imaris demo files load when dragged and dropped into the napari window, including PyramidialCell.ims.

The error message is

No readers found to try reading C:/Users/thanushi.peiris/Imaris Demo Images/PyramidalCell.ims.!
AICSImageIO: Unsupported file format.
AICSImageIO: Unsupported file format.

To try and see if it was an issue with napari-aicsimageio or aicsimageio, I did also install aicsimageio and try to load it directly using

import aicsimageio
image = img = aicsimageio.readers.bioformats_reader.BioformatsReader("PyramidialCell.ims")

and I get an error to do with jpype which doesn't resolve even when I try all the instructions in the error message

jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

BioformatsReader requires a java executable to be available in your environment. If you are using conda, you can install with `conda install -c conda-forge openjdk`.

Note: you may need to reactivate your conda environment after installing opendjk. If you still have this error, try:

# mac and linux:
export JAVA_HOME=$CONDA_PREFIX

# windows:
set JAVA_HOME=%CONDA_PREFIX%\Library

So it might still be a bug in aicsimageio.

Environment

napari: 0.4.15
Platform: Windows-10-10.0.14393-SP0
Python: 3.9.6 (default, Jul 30 2021, 11:42:22) [MSC v.1916 64 bit (AMD64)]
Qt: 5.15.2
PyQt5: 5.15.6
NumPy: 1.20.3
SciPy: 1.6.2
Dask: 2021.07.2
VisPy: 0.10.0

OpenGL:
- GL version: 4.6.0 NVIDIA 431.70
- MAX_TEXTURE_SIZE: 32768

Screens:
- screen 1: resolution 3440x1440, scale 1.0

Plugins:
- Measurements (skimage regionprops): 0.2.5
- Utilities (skimage regionprops): 0.2.5
- aicsimageio-in-memory: 0.6.1
- aicsimageio-out-of-memory: 0.6.1
- animation: 0.0.2
- bfio: 2.3.0
- cellpose-napari: 0.1.4
- napari-czifile2: 0.2.5
- napari-folder-browser: 0.1.2
- napari-tools-menu: 0.1.5
- ome-types: 0.2.10
- scikit-image: 0.4.15
- smo: 2.0.0
- svg: 0.1.5
evamaxfield commented 2 years ago

Hmmmm. Pinging @tlambert03 any ideas?

tlambert03 commented 2 years ago

hmmm, worked for me.

conda create -n ims python=3.9 openjdk
pip install napari[all] napari-aicsimageio bioformats_jar
napari PyramidalCell.ims
Untitled2

Did you install openjdk (or generally install Java somehow) as described in the error?

tlambert03 commented 2 years ago

pip install napari[all] napari-aicsimageio bioformats_jar

sorry, just remembered this package also includes bioformats_jar ... so you shouldn't need that last bit either. just `pip install napari[all] napari-aicsimageio ...

If it's still not working for you, can you give your full environment creation code?

thanushipeiris commented 2 years ago

Yeah it's still not working - I used the same code as you

conda create -n ims python=3.9 openjdk
conda activate ims
pip install napari[all] napari-aicsimageio
napari PyramidalCell.ims

but get this error

AICSImageIO: Unsupported file format.
AICSImageIO: Unsupported file format.
Traceback (most recent call last):
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\plugins\io.py", line 118, in read_data_with_plugins
    layer_data = reader(npe1_path)  # try to read data
TypeError: 'NoneType' object is not callable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\Scripts\napari.exe\__main__.py", line 7, in <module>
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\__main__.py", line 447, in main
    _run()
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\__main__.py", line 312, in _run
    viewer = view_path(  # noqa: F841
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\view_layers.py", line 178, in view_path
    return _make_viewer_then('open', args, kwargs)
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\view_layers.py", line 126, in _make_viewer_then
    method(*args, **kwargs)
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\components\viewer_model.py", line 918, in open
    self._add_layers_with_plugins(
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\components\viewer_model.py", line 983, in _add_layers_with_plugins
    layer_data, hookimpl = read_data_with_plugins(
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari\plugins\io.py", line 121, in read_data_with_plugins
    raise PluginCallError(result.implementation, cause=exc)
  File "C:\Users\thanushi.peiris\Anaconda3\envs\ims\lib\site-packages\napari_plugin_engine\exceptions.py", line 197, in __init__
    plugin = hook_implementation.plugin
AttributeError: 'NoneType' object has no attribute 'plugin'

When I open napari and try dragging and dropping, it's the exact same error as before.

tlambert03 commented 2 years ago

That's a different error than before, yes? Lemme try on windows tomorrow

thanushipeiris commented 2 years ago

That's a different error than before, yes? Lemme try on windows tomorrow

Yes but that's because I'm using the napari PyramidalCell.ims command. I was just opening napari and dragging and dropping the file before - the error message is the same when I do that.

Do you think it might be me not configuring java on my machine properly?

thanushipeiris commented 2 years ago

Hi @tlambert03, just wanted to see if there's been any progress on this

tlambert03 commented 2 years ago

sorry! not yet :/ still not sure what's different between our systems, and I apologize for not having time to dig deeper yet.

psobolewskiPhD commented 1 year ago

Not sure how relevant this is still...but: on my mac, I can replicate this using this install pattern:

conda create -n ims python=3.9 openjdk pyqt
conda activate ims
pip install napari napari-aicsimageio
napari PyramidalCell.ims

(i'm on arm64, so need pyqt from conda)

However, using

import aicsimageio
image = img = aicsimageio.readers.bioformats_reader.BioformatsReader("PyramidialCell.ims")

gave me a hint as to how to resolve:

jgo.jgo.ExecutableNotFound: mvn not found on path /Users/piotrsobolewski/Dev/miniforge3/envs/ims/bin:/Users/piotrsobolewski/Dev/miniforge3/condabin:/Users/piotrsobolewski/Dev/miniforge3/bin:/opt/homebrew/sbin:/opt/homebrew/opt/llvm/bin:/Applications/CMake.app/Contents/bin:/usr/local/texlive/2020/bin/custom:/Users/piotrsobolewski/Library/Python/3.8/bin:/Users/piotrsobolewski/.cargo/bin:/opt/homebrew/bin:/opt/homebrew/opt/fzf/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/piotrsobolewski/Dev/miniforge3/envs/ims/lib/python3.9/site-packages/aicsimageio/readers/bioformats_reader.py", line 147, in __init__
    with BioFile(self._path, **self._bf_kwargs) as rdr:  # type: ignore
  File "/Users/piotrsobolewski/Dev/miniforge3/envs/ims/lib/python3.9/site-packages/aicsimageio/readers/bioformats_reader.py", line 301, in __init__
    loci = _try_get_loci()  # may raise RuntimeError
  File "/Users/piotrsobolewski/Dev/miniforge3/envs/ims/lib/python3.9/site-packages/aicsimageio/readers/bioformats_reader.py", line 654, in _try_get_loci
    raise RuntimeError(MAVEN_ERROR_MSG) from e
RuntimeError: 
BioformatsReader requires the maven ('mvn') executable to be
available in your environment. If you are using conda, you can 
install with `conda install -c conda-forge scyjava`.

Alternatively, install from https://maven.apache.org/download.cgi

And I can say that conda install -c conda-forge scyjava fixed the issue. (I used mamba, but it shouldn't matter) this shows maven as one of the installed packages. I guess it's not a python thing, but a java one so it's not on pypi and can't be pip installed.

Anyhow, I also tried in a new env with scyjava and openjdk from conda-forge when making the env and then the pip install made everything work, though I guess the multi-resolution part is read as 2 different scenes, which may not be perfect.

psobolewskiPhD commented 1 year ago

Digging a little deeper, it looks like this is expected behavior, see: https://github.com/tlambert03/bioformats_jar/pull/4#issuecomment-1132345219 Seems like maven does need to be available. Quite problematic for this plugin, which by default (in napari GUI) would be installed by pip 😭

tlambert03 commented 1 year ago

yeah, bioformats support in aicsimageio has "always" needed a conda environment and at least a couple conda installs that we can't enforce from the napari plugin installer

psobolewskiPhD commented 1 year ago

yeah, bioformats support in aicsimageio has "always" needed a conda environment and at least a couple conda installs that we can't enforce from the napari plugin installer

Thanks for the clarification. I knew java was required, but folks probably have that. The maven part was not something I was aware of or expecting. Definitely a bummer. But I guess once napari supports conda plugins in the GUI it will be better?

Anyhow, I'll make a PR to mention it in the README of this repo too.

tlambert03 commented 1 year ago

yeah, I guess. i think it's fine to just say that this feature requires your ability to conda install into your napari environment. (I'm totally fine having some features that aren't trivially available in the napari bundle)

tlambert03 commented 1 year ago

in any case https://github.com/tlambert03/bioformats_jar/pull/4 was just "the right thing to do". Bundling a specific version of the bioformats java jar was a janky solution to begin with. scyjava is specifically designed to do this sort of dependency handling, and it now lets end users update bioformats without needing to update aicsimageio

psobolewskiPhD commented 1 year ago

My only concern is that as far as I can tellβ€”and please correct me!β€”pip sees conda installed stuff, but conda does not see pip stuff, right? So if someone set up a conda env and then pip install napari[all] like it's recommended on napari.org, and then does conda install napari-aicsimageio they will get everything re-installed. So the README should say to ensure java and mvn executables, and suggest conda install openjdk maven before installing the plugin, right?

tlambert03 commented 1 year ago

Yeah it's not that simple, you should be able to do that conda install in either order. Let me know if you find otherwise

psobolewskiPhD commented 1 year ago

If I make a conda env, install napari with pip, and then do: mamba install napari-aicsimageio, I get basically everything reinstalled:

``` Package Version Build Channel Size ───────────────────────────────────────────────────────────────────────────────────────────────────────── Install: ───────────────────────────────────────────────────────────────────────────────────────────────────────── + aicsimageio 4.9.4 pyhd8ed1ab_0 conda-forge/noarch Cached + alabaster 0.7.13 pyhd8ed1ab_0 conda-forge/noarch Cached + aom 3.5.0 h7ea286d_0 conda-forge/osx-arm64 Cached + app-model 0.1.2 pyhd8ed1ab_0 conda-forge/noarch Cached + appdirs 1.4.4 pyh9f0ad1d_0 conda-forge/noarch Cached + appnope 0.1.3 pyhd8ed1ab_0 conda-forge/noarch Cached + asciitree 0.3.3 py_2 conda-forge/noarch Cached + asttokens 2.2.1 pyhd8ed1ab_0 conda-forge/noarch Cached + attrs 22.2.0 pyh71513ae_0 conda-forge/noarch Cached + babel 2.12.1 pyhd8ed1ab_1 conda-forge/noarch Cached + backcall 0.2.0 pyh9f0ad1d_0 conda-forge/noarch Cached + backports 1.0 pyhd8ed1ab_3 conda-forge/noarch Cached + backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge/noarch Cached + blosc 1.21.3 h1d6ff8b_0 conda-forge/osx-arm64 Cached + bokeh 2.4.3 pyhd8ed1ab_3 conda-forge/noarch Cached + brotli 1.0.9 h1a8c8d9_8 conda-forge/osx-arm64 Cached + brotli-bin 1.0.9 h1a8c8d9_8 conda-forge/osx-arm64 Cached + brotlipy 0.7.0 py39h02fc5c5_1005 conda-forge/osx-arm64 Cached + brunsli 0.1 h9f76cd9_0 conda-forge/osx-arm64 Cached + c-ares 1.18.1 h3422bc3_0 conda-forge/osx-arm64 Cached + c-blosc2 2.7.1 h303ed30_0 conda-forge/osx-arm64 Cached + cachey 0.2.1 pyh9f0ad1d_0 conda-forge/noarch Cached + certifi 2022.12.7 pyhd8ed1ab_0 conda-forge/noarch Cached + cffi 1.15.1 py39h7e6b969_3 conda-forge/osx-arm64 Cached + cfitsio 4.2.0 h2f961c4_0 conda-forge/osx-arm64 Cached + charls 2.4.1 hb7217d7_0 conda-forge/osx-arm64 Cached + charset-normalizer 2.1.1 pyhd8ed1ab_0 conda-forge/noarch Cached + click 8.1.3 unix_pyhd8ed1ab_2 conda-forge/noarch Cached + cloudpickle 2.2.1 pyhd8ed1ab_0 conda-forge/noarch Cached + colorama 0.4.6 pyhd8ed1ab_0 conda-forge/noarch Cached + comm 0.1.2 pyhd8ed1ab_0 conda-forge/noarch Cached + cryptography 39.0.2 py39he2a39a8_0 conda-forge/osx-arm64 Cached + cytoolz 0.12.0 py39h02fc5c5_1 conda-forge/osx-arm64 Cached + dask 2023.3.0 pyhd8ed1ab_0 conda-forge/noarch Cached + dask-core 2023.3.0 pyhd8ed1ab_0 conda-forge/noarch Cached + dav1d 1.0.0 he4db4b2_1 conda-forge/osx-arm64 Cached + debugpy 1.6.6 py39h23fbdae_0 conda-forge/osx-arm64 Cached + decorator 5.1.1 pyhd8ed1ab_0 conda-forge/noarch Cached + distributed 2023.3.0 pyhd8ed1ab_0 conda-forge/noarch Cached + docstring_parser 0.15 pyhd8ed1ab_0 conda-forge/noarch Cached + docutils 0.17.1 py39h2804cbe_3 conda-forge/osx-arm64 Cached + elementpath 2.5.3 pyhd8ed1ab_0 conda-forge/noarch Cached + entrypoints 0.4 pyhd8ed1ab_0 conda-forge/noarch Cached + executing 1.2.0 pyhd8ed1ab_0 conda-forge/noarch Cached + expat 2.5.0 hb7217d7_0 conda-forge/osx-arm64 Cached + fasteners 0.17.3 pyhd8ed1ab_0 conda-forge/noarch Cached + ffmpeg 5.1.2 gpl_hf318d42_106 conda-forge/osx-arm64 Cached + font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge/noarch Cached + font-ttf-inconsolata 3.000 h77eed37_0 conda-forge/noarch Cached + font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge/noarch Cached + font-ttf-ubuntu 0.83 hab24e00_0 conda-forge/noarch Cached + fontconfig 2.14.2 h82840c6_0 conda-forge/osx-arm64 Cached + fonts-conda-ecosystem 1 0 conda-forge/noarch Cached + fonts-conda-forge 1 0 conda-forge/noarch Cached + freetype 2.12.1 hd633e50_1 conda-forge/osx-arm64 Cached + freetype-py 2.3.0 pyhd8ed1ab_0 conda-forge/noarch Cached + fsspec 2023.3.0 pyhd8ed1ab_1 conda-forge/noarch Cached + gettext 0.21.1 h0186832_0 conda-forge/osx-arm64 Cached + giflib 5.2.1 h27ca646_2 conda-forge/osx-arm64 Cached + glib 2.74.1 hb5ab8b9_1 conda-forge/osx-arm64 Cached + glib-tools 2.74.1 hb5ab8b9_1 conda-forge/osx-arm64 Cached + gmp 6.2.1 h9f76cd9_0 conda-forge/osx-arm64 Cached + gnutls 3.7.8 h9f1a10d_0 conda-forge/osx-arm64 Cached + gst-plugins-base 1.22.0 h8b7775e_2 conda-forge/osx-arm64 Cached + gstreamer 1.22.0 hcb7b3dd_2 conda-forge/osx-arm64 Cached + heapdict 1.0.1 py_0 conda-forge/noarch Cached + hsluv 5.0.2 pyh44b312d_0 conda-forge/noarch Cached + icu 70.1 h6b3803e_0 conda-forge/osx-arm64 Cached + idna 3.4 pyhd8ed1ab_0 conda-forge/noarch Cached + imagecodecs 2023.1.23 py39h43d391a_0 conda-forge/osx-arm64 Cached + imageio 2.26.0 pyh24c5eb1_0 conda-forge/noarch Cached + imageio-ffmpeg 0.4.8 pyhd8ed1ab_0 conda-forge/noarch Cached + imagesize 1.4.1 pyhd8ed1ab_0 conda-forge/noarch Cached + importlib-metadata 6.0.0 pyha770c72_0 conda-forge/noarch Cached + importlib_metadata 6.0.0 hd8ed1ab_0 conda-forge/noarch Cached + importlib_resources 5.12.0 pyhd8ed1ab_0 conda-forge/noarch Cached + in-n-out 0.1.7 pyhd8ed1ab_0 conda-forge/noarch Cached + ipykernel 6.21.2 pyh736e0ef_0 conda-forge/noarch Cached + ipython 8.11.0 pyhd1c38e8_0 conda-forge/noarch Cached + ipython_genutils 0.2.0 py_1 conda-forge/noarch Cached + jedi 0.18.2 pyhd8ed1ab_0 conda-forge/noarch Cached + jinja2 3.1.2 pyhd8ed1ab_1 conda-forge/noarch Cached + jpeg 9e h1a8c8d9_3 conda-forge/osx-arm64 Cached + jsonschema 4.17.3 pyhd8ed1ab_0 conda-forge/noarch Cached + jupyter_client 8.0.3 pyhd8ed1ab_0 conda-forge/noarch Cached + jupyter_core 5.2.0 py39h2804cbe_0 conda-forge/osx-arm64 Cached + jxrlib 1.1 h27ca646_2 conda-forge/osx-arm64 Cached + kiwisolver 1.4.4 py39haaf3ac1_1 conda-forge/osx-arm64 Cached + krb5 1.20.1 h69eda48_0 conda-forge/osx-arm64 Cached + lame 3.100 h1a8c8d9_1003 conda-forge/osx-arm64 Cached + lcms2 2.15 h481adae_0 conda-forge/osx-arm64 Cached + lerc 4.0.0 h9a09cb3_0 conda-forge/osx-arm64 Cached + libaec 1.0.6 hb7217d7_1 conda-forge/osx-arm64 Cached + libavif 0.11.1 h3d80962_0 conda-forge/osx-arm64 Cached + libblas 3.9.0 16_osxarm64_openblas conda-forge/osx-arm64 Cached + libbrotlicommon 1.0.9 h1a8c8d9_8 conda-forge/osx-arm64 Cached + libbrotlidec 1.0.9 h1a8c8d9_8 conda-forge/osx-arm64 Cached + libbrotlienc 1.0.9 h1a8c8d9_8 conda-forge/osx-arm64 Cached + libcblas 3.9.0 16_osxarm64_openblas conda-forge/osx-arm64 Cached + libclang 14.0.6 default_h81a5282_0 conda-forge/osx-arm64 Cached + libclang13 14.0.6 default_he70ec0d_0 conda-forge/osx-arm64 Cached + libcurl 7.88.1 h9049daf_0 conda-forge/osx-arm64 Cached + libcxx 15.0.7 h75e25f2_0 conda-forge/osx-arm64 Cached + libdeflate 1.17 h1a8c8d9_0 conda-forge/osx-arm64 Cached + libedit 3.1.20191231 hc8eb9b7_2 conda-forge/osx-arm64 Cached + libev 4.33 h642e427_1 conda-forge/osx-arm64 Cached + libgfortran 5.0.0 12_2_0_hd922786_30 conda-forge/osx-arm64 Cached + libgfortran5 12.2.0 h0eea778_30 conda-forge/osx-arm64 Cached + libglib 2.74.1 h4646484_1 conda-forge/osx-arm64 Cached + libiconv 1.17 he4db4b2_0 conda-forge/osx-arm64 Cached + libidn2 2.3.4 h1a8c8d9_0 conda-forge/osx-arm64 Cached + liblapack 3.9.0 16_osxarm64_openblas conda-forge/osx-arm64 Cached + libllvm14 14.0.6 hf6e71e7_1 conda-forge/osx-arm64 Cached + libnghttp2 1.52.0 hae82a92_0 conda-forge/osx-arm64 Cached + libogg 1.3.4 h27ca646_1 conda-forge/osx-arm64 Cached + libopenblas 0.3.21 openmp_hc731615_3 conda-forge/osx-arm64 Cached + libopus 1.3.1 h27ca646_1 conda-forge/osx-arm64 Cached + libpng 1.6.39 h76d750c_0 conda-forge/osx-arm64 Cached + libpq 15.2 h1a28acd_0 conda-forge/osx-arm64 Cached + libsodium 1.0.18 h27ca646_1 conda-forge/osx-arm64 Cached + libssh2 1.10.0 h7a5bd25_3 conda-forge/osx-arm64 Cached + libtasn1 4.19.0 h1a8c8d9_0 conda-forge/osx-arm64 Cached + libtiff 4.5.0 h5dffbdd_2 conda-forge/osx-arm64 Cached + libunistring 0.9.10 h3422bc3_0 conda-forge/osx-arm64 Cached + libvorbis 1.3.7 h9f76cd9_0 conda-forge/osx-arm64 Cached + libvpx 1.11.0 hc470f4d_3 conda-forge/osx-arm64 Cached + libwebp-base 1.2.4 h57fd34a_0 conda-forge/osx-arm64 Cached + libxcb 1.13 h9b22ae9_1004 conda-forge/osx-arm64 Cached + libxml2 2.10.3 h87b0503_0 conda-forge/osx-arm64 Cached + libxslt 1.1.37 h1bd8bc4_0 conda-forge/osx-arm64 Cached + libzopfli 1.0.3 h9f76cd9_0 conda-forge/osx-arm64 Cached + llvm-openmp 15.0.7 h7cfbb63_0 conda-forge/osx-arm64 Cached + locket 1.0.0 pyhd8ed1ab_0 conda-forge/noarch Cached + lxml 4.9.2 py39h0520ce3_0 conda-forge/osx-arm64 Cached + lz4 4.3.2 py39hb35ce34_0 conda-forge/osx-arm64 Cached + lz4-c 1.9.4 hb7217d7_0 conda-forge/osx-arm64 Cached + magicgui 0.7.2 pyhd8ed1ab_0 conda-forge/noarch Cached + markdown-it-py 2.2.0 pyhd8ed1ab_0 conda-forge/noarch Cached + markupsafe 2.1.2 py39h02fc5c5_0 conda-forge/osx-arm64 Cached + matplotlib-inline 0.1.6 pyhd8ed1ab_0 conda-forge/noarch Cached + mdurl 0.1.0 pyhd8ed1ab_0 conda-forge/noarch Cached + msgpack-python 1.0.5 py39haaf3ac1_0 conda-forge/osx-arm64 Cached + mypy_extensions 1.0.0 pyha770c72_0 conda-forge/noarch Cached + mysql-common 8.0.32 h518ea0a_0 conda-forge/osx-arm64 Cached + mysql-libs 8.0.32 hcb599eb_0 conda-forge/osx-arm64 Cached + napari 0.4.17 pyh275ddea_0_pyqt conda-forge/noarch Cached + napari-aicsimageio 0.4.1 pyhd8ed1ab_0 conda-forge/noarch Cached + napari-console 0.0.7 pyhd8ed1ab_0 conda-forge/noarch Cached + napari-plugin-engine 0.2.0 pyhd8ed1ab_2 conda-forge/noarch Cached + napari-svg 0.1.6 pyhd8ed1ab_1 conda-forge/noarch Cached + nest-asyncio 1.5.6 pyhd8ed1ab_0 conda-forge/noarch Cached + nettle 3.8.1 h63371fa_1 conda-forge/osx-arm64 Cached + networkx 3.0 pyhd8ed1ab_0 conda-forge/noarch Cached + npe2 0.6.2 pyhd8ed1ab_0 conda-forge/noarch Cached + nspr 4.35 hb7217d7_0 conda-forge/osx-arm64 Cached + nss 3.88 h789eff7_0 conda-forge/osx-arm64 Cached + numcodecs 0.11.0 py39h23fbdae_1 conda-forge/osx-arm64 Cached + numpy 1.24.2 py39hff61c6a_0 conda-forge/osx-arm64 Cached + numpydoc 1.5.0 pyhd8ed1ab_0 conda-forge/noarch Cached + ome-types 0.3.3 pyhd8ed1ab_0 conda-forge/noarch Cached + openh264 2.3.1 hb7217d7_2 conda-forge/osx-arm64 Cached + openjpeg 2.5.0 hbc2ba62_2 conda-forge/osx-arm64 Cached + p11-kit 0.24.1 h29577a5_0 conda-forge/osx-arm64 Cached + packaging 23.0 pyhd8ed1ab_0 conda-forge/noarch Cached + pandas 1.5.3 py39hde7b980_0 conda-forge/osx-arm64 Cached + parso 0.8.3 pyhd8ed1ab_0 conda-forge/noarch Cached + partd 1.3.0 pyhd8ed1ab_0 conda-forge/noarch Cached + pcre2 10.40 hb34f9b4_0 conda-forge/osx-arm64 Cached + pexpect 4.8.0 pyh1a96a4e_2 conda-forge/noarch Cached + pickleshare 0.7.5 py_1003 conda-forge/noarch Cached + pillow 9.4.0 py39h8bd98a6_1 conda-forge/osx-arm64 Cached + pint 0.20.1 pyhd8ed1ab_0 conda-forge/noarch Cached + pkgutil-resolve-name 1.3.10 pyhd8ed1ab_0 conda-forge/noarch Cached + platformdirs 3.1.0 pyhd8ed1ab_0 conda-forge/noarch Cached + ply 3.11 py_1 conda-forge/noarch Cached + pooch 1.7.0 pyhd8ed1ab_0 conda-forge/noarch Cached + prompt-toolkit 3.0.38 pyha770c72_0 conda-forge/noarch Cached + prompt_toolkit 3.0.38 hd8ed1ab_0 conda-forge/noarch Cached + psutil 5.9.4 py39h02fc5c5_0 conda-forge/osx-arm64 Cached + psygnal 0.8.1 pyhd8ed1ab_0 conda-forge/noarch Cached + pthread-stubs 0.4 h27ca646_1001 conda-forge/osx-arm64 Cached + ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge/noarch Cached + pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge/noarch Cached + pycparser 2.21 pyhd8ed1ab_0 conda-forge/noarch Cached + pydantic 1.10.6 py39h02fc5c5_0 conda-forge/osx-arm64 Cached + pygments 2.14.0 pyhd8ed1ab_0 conda-forge/noarch Cached + pyopengl 3.1.6 pyhd8ed1ab_1 conda-forge/noarch Cached + pyopenssl 23.0.0 pyhd8ed1ab_0 conda-forge/noarch Cached + pyproject_hooks 1.0.0 pyhd8ed1ab_0 conda-forge/noarch Cached + pyqt 5.15.7 py39h7fba1b6_3 conda-forge/osx-arm64 Cached + pyqt5-sip 12.11.0 py39h23fbdae_3 conda-forge/osx-arm64 Cached + pyrsistent 0.19.3 py39h02fc5c5_0 conda-forge/osx-arm64 Cached + pysocks 1.7.1 pyha2e5f31_6 conda-forge/noarch Cached + python-build 0.10.0 pyhd8ed1ab_0 conda-forge/noarch Cached + python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge/noarch Cached + python_abi 3.9 3_cp39 conda-forge/osx-arm64 Cached + pytomlpp 1.0.11 py39haaf3ac1_1 conda-forge/osx-arm64 Cached + pytz 2022.7.1 pyhd8ed1ab_0 conda-forge/noarch Cached + pywavelets 1.4.1 py39h4d8bf0d_0 conda-forge/osx-arm64 Cached + pyyaml 6.0 py39h02fc5c5_5 conda-forge/osx-arm64 Cached + pyzmq 25.0.0 py39h0553236_0 conda-forge/osx-arm64 Cached + qt-main 5.15.8 hfe8d25c_6 conda-forge/osx-arm64 Cached + qtconsole-base 5.4.0 pyha770c72_0 conda-forge/noarch Cached + qtpy 2.3.0 pyhd8ed1ab_0 conda-forge/noarch Cached + requests 2.28.2 pyhd8ed1ab_0 conda-forge/noarch Cached + resource_backed_dask_array 0.1.0 pyhd8ed1ab_1 conda-forge/noarch Cached + rich 13.3.2 pyhd8ed1ab_0 conda-forge/noarch Cached + scikit-image 0.19.3 py39hde7b980_2 conda-forge/osx-arm64 Cached + scipy 1.10.1 py39h18313fe_0 conda-forge/osx-arm64 Cached + shellingham 1.5.1 pyhd8ed1ab_0 conda-forge/noarch Cached + sip 6.7.7 py39h23fbdae_0 conda-forge/osx-arm64 Cached + six 1.16.0 pyh6c4a22f_0 conda-forge/noarch Cached + snappy 1.1.9 h17c5cce_2 conda-forge/osx-arm64 Cached + snowballstemmer 2.2.0 pyhd8ed1ab_0 conda-forge/noarch Cached + sortedcontainers 2.4.0 pyhd8ed1ab_0 conda-forge/noarch Cached + sphinx 4.5.0 pyh6c4a22f_0 conda-forge/noarch Cached + sphinxcontrib-applehelp 1.0.4 pyhd8ed1ab_0 conda-forge/noarch Cached + sphinxcontrib-devhelp 1.0.2 py_0 conda-forge/noarch Cached + sphinxcontrib-htmlhelp 2.0.1 pyhd8ed1ab_0 conda-forge/noarch Cached + sphinxcontrib-jsmath 1.0.1 py_0 conda-forge/noarch Cached + sphinxcontrib-qthelp 1.0.3 py_0 conda-forge/noarch Cached + sphinxcontrib-serializinghtml 1.1.5 pyhd8ed1ab_2 conda-forge/noarch Cached + stack_data 0.6.2 pyhd8ed1ab_0 conda-forge/noarch Cached + superqt 0.4.1 pyhd8ed1ab_0 conda-forge/noarch Cached + svt-av1 1.4.1 h7ea286d_0 conda-forge/osx-arm64 Cached + tblib 1.7.0 pyhd8ed1ab_0 conda-forge/noarch Cached + tifffile 2023.2.28 pyhd8ed1ab_0 conda-forge/noarch Cached + toml 0.10.2 pyhd8ed1ab_0 conda-forge/noarch Cached + tomli 2.0.1 pyhd8ed1ab_0 conda-forge/noarch Cached + toolz 0.12.0 pyhd8ed1ab_0 conda-forge/noarch Cached + tornado 6.2 py39h02fc5c5_1 conda-forge/osx-arm64 Cached + tqdm 4.65.0 pyhd8ed1ab_1 conda-forge/noarch Cached + traitlets 5.9.0 pyhd8ed1ab_0 conda-forge/noarch Cached + typer 0.4.2 pyhd8ed1ab_0 conda-forge/noarch Cached + typing-extensions 4.4.0 hd8ed1ab_0 conda-forge/noarch Cached + typing_extensions 4.4.0 pyha770c72_0 conda-forge/noarch Cached + urllib3 1.26.14 pyhd8ed1ab_0 conda-forge/noarch Cached + vispy 0.11.0 py39h27142b3_1 conda-forge/osx-arm64 Cached + wcwidth 0.2.6 pyhd8ed1ab_0 conda-forge/noarch Cached + wrapt 1.15.0 py39h02fc5c5_0 conda-forge/osx-arm64 Cached + x264 1!164.3095 h57fd34a_2 conda-forge/osx-arm64 Cached + x265 3.5 hbc6ce65_3 conda-forge/osx-arm64 Cached + xarray 2023.2.0 pyhd8ed1ab_0 conda-forge/noarch Cached + xmlschema 1.11.3 pyhd8ed1ab_0 conda-forge/noarch Cached + xorg-libxau 1.0.9 h27ca646_0 conda-forge/osx-arm64 Cached + xorg-libxdmcp 1.1.3 h27ca646_0 conda-forge/osx-arm64 Cached + yaml 0.2.5 h3422bc3_2 conda-forge/osx-arm64 Cached + zarr 2.13.6 pyhd8ed1ab_0 conda-forge/noarch Cached + zeromq 4.3.4 hbdafb3b_1 conda-forge/osx-arm64 Cached + zfp 1.0.0 hb6e4faa_3 conda-forge/osx-arm64 Cached + zict 2.2.0 pyhd8ed1ab_0 conda-forge/noarch Cached + zipp 3.15.0 pyhd8ed1ab_0 conda-forge/noarch Cached + zlib-ng 2.0.6 he4db4b2_0 conda-forge/osx-arm64 Cached + zstd 1.5.2 hf913c23_6 conda-forge/osx-arm64 Cached ```
  Summary:

  Install: 254 packages

Note: this is x86, because nd2 doesn't have arm64 on conda-forge (I made a PR for the migrator).

tlambert03 commented 1 year ago

Ah I see what you're saying. Yeah conda doesn't check site packages. If you don't want napari to be reinstalled, then don't install napari-aicsimagio from conda, instead just do the bioformats bit

conda install bioformats_jar

The bioformats-jar conda recipe installs scyjava, which in turn installs maven and openjdk.

Basically, there are a many ways for someone to get the necessary dependencies, and I don't want to mandate the order or sources in which they do so. In most cases, using conda to install bioformats_jar is sufficient, and I think that is either in the readme or the error message no?

psobolewskiPhD commented 1 year ago

It was in the error for using aicsimageio.readers.bioformats_reader.BioformatsReader("PyramidialCell.ims")

I would say certainly not obvious for someone using just napari and the plugin (as demonstrated by the existence o this thread 🀣), especially if they used the GUI to install. Anyhow, re: the conda install, using mamba install bioformats_jar looks fine in a pip napari install:

  + bioformats_jar  2020.5.27  pyhd8ed1ab_0    conda-forge/noarch          15kB
  + jgo                 1.0.4  pyhd8ed1ab_0    conda-forge/noarch        Cached
  + jpype1              1.4.1  py39haaf3ac1_1  conda-forge/osx-arm64     Cached
  + libcxx             15.0.7  h75e25f2_0      conda-forge/osx-arm64     Cached
  + maven               3.9.0  hce30654_0      conda-forge/osx-arm64     Cached
  + openjdk            17.0.3  hf913c23_5      conda-forge/osx-arm64     Cached
  + packaging            23.0  pyhd8ed1ab_0    conda-forge/noarch        Cached
  + psutil              5.9.4  py39h02fc5c5_0  conda-forge/osx-arm64     Cached
  + python_abi            3.9  3_cp39          conda-forge/osx-arm64     Cached
  + scyjava             1.9.0  pyhd8ed1ab_0    conda-forge/noarch        Cached

I'll update the README.

tlambert03 commented 1 year ago

Thanks

psobolewskiPhD commented 1 year ago

Other than updating the docs I'm not sure what more we can do here, so going to close.