Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installing arm64 variant on Mac M1 #23

Open
haesleinhuepf opened this issue Oct 2, 2022 · 61 comments
Open

Installing arm64 variant on Mac M1 #23

haesleinhuepf opened this issue Oct 2, 2022 · 61 comments

Comments

@haesleinhuepf
Copy link
Owner

I'm attempting to install devbio-napari on a Mac M1. I do have rosetta installed and there everything works great. I'm failing to setup an environment using the arm64 architecture.

I followed the instructions here and use this command to setup an environment:

CONDA_SUBDIR=osx-arm64 mamba create --name devbio-napari-env python=3.9 devbio-napari redlionfish -c conda-forge

And receive this error:

Looking for: ['python=3.9', 'devbio-napari', 'redlionfish']

conda-forge/noarch       Using cache
pkgs/main/noarch         [====================] (00m:00s) No change
pkgs/r/osx-arm64         [====================] (00m:00s) Done
pkgs/r/noarch            [====================] (00m:00s) No change
pkgs/main/osx-arm64      [====================] (00m:00s) Done
conda-forge/osx-arm64    [====================] (00m:01s) Done
Encountered problems while solving.
Problem: nothing provides __linux needed by devbio-napari-0.6.0-linux_h41d4057_1

Maybe @thawn or @psobolewskiPhD can give me hints? (-:

Thanks!

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 2, 2022

I can confirm same error using arm64 miniforge3 and fresh env.
This seems like a conda/conda-forge issue.
Not sure why it's looking for linux? Maybe @goanpeca has some ideas?

Executing the query devbio-napari

conda-forge/osx-arm64                              @   2.0MB/s  1.8s
conda-forge/noarch                                 @   2.5MB/s  3.9s


 Name          Version Build            Channel           
───────────────────────────────────────────────────────────
 devbio-napari 0.7.0   linux_h41d4057_0 conda-forge/noarch
 devbio-napari 0.7.0   osx_hd1c38e8_0   conda-forge/noarch
 devbio-napari 0.7.0   win_h08f2357_0   conda-forge/noarch

Also, I don't get how it's noarch and yet has architectures...

@haesleinhuepf
Copy link
Owner Author

haesleinhuepf commented Oct 2, 2022

Thanks for the feedback Peter!

Ok, then it might be related to:

CC @kevinyamauchi @jaimergp

@jaimergp
Copy link

jaimergp commented Oct 2, 2022

CONDA_SUBDIR=osx-arm64 mamba create --name devbio-napari-env python=3.9 "devbio-napari=*=*osx*" redlionfish -c conda-forge

should work. I'll see why it's pulling __linux though.

@psobolewskiPhD
Copy link
Contributor

Alas, looks like a depend isn't arm64 yet:

Looking for: ['python=3.9', 'devbio-napari=[build=*osx*]']

conda-forge/osx-arm64                                       Using cache
conda-forge/noarch                                          Using cache
Encountered problems while solving:
  - nothing provides simpleitk needed by platymatch-0.0.3-pyhd8ed1ab_0

Executing the query simpleitk

conda-forge/osx-arm64                                       Using cache
conda-forge/noarch                                          Using cache


No entries matching "simpleitk" found

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 2, 2022

I'll make a PR to add it to the migrator like I did for redlionfish
Done: conda-forge/conda-forge-pinning-feedstock#3480

@jaimergp
Copy link

jaimergp commented Oct 2, 2022

Yep, that's the conclusion I reached too. We are using noarch packages with __virtual dependencies per OS to implement conditional dependencies. However, the OSX tree is not satisfied (as you saw with platymatch), so the solver sees a conflict for the preferred OSX variant. Then it tries with the other variants, which also conflict because of the __linux and __win dependencies. However, these are "simpler" (shallower, just one leaf) than the platymatch tree, and I guess the simpler conflict is reported.

Log details:

info     libsolv  ANALYZE UNSOLVABLE ----------------------
info     libsolv  JOB Rule #231328:
info     libsolv      devbio-napari-0.7.0-linux_h41d4057_0 [60296] (w1) Conflict.level1
info     libsolv      devbio-napari-0.7.0-osx_hd1c38e8_0 [60297] (w2) Conflict.level1
info     libsolv      devbio-napari-0.7.0-win_h08f2357_0 [60298] Conflict.level1
info     libsolv      next rules: 0 0
info     libsolv  Rule #68522:
info     libsolv      !devbio-napari-0.7.0-osx_hd1c38e8_0 [60297] (w1) Conflict.level1
info     libsolv      platymatch-0.0.3-pyhd8ed1ab_0 [96902] (w2) Conflict.level1
info     libsolv      next rules: 68523 68576
info     libsolv  Rule #68542:
info     libsolv      !devbio-napari-0.7.0-linux_h41d4057_0 [60296] (w1) Conflict.level1
info     libsolv      next rules: 0 0
info     libsolv  Rule #68432:
info     libsolv      !devbio-napari-0.7.0-win_h08f2357_0 [60298] (w1) Conflict.level1
info     libsolv      next rules: 0 0
info     libsolv  Rule #23740:
info     libsolv      !platymatch-0.0.3-pyhd8ed1ab_0 [96902] (w1) Conflict.level1
info     libsolv      next rules: 0 0
info     libsolv  enabledisablelearntrules called

@jaimergp
Copy link

jaimergp commented Oct 2, 2022

Fingers crossed for simpleitk. It hasn't received much attention in a while, apparently.

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 2, 2022

Fingers crossed for simpleitk. It hasn't received much attention in a while, apparently.

The ITK devs are active on GitHub, but maybe not following the feedstock repo carefully?
Maybe a case for pinging them on their repo: https://github.com/InsightSoftwareConsortium/SimpleITK
Or maybe their forums?
https://discourse.itk.org

Edit: Once the migrator makes the PR obviously.

@jaimergp
Copy link

jaimergp commented Oct 2, 2022

Huh, it depends on libsimpleitk, in the same situation :D

@psobolewskiPhD
Copy link
Contributor

Oddly, that one does have arm64 binaries:

Executing the query libsimpleitk

conda-forge/osx-arm64                                         No change
conda-forge/noarch                                 @   2.7MB/s  3.7s


 Name         Version Build      Channel              
───────────────────────────────────────────────────────
 libsimpleitk 2.1.1   hbdafb3b_0 conda-forge/osx-arm64
 libsimpleitk 2.1.1   hbdafb3b_1 conda-forge/osx-arm64
 libsimpleitk 2.1.0   hbdafb3b_3 conda-forge/osx-arm64

I guess it was manually migrated by the devs?

@jaimergp
Copy link

jaimergp commented Oct 2, 2022

o.o Then that PR should have been closed because the bot doesn't know otherwise :(

@jaimergp
Copy link

jaimergp commented Oct 2, 2022

I am fixing 2.2.0 for libsimpleitk, which takes 2h to build or so, apparently. I also closed the arm64 migration PR, so the bot will realize at some point that it can actually migrate simpleitk itself. So at some point we will have 2.2.0 ready and hopefully a green PR for arm64. Now we wait :)

@kevinyamauchi
Copy link

Nice sleuthing. Thanks, @psobolewskiPhD and @jaimergp !

@jaimergp
Copy link

jaimergp commented Oct 2, 2022

Ok the (lib)simpleitk 2.2.x depends on itk 5.3, not yet released on conda-forge (it's in RC state, so maybe soon), so I am going to focus on the 2.1.x series. In this case, libsimpleitk is available, but the Python bindings (simpleitk) fail on Windows. It could be a trivial fix or something else; we'll see.

I'll keep you posted!

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 2, 2022

The arm64 bot has made the PR for simpleitk:
conda-forge/simpleitk-feedstock#26
so there's progress!
Thanks for all your efforts Jaime! ❤️

@haesleinhuepf
Copy link
Owner Author

Awesome, big thanks @jaimergp @psobolewskiPhD

Also enjoy your weekend! 🌞

@jaimergp
Copy link

jaimergp commented Oct 5, 2022

PR was merged. It should be available soon.

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 5, 2022

Yup, it's live now. Trying devbio-napari now...
It's going 389 packages!
Definitely one to use mamba and not conda 🤣
Napari is outdated, 0.4.15, but it runs.
Trying some plugins now.
napari-cellpose is fine.
But I get an error with the assistant and clesperanto:

========================= Errors for plugin 'clEsperanto' =========================

napari version: 0.4.15


ERROR #1: Error while importing module napari_pyclesperanto_assistant._napari_plugin 

---------------------------------------------------------------------------
LogicError                                Traceback (most recent call last)
File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_plugin_engine/manager.py:318, in PluginManager._load_and_register(self=, mod_name='napari_pyclesperanto_assistant._napari_plugin', plugin_name='clEsperanto')
    317 try:
--> 318     module = load(mod_name)
        mod_name = 'napari_pyclesperanto_assistant._napari_plugin'
    319     if self.is_registered(module):

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_plugin_engine/manager.py:1042, in load(value='napari_pyclesperanto_assistant._napari_plugin')
   1041     raise ValueError(f"malformed entry point string: {value}")
-> 1042 module = importlib.import_module(match.group('module'))
        match = 
   1043 attrs = filter(None, (match.group('attr') or '').split('.'))

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/importlib/__init__.py:127, in import_module(name='napari_pyclesperanto_assistant._napari_plugin', package=None)
    126         level += 1
--> 127 return _bootstrap._gcd_import(name[level:], package, level)
        level = 0
        name = 'napari_pyclesperanto_assistant._napari_plugin'
        name[level:] = 'napari_pyclesperanto_assistant._napari_plugin'
        package = None
        _bootstrap = 

File :1030, in _gcd_import(name='napari_pyclesperanto_assistant._napari_plugin', package=None, level=0)

File :1007, in _find_and_load(name='napari_pyclesperanto_assistant._napari_plugin', import_=)

File :972, in _find_and_load_unlocked(name='napari_pyclesperanto_assistant._napari_plugin', import_=)

File :228, in _call_with_frames_removed(f=, *args=('napari_pyclesperanto_assistant',), **kwds={})

File :1030, in _gcd_import(name='napari_pyclesperanto_assistant', package=None, level=0)

File :1007, in _find_and_load(name='napari_pyclesperanto_assistant', import_=)

File :986, in _find_and_load_unlocked(name='napari_pyclesperanto_assistant', import_=)

File :680, in _load_unlocked(spec=ModuleSpec(name='napari_pyclesperanto_assistant'...9/site-packages/napari_pyclesperanto_assistant']))

File :850, in exec_module(self=, module=)

File :228, in _call_with_frames_removed(f=, *args=( at 0x17d3d7c90, file "/Use...ari_pyclesperanto_assistant/__init__.py", line 1>, {'__builtins__': {'ArithmeticError': , 'AssertionError': , 'AttributeError': , 'BaseException': , 'BlockingIOError': , 'BrokenPipeError': , 'BufferError': , 'BytesWarning': , 'ChildProcessError': , 'ConnectionAbortedError': , ...}, '__cached__': '/Users/piotrsobolewski/Dev/miniforge3/envs/test-...nto_assistant/__pycache__/__init__.cpython-39.pyc', '__doc__': None, '__file__': '/Users/piotrsobolewski/Dev/miniforge3/envs/test-...ckages/napari_pyclesperanto_assistant/__init__.py', '__loader__': , '__name__': 'napari_pyclesperanto_assistant', '__package__': 'napari_pyclesperanto_assistant', '__path__': ['/Users/piotrsobolewski/Dev/miniforge3/envs/test-...n3.9/site-packages/napari_pyclesperanto_assistant'], '__spec__': ModuleSpec(name='napari_pyclesperanto_assistant'...9/site-packages/napari_pyclesperanto_assistant'])}), **kwds={})

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_pyclesperanto_assistant/__init__.py:1
----> 1 from ._gui import Assistant
      2 from ._convert_to_numpy import *

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_pyclesperanto_assistant/_gui/__init__.py:1
----> 1 from ._Assistant import Assistant

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_pyclesperanto_assistant/_gui/_Assistant.py:2
      1 from __future__ import annotations
----> 2 from ._select_gpu import select_gpu
      3 from napari.viewer import Viewer

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_pyclesperanto_assistant/_gui/_select_gpu.py:8
      3 from napari_tools_menu import register_action
      7 @magicgui(Select_GPU={
----> 8         "choices": cle.available_device_names(),
        cle = 
      9     },
     10     Note={"widget_type":"Label"},
     11     call_button='Select')
     12 def gpu_selector(Select_GPU : str, Note:str = "Hint: Do not change the GPU while images are open."):
     13     print("Selected device:", cle.select_device(Select_GPU))

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/pyclesperanto_prototype/_tier0/_available_device_names.py:32, in available_device_names(dev_type=None, score_key=None)
      5 """Retrieve a list of names of available OpenCL-devices
      6 
      7 Parameters
   (...)
     29 >>> print("Available CPU OpenCL devices:" + str(cpu_devices))
     30 """
---> 32 devices = filter_devices(dev_type=dev_type, score_key=score_key)
        dev_type = None
        score_key = None
     33 device_names = [device.name for device in devices]

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/pyclesperanto_prototype/_tier0/_device.py:101, in filter_devices(name=None, dev_type=None, score_key=None)
    100 devices = []
--> 101 for platform in cl.get_platforms():
        cl = 
    102     for device in platform.get_devices():

LogicError: clGetPlatformIDs failed: PLATFORM_NOT_FOUND_KHR

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

PluginImportError                         Traceback (most recent call last)
File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_plugin_engine/manager.py:264, in PluginManager.discover(self=, path=None, entry_point=None, prefix=None, ignore_errors=True)
    261     continue
    263 try:
--> 264     if self._load_and_register(mod_name, name):
        name = 'napari_skimage_regionprops2'
        mod_name = 'napari_skimage_regionprops._utilities'
        self = 
    265         count += 1
    266         self._id_counts[name] = 1

File ~/Dev/miniforge3/envs/test-env/lib/python3.9/site-packages/napari_plugin_engine/manager.py:322, in PluginManager._load_and_register(self=, mod_name='napari_pyclesperanto_assistant._napari_plugin', plugin_name='clEsperanto')
    320         return None
    321 except Exception as exc:
--> 322     raise PluginImportError(
        plugin_name = 'clEsperanto'
    323         f'Error while importing module {mod_name}',
    324         plugin_name=plugin_name,
    325         cause=exc,
    326     )
    327 if not (inspect.isclass(module) or inspect.ismodule(module)):
    328     raise PluginRegistrationError(
    329         f'Plugin "{plugin_name}" declared entry_point "{mod_name}"'
    330         ' which is neither a module nor a class.',
    331         plugin=module,
    332         plugin_name=plugin_name,
    333     )

PluginImportError: Error while importing module napari_pyclesperanto_assistant._napari_plugin
================================================================================

@haesleinhuepf
Copy link
Owner Author

Definitely one to use mamba and not conda

Guess why we recommend mamba in the installation instructions 😉

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 5, 2022

Looking at the pyopencl related packages different between this env (fresh) and my normal env (where pycleesperanto works) is khronos-opencl-icd-loader no idea what this is, but seems like the problem.
Doing a simple test of:
mamba create --name test-env2 python=3.9 napari napari-pyclesperanto-assistant
gives the same issue even with:

In [2]: import pyclesperanto_prototype as cle

In [3]: cle.available_device_names()

But if I mamba install just napari and then pip install napari-pyclesperanto-assistant:

In [1]: import pyclesperanto_prototype as cle

In [2]: cle.available_device_names()
Out[2]: ['Apple M1']

and no khronos-opencl-icd-loader.
If I conda install it into this env...it still works.
So 🤷‍♂️

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 5, 2022

Trying mamba create --name test-env2 python=3.9 pyclesperanto-prototype
And pooped on:

Python 3.9.13 | packaged by conda-forge | (main, May 27 2022, 17:01:00) 
[Clang 13.0.1 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyclesperanto-prototype as cle
  File "<stdin>", line 1
    import pyclesperanto-prototype as cle
                        ^
SyntaxError: invalid syntax
>>> import pyclesperanto_prototype as cle
>>> cle.available_device_names()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/piotrsobolewski/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/pyclesperanto_prototype/_tier0/_available_device_names.py", line 32, in available_device_names
    devices = filter_devices(dev_type=dev_type, score_key=score_key)
  File "/Users/piotrsobolewski/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/pyclesperanto_prototype/_tier0/_device.py", line 101, in filter_devices
    for platform in cl.get_platforms():
pyopencl._cl.LogicError: clGetPlatformIDs failed: PLATFORM_NOT_FOUND_KHR

@haesleinhuepf
Copy link
Owner Author

The pyclesperanto installation instructions say:

Mac-users please also install this:

conda install -c conda-forge ocl_icd_wrapper_apple

Would you mind giving this a try @psobolewskiPhD ?

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 5, 2022

@haesleinhuepf I don't have that in my regular napari/CLE env, but I will try:
mamba create --name test-env2 python=3.9 pyclesperanto-prototype ocl_icd_wrapper_apple
Edit: that works.

Python 3.9.13 | packaged by conda-forge | (main, May 27 2022, 17:01:00) 
[Clang 13.0.1 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyclesperanto_prototype as cle
>>> cle.available_device_names()
['Apple M1']

So if khronos-opencl-icd-loader is present then it seems ocl_icd_wrapper_apple is needed. Both or none.
No idea what any of those do and neither seems actually used if installing by pip.

@psobolewskiPhD
Copy link
Contributor

So if khronos-opencl-icd-loader is present then it seems ocl_icd_wrapper_apple is needed. Both or none.

This is consistent with what is stated at https://github.com/jrprice/ocl_icd_wrapper
So the combo is needed to permit switchiing/overriding Apple's OpenCL implementation. I'm not sure how wise this is on M1? 🤷‍♂️

@jaimergp
Copy link

jaimergp commented Oct 5, 2022

All conda-forge libraries that link to OpenCL do so through the khronos implementation for good ABI compatibility. The ICD loader mechanism allows to replace it with a different implementation, so it should be safe. I don't fully know what those words mean, but it was the conclusion of the OpenMM migration, which also relies on OpenCL.

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 5, 2022

So it seems the pyclesperanto-prototype conda-forge package needs to also include ocl_icd_wrapper_apple otherwise it's borked, as far as I can tell.
Edit:
Actually, it's probable pyopencl:
mamba create --name test-env2 python=3.9 pyopencl
And then the example from: https://documen.tician.de/pyopencl/
fails with the same error.
If I mamba install ocl_icd_wrapper_apple then it works.
Edit2: @jaimergp should I make an issue on pyopencl-feedstock?
Maybe it's sufficient to add ocl_icd_wrapper_apple here:

https://github.com/conda-forge/pyopencl-feedstock/blob/486e7d8b21036662d63752ed9e82054089045c11/recipe/meta.yaml#L27-L34

@jaimergp
Copy link

jaimergp commented Oct 5, 2022

Technically you can install any other OpenCL implementation on the environment and it will work. ocl_icd_wrapper just exposes Apple's implementation to the khronos ICD.

It's up to the downstream users of an OpenCL app to provide their implementation of choice. For some other projects, Apple's implementation doesn't cut it so the env should not contain the ICD wrapper.

In this case, devbio-napari can add ocl_icd_wrapper to its runtime deps if that should be the default implementation available.

@psobolewskiPhD
Copy link
Contributor

OK, i just checked, the conda-forge pyopencl breaks on arm64 starting here:
conda-forge/pyopencl-feedstock@7ac3d40
So
╰─ mamba create --name test-env2 python=3.9 pyopencl=2021.1.6 (base) ─╯
The example works.
Everything after is broken on arm64, as far as I can tell—i've not tested every build, just a few here and there, but same error.

@jaimergp
Copy link

jaimergp commented Oct 5, 2022

Because napari decided to add pyqt and pyside as dependencies in two variants for ease of use, but pyopencl decided not to. devbio can leave that choice to the user or call the shot add the apple wrapper.

@psobolewskiPhD
Copy link
Contributor

It's ironic that it's pyopencl, because I recall when first testing the conda napari bundle I installed pycle-assistant and pyopencl was also broken, because it had x86 binaries inside and there was no easy way to get rid of it! 🤣

@psobolewskiPhD
Copy link
Contributor

Because napari decided to add pyqt and pyside as dependencies in two variants for ease of use, but pyopencl decided not to. devbio can leave that choice to the user or call the shot add the apple wrapper.

Fair enough, thanks again for your time and patience.
As an end user, this is really opaque—and frustrating.

@thawn
Copy link

thawn commented Oct 7, 2022

I can confirm that

mamba install -c conda-forge ocl_icd_wrapper_apple devbio-napari

worked on my M1 mac

Thanks to @jaimergp, @psobolewskiPhD and @haesleinhuepf for getting this fixed so quickly 🥳

@haesleinhuepf
Copy link
Owner Author

@thawn does it also work without the ocl-icd-wrapper?

mamba create --name dev-nap-env -c conda-forge devbio-napari

@thawn
Copy link

thawn commented Oct 7, 2022

@haesleinhuepf

without the ocl-icd-wrapper, the installation of devbio-napari works. Napari starts fine, but the plugins using pyclesperanto are not available.

In napari's python command line, when I tried

import pyclesperanto_prototype as cle
cle.available_device_names()

I got the the same error as @psobolewskiPhD.

after installing ocl-icd-wrapper in the same environment, also pyclesperanto works (again tested within the napari python command line):

import pyclesperanto_prototype as cle
cle.available_device_names()
Out[2]: ['Apple M1 Max']

@psobolewskiPhD
Copy link
Contributor

That's all consistent with my tests above and what @jaimergp wrote.
I think the issue is that pycle-proto doesn't use ocl_icd_wrapper_apple (but as a conda-forge package uses khronos-opencl-icd-loader so hence it doesn't work):
https://github.com/conda-forge/pyclesperanto-prototype-feedstock/blob/main/recipe/meta.yaml
Alternately, devbio feedstock seems to be trying to solve this here:
conda-forge/devbio-napari-feedstock#17
but this conditional is clearly not working on arm64.

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 7, 2022

@jaimergp
Copy link

jaimergp commented Oct 7, 2022

In principle, it's correct as is now. These are not conda subdirs but virtual package constraints (win, linux, or osx), so both Intel and Apple Silicon are covered.

I am on mobile now, but can you check the dependencies for the osx variant of devbio-napari? The i icon on https://anaconda.org/conda-forge/devbio-napari/files should help.

edit: I can see the wrapper listed. Is 0.7.1 being installed?

@psobolewskiPhD
Copy link
Contributor

The noarch devbio on anaconda has the ocl-wrapper listed:
image

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 7, 2022

edit: I can see the wrapper listed. Is 0.7.1 being installed?

Aha! On osx-arm64 I'm getting 0.5.9! while on rosetta 0.7.1
Here is repoquery:

Executing the query devbio-napari

conda-forge/osx-arm64                                       Using cache
conda-forge/noarch                                          Using cache


 Name          Version Build            Channel           
───────────────────────────────────────────────────────────
 devbio-napari 0.7.1   linux_h41d4057_0 conda-forge/noarch
 devbio-napari 0.7.1   osx_hd1c38e8_0   conda-forge/noarch
 devbio-napari 0.7.1   win_h08f2357_0   conda-forge/noarch
 devbio-napari 0.7.0   linux_h41d4057_0 conda-forge/noarch
 devbio-napari 0.7.0   osx_hd1c38e8_0   conda-forge/noarch
 devbio-napari 0.7.0   win_h08f2357_0   conda-forge/noarch
 devbio-napari 0.6.0   linux_h41d4057_1 conda-forge/noarch
 devbio-napari 0.6.0   osx_hd1c38e8_1   conda-forge/noarch
 devbio-napari 0.6.0   pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.6.0   win_h08f2357_1   conda-forge/noarch
 devbio-napari 0.5.10  pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.5.9   pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.5.9   pyhd8ed1ab_1     conda-forge/noarch
 devbio-napari 0.5.8   pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.5.7   pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.5.6   pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.5.5   pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.5.4   pyhd8ed1ab_0     conda-forge/noarch
 devbio-napari 0.5.3   pyhd8ed1ab_0     conda-forge/noarch

And we have the answer: forcing 0.7.1:

Looking for: ['python=3.9', 'devbio-napari=0.7.1']

conda-forge/osx-arm64                                       Using cache
conda-forge/noarch                                          Using cache
Encountered problems while solving:
  - nothing provides imagecodecs-lite >=2019.12.2 needed by czifile-2019.7.2-pyh9f0ad1d_0

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 7, 2022

imagecodecs is available, migrated. imagecodecs-lite nope. I will make a PR to get the bot going I guess.
conda-forge/conda-forge-pinning-feedstock#3500

@psobolewskiPhD
Copy link
Contributor

@haesleinhuepf Maybe pycle-prototype on conda-forge should also include that ocl-wrapper? Want me to open an issue there?

@kevinyamauchi
Copy link

@haesleinhuepf Maybe pycle-prototype on conda-forge should also include that ocl-wrapper? Want me to open an issue there?

With conda-forge/devbio-napari-feedstock#17, we tried to make installing the platform-specifc openCL wrapper automatic for napari-devbio. Perhaps one could do the same in pyclesperanto-prototype?

@kevinyamauchi
Copy link

imagecodecs is available, migrated. imagecodecs-lite nope. I will make a PR to get the bot going I guess.
conda-forge/conda-forge-pinning-feedstock#3500

Thanks, @psobolewskiPhD . You're a hero!

@psobolewskiPhD
Copy link
Contributor

@haesleinhuepf Maybe pycle-prototype on conda-forge should also include that ocl-wrapper? Want me to open an issue there?

With conda-forge/devbio-napari-feedstock#17, we tried to make installing the platform-specifc openCL wrapper automatic for napari-devbio. Perhaps one could do the same in pyclesperanto-prototype?

This makes sense to me, after all i don't think devbio-napari per se requires the wrapper right? Isnt just the pycle-prototype stuff that uses pyopencl? So it makes sense for it to pull in the wrapper, not devbio, which is one level above so to speak.

@haesleinhuepf
Copy link
Owner Author

Correct @psobolewskiPhD . Actually, it might make sense to install the wrapper together with pyopencl. We may also let the redlionfish people know about this modification. They also depend directly on pyopencl

@psobolewskiPhD
Copy link
Contributor

psobolewskiPhD commented Oct 7, 2022

Actually, it might make sense to install the wrapper together with pyopencl.

Pyopencl dropped the wrapper, seemingly intentionally, so I think it's up to you for your package.
RedLionFish includes it on Linux only, so it seems worth it to bring it up there too:
https://github.com/conda-forge/redlionfish-feedstock/blob/dc2b973c7b5fa761787aebabe7224fa59b3c9959/recipe/meta.yaml#L25-L31

Edit: At some point I have to try and see if pocl vs the apple-wrapper makes a difference.

@haesleinhuepf
Copy link
Owner Author

haesleinhuepf commented Oct 7, 2022

Hint: Don't spend too much time on pocl. It's not a reasonable replacement for a real graphics processing unit, it's just an emulator.

@psobolewskiPhD
Copy link
Contributor

Hint: Don't spend too much time on pocl. It's not a reasonable replacement for a real graphics processing unit, it's just an emulator.

If that's the case, then the apple-wrapper needs to be in!
pyopencl docs seem to suggest pocl can be better than apple drivers:
https://documen.tician.de/pyopencl/misc.html#enabling-access-to-cpus-and-gpus-via-py-opencl
but if that's just for CPU, then I really don't get why pyopencl dropped the apple-wrapper in favor of the user choosing. BTW My googling found this old image.sc thread:
https://forum.image.sc/t/pyclesperanto-pyopencl-issue-on-mac-m1/63482/3?u=psobolewskiphd
Note Talley's response—we've been down this stream before.

@psobolewskiPhD
Copy link
Contributor

Good news! imagecodecs-lite migration merged:
conda-forge/imagecodecs-lite-feedstock#15
and...
while installing still takes a bit of time, devbio-napari appears fully functional on my M1 with:
mamba create --name test-env2 python=3.9 devbio-napari

devbio-napari             0.7.1            osx_hd1c38e8_0    conda-forge
ocl_icd_wrapper_apple     1.0.0                h27ca646_0    conda-forge

pycle-assistant stuff works, simpleITK stuff works, platymatch works.
No cellpose though?

full conda list:

# packages in environment at /Users/piotrsobolewski/Dev/miniforge3/envs/test-env2:
#
# Name                    Version                   Build  Channel
alabaster                 0.7.12                     py_0    conda-forge
anyio                     3.6.1              pyhd8ed1ab_1    conda-forge
aom                       3.5.0                h7ea286d_0    conda-forge
apoc-backend              0.10.0             pyhd8ed1ab_0    conda-forge
appdirs                   1.4.4              pyh9f0ad1d_0    conda-forge
appnope                   0.1.3              pyhd8ed1ab_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py39hb18efdd_2    conda-forge
asciitree                 0.3.3                      py_2    conda-forge
asttokens                 2.0.8              pyhd8ed1ab_0    conda-forge
attrs                     22.1.0             pyh71513ae_1    conda-forge
autopep8                  1.7.0              pyhd8ed1ab_0    conda-forge
babel                     2.10.3             pyhd8ed1ab_0    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.11.1             pyha770c72_0    conda-forge
bleach                    5.0.1              pyhd8ed1ab_0    conda-forge
blosc                     1.21.1               hd414afc_3    conda-forge
bokeh                     2.4.3              pyhd8ed1ab_3    conda-forge
brotli                    1.0.9                h1c322ee_7    conda-forge
brotli-bin                1.0.9                h1c322ee_7    conda-forge
brotlipy                  0.7.0           py39hb18efdd_1004    conda-forge
brunsli                   0.1                  h9f76cd9_0    conda-forge
bzip2                     1.0.8                h3422bc3_4    conda-forge
c-ares                    1.18.1               h3422bc3_0    conda-forge
c-blosc2                  2.4.2                h303ed30_0    conda-forge
ca-certificates           2022.9.24            h4653dfc_0    conda-forge
cached-property           1.5.2                hd8ed1ab_1    conda-forge
cached_property           1.5.2              pyha770c72_1    conda-forge
cachey                    0.2.1              pyh9f0ad1d_0    conda-forge
certifi                   2022.9.24          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1           py39h04d3946_0    conda-forge
cfitsio                   4.1.0                hd4f5c17_0    conda-forge
charls                    2.3.4                hbdafb3b_0    conda-forge
charset-normalizer        2.1.1              pyhd8ed1ab_0    conda-forge
click                     8.1.3            py39h2804cbe_0    conda-forge
click-default-group       1.2.2              pyhd8ed1ab_1    conda-forge
cloudpickle               2.2.0              pyhd8ed1ab_0    conda-forge
colorama                  0.4.5              pyhd8ed1ab_0    conda-forge
commonmark                0.9.1                      py_0    conda-forge
contourpy                 1.0.5            py39haaf3ac1_0    conda-forge
control                   0.9.2              pyhd8ed1ab_0    conda-forge
cryptography              38.0.1           py39haa0b8cc_0    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
cytoolz                   0.12.0           py39h9eb174b_0    conda-forge
czifile                   2019.7.2           pyh9f0ad1d_0    conda-forge
dask                      2022.9.2           pyhd8ed1ab_0    conda-forge
dask-core                 2022.9.2           pyhd8ed1ab_0    conda-forge
dataclasses               0.8                pyhc8e2a94_3    conda-forge
dav1d                     1.0.0                he4db4b2_1    conda-forge
debugpy                   1.6.3            py39h3c22d25_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
deprecated                1.2.13             pyh6c4a22f_0    conda-forge
devbio-napari             0.7.1            osx_hd1c38e8_0    conda-forge
distributed               2022.9.2           pyhd8ed1ab_0    conda-forge
docstring_parser          0.13               pyhd8ed1ab_0    conda-forge
docutils                  0.19             py39h2804cbe_0    conda-forge
eigen                     3.4.0                hc021e02_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
executing                 1.1.0              pyhd8ed1ab_0    conda-forge
expat                     2.4.9                hb7217d7_0    conda-forge
fasteners                 0.17.3             pyhd8ed1ab_0    conda-forge
ffmpeg                    5.1.2           gpl_hcccd11d_101    conda-forge
fftw                      3.3.10          nompi_h3046061_4    conda-forge
finesse                   3.0a3            py39h8c6c5b4_2    conda-forge
flit-core                 3.7.1              pyhd8ed1ab_0    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.14.0               h82840c6_1    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
fonttools                 4.37.4           py39h02fc5c5_0    conda-forge
freetype                  2.12.1               hd633e50_0    conda-forge
freetype-py               2.3.0              pyhd8ed1ab_0    conda-forge
fsspec                    2022.8.2           pyhd8ed1ab_0    conda-forge
future                    0.18.2           py39h2804cbe_5    conda-forge
gettext                   0.19.8.1          h0186832_1009    conda-forge
giflib                    5.2.1                h27ca646_2    conda-forge
glib                      2.74.0               hb5ab8b9_0    conda-forge
glib-tools                2.74.0               hb5ab8b9_0    conda-forge
gmp                       6.2.1                h9f76cd9_0    conda-forge
gmpy2                     2.1.2            py39h6e385ed_0    conda-forge
gnutls                    3.7.8                h9f1a10d_0    conda-forge
gst-plugins-base          1.20.3               h8b7775e_2    conda-forge
gstreamer                 1.20.3               hcb7b3dd_2    conda-forge
h5py                      3.7.0           nompi_py39h6b51346_101    conda-forge
hdbscan                   0.8.28           py39h20ef057_1    conda-forge
hdf5                      1.12.2          nompi_h8968d4b_100    conda-forge
heapdict                  1.0.1                      py_0    conda-forge
hsluv                     5.0.2              pyh44b312d_0    conda-forge
icu                       70.1                 h6b3803e_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
imagecodecs               2022.9.26        py39h6bc43d6_0    conda-forge
imagecodecs-lite          2019.12.3        py39h4d8bf0d_5    conda-forge
imageio                   2.22.0             pyhfa7a67d_0    conda-forge
imageio-ffmpeg            0.4.7              pyhd8ed1ab_0    conda-forge
imagesize                 1.4.1              pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.4           py39h2804cbe_0    conda-forge
importlib_resources       5.10.0             pyhd8ed1ab_0    conda-forge
iniconfig                 1.1.1              pyh9f0ad1d_0    conda-forge
ipycanvas                 0.13.1             pyhd8ed1ab_0    conda-forge
ipyevents                 2.0.1              pyhd8ed1ab_0    conda-forge
ipykernel                 6.16.0             pyh736e0ef_0    conda-forge
ipython                   8.5.0              pyhd1c38e8_1    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                8.0.2              pyhd8ed1ab_1    conda-forge
jedi                      0.18.1             pyhd8ed1ab_2    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
joblib                    1.2.0              pyhd8ed1ab_0    conda-forge
jpeg                      9e                   he4db4b2_2    conda-forge
json5                     0.9.5              pyh9f0ad1d_0    conda-forge
jsonschema                4.16.0             pyhd8ed1ab_0    conda-forge
jupyter                   1.0.0            py39h2804cbe_7    conda-forge
jupyter_client            7.3.4              pyhd8ed1ab_0    conda-forge
jupyter_console           6.4.4              pyhd8ed1ab_0    conda-forge
jupyter_core              4.11.1           py39h2804cbe_0    conda-forge
jupyter_server            1.16.0             pyhd8ed1ab_0    conda-forge
jupyterlab                3.4.8              pyhd8ed1ab_0    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_server         2.15.2             pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        3.0.3              pyhd8ed1ab_0    conda-forge
jupytext                  1.14.0             pyheef035f_0    conda-forge
jxrlib                    1.1                  h27ca646_2    conda-forge
khronos-opencl-icd-loader 2022.09.30           h1a8c8d9_2    conda-forge
kiwisolver                1.4.4            py39hab5e169_0    conda-forge
krb5                      1.19.3               hf9b2bbe_0    conda-forge
lame                      3.100             h1a8c8d9_1003    conda-forge
lcms2                     2.12                 had6a04f_0    conda-forge
lerc                      4.0.0                h9a09cb3_0    conda-forge
libaec                    1.0.6                hbdafb3b_0    conda-forge
libavif                   0.10.1               h3d80962_2    conda-forge
libblas                   3.9.0           16_osxarm64_openblas    conda-forge
libbrotlicommon           1.0.9                h1c322ee_7    conda-forge
libbrotlidec              1.0.9                h1c322ee_7    conda-forge
libbrotlienc              1.0.9                h1c322ee_7    conda-forge
libcblas                  3.9.0           16_osxarm64_openblas    conda-forge
libclang                  14.0.6          default_h81a5282_0    conda-forge
libclang13                14.0.6          default_he70ec0d_0    conda-forge
libcurl                   7.85.0               hd538317_0    conda-forge
libcxx                    14.0.6               h2692d47_0    conda-forge
libdeflate                1.14                 h1a8c8d9_0    conda-forge
libedit                   3.1.20191231         hc8eb9b7_2    conda-forge
libev                     4.33                 h642e427_1    conda-forge
libffi                    3.4.2                h3422bc3_5    conda-forge
libgfortran               5.0.0           11_3_0_hd922786_25    conda-forge
libgfortran5              11.3.0              hdaf2cc0_25    conda-forge
libglib                   2.74.0               h14ed1c1_0    conda-forge
libiconv                  1.17                 he4db4b2_0    conda-forge
libidn2                   2.3.3                he4db4b2_0    conda-forge
libitk                    5.2.1                h112da86_6    conda-forge
libitk-devel              5.2.1                h9649be8_6    conda-forge
liblapack                 3.9.0           16_osxarm64_openblas    conda-forge
libllvm11                 11.1.0               hfa12f05_4    conda-forge
libllvm14                 14.0.6               h37c5ba8_0    conda-forge
libnghttp2                1.47.0               h232270b_1    conda-forge
libogg                    1.3.4                h27ca646_1    conda-forge
libopenblas               0.3.21          openmp_hc731615_3    conda-forge
libopus                   1.3.1                h27ca646_1    conda-forge
libpng                    1.6.38               h76d750c_0    conda-forge
libpq                     14.5                 hb2ab832_0    conda-forge
libsodium                 1.0.18               h27ca646_1    conda-forge
libsqlite                 3.39.4               h76d750c_0    conda-forge
libssh2                   1.10.0               hb80f160_3    conda-forge
libtasn1                  4.19.0               h1a8c8d9_0    conda-forge
libtiff                   4.4.0                hfa0b094_4    conda-forge
libunistring              0.9.10               h3422bc3_0    conda-forge
libvorbis                 1.3.7                h9f76cd9_0    conda-forge
libvpx                    1.11.0               hc470f4d_3    conda-forge
libwebp-base              1.2.4                h57fd34a_0    conda-forge
libxcb                    1.13              h9b22ae9_1004    conda-forge
libxml2                   2.9.14               h9d8dfc2_4    conda-forge
libzlib                   1.2.12               h03a7124_4    conda-forge
libzopfli                 1.0.3                h9f76cd9_0    conda-forge
llvm-openmp               14.0.4               hd125106_0    conda-forge
llvmlite                  0.39.1           py39h8ca5d33_0    conda-forge
locket                    1.0.0              pyhd8ed1ab_0    conda-forge
loguru                    0.6.0            py39h2804cbe_1    conda-forge
lz4                       4.0.0            py39h049b86e_2    conda-forge
lz4-c                     1.9.3                hbdafb3b_1    conda-forge
magicgui                  0.5.1              pyhd8ed1ab_0    conda-forge
mako                      1.2.3              pyhd8ed1ab_0    conda-forge
markdown-it-py            2.1.0              pyhd8ed1ab_0    conda-forge
markupsafe                2.1.1            py39hb18efdd_1    conda-forge
matplotlib-base           3.6.0            py39h35e9e80_0    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mdit-py-plugins           0.3.1              pyhd8ed1ab_0    conda-forge
mdurl                     0.1.0              pyhd8ed1ab_0    conda-forge
metis                     5.1.0             h9f76cd9_1006    conda-forge
mistune                   0.8.4           py39h5161555_1005    conda-forge
more-itertools            8.14.0             pyhd8ed1ab_0    conda-forge
mpc                       1.2.1                h309154c_0    conda-forge
mpfr                      4.1.0                h6d7a090_1    conda-forge
mpmath                    1.2.1              pyhd8ed1ab_0    conda-forge
msgpack-python            1.0.4            py39hab5e169_0    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
mysql-common              8.0.30               hab468bb_1    conda-forge
mysql-libs                8.0.30               hea58576_1    conda-forge
napari                    0.4.15          pyh275ddea_1_pyqt    conda-forge
napari-3d-ortho-viewer    0.0.1              pyhd8ed1ab_0    conda-forge
napari-accelerated-pixel-and-object-classification 0.10.1             pyhd8ed1ab_0    conda-forge
napari-animation          0.0.2              pyhd8ed1ab_0    conda-forge
napari-assistant          0.3.16             pyhd8ed1ab_0    conda-forge
napari-blob-detection     0.0.2              pyhd8ed1ab_0    conda-forge
napari-brightness-contrast 0.1.8              pyhd8ed1ab_0    conda-forge
napari-clusters-plotter   0.5.2              pyhd8ed1ab_0    conda-forge
napari-console            0.0.6              pyhd8ed1ab_0    conda-forge
napari-crop               0.1.6              pyhd8ed1ab_0    conda-forge
napari-curtain            0.1.1              pyhd8ed1ab_0    conda-forge
napari-czifile2           0.2.7              pyhd8ed1ab_0    conda-forge
napari-folder-browser     0.1.3              pyhd8ed1ab_0    conda-forge
napari-layer-details-display 0.1.4              pyhd8ed1ab_0    conda-forge
napari-mouse-controls     0.1.3              pyhd8ed1ab_0    conda-forge
napari-plot-profile       0.2.2              pyhd8ed1ab_0    conda-forge
napari-plugin-engine      0.2.0              pyhd8ed1ab_2    conda-forge
napari-plugin-search      0.1.3              pyhd8ed1ab_0    conda-forge
napari-pyclesperanto-assistant 0.20.0             pyhd8ed1ab_0    conda-forge
napari-pystackreg         0.1.1              pyhd8ed1ab_0    conda-forge
napari-roi                0.1.7              pyhd8ed1ab_0    conda-forge
napari-segment-blobs-and-things-with-membranes 0.3.3              pyhd8ed1ab_0    conda-forge
napari-simpleitk-image-processing 0.4.4              pyhd8ed1ab_0    conda-forge
napari-skimage-regionprops 0.5.4              pyhd8ed1ab_0    conda-forge
napari-svg                0.1.6              pyhd8ed1ab_0    conda-forge
napari-tabu               0.1.5              pyhd8ed1ab_0    conda-forge
napari-time-slicer        0.4.9              pyhd8ed1ab_1    conda-forge
napari-tools-menu         0.1.17             pyhd8ed1ab_0    conda-forge
napari-workflow-inspector 0.2.2              pyhd8ed1ab_0    conda-forge
napari-workflow-optimizer 0.1.4              pyhd8ed1ab_0    conda-forge
napari-workflows          0.2.6              pyhd8ed1ab_0    conda-forge
nbclassic                 0.3.7              pyhd8ed1ab_0    conda-forge
nbclient                  0.5.13             pyhd8ed1ab_0    conda-forge
nbconvert                 6.4.5            py39h2804cbe_0    conda-forge
nbformat                  5.6.1              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h07bb92c_1    conda-forge
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
nettle                    3.8.1                h63371fa_1    conda-forge
networkx                  2.8.7              pyhd8ed1ab_0    conda-forge
notebook                  6.4.12             pyha770c72_0    conda-forge
notebook-shim             0.1.0              pyhd8ed1ab_0    conda-forge
npe2                      0.6.1              pyhd8ed1ab_1    conda-forge
nspr                      4.32                 hbdafb3b_1    conda-forge
nss                       3.78                 h1483a63_0    conda-forge
numba                     0.56.2           py39h251cc7c_1    conda-forge
numcodecs                 0.10.2           py39h3c22d25_0    conda-forge
numpy                     1.23.3           py39hcb4b507_0    conda-forge
numpydoc                  1.4.0              pyhd8ed1ab_1    conda-forge
ocl_icd_wrapper_apple     1.0.0                h27ca646_0    conda-forge
openh264                  2.3.1                hb7217d7_1    conda-forge
openjpeg                  2.5.0                h5d4e404_1    conda-forge
openssl                   1.1.1q               ha287fd2_0    conda-forge
p11-kit                   0.24.1               h29577a5_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandas                    1.5.0            py39hde7b980_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
partd                     1.3.0              pyhd8ed1ab_0    conda-forge
pcre2                     10.37                hcf5f1cc_1    conda-forge
pep517                    0.12.0           py39h2804cbe_2    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    9.2.0            py39he45c975_2    conda-forge
pint                      0.19.2             pyhd8ed1ab_0    conda-forge
pip                       22.2.2             pyhd8ed1ab_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
platformdirs              2.5.2              pyhd8ed1ab_1    conda-forge
platymatch                0.0.3              pyhd8ed1ab_0    conda-forge
pluggy                    1.0.0            py39h2804cbe_3    conda-forge
ply                       3.11                       py_1    conda-forge
pooch                     1.6.0              pyhd8ed1ab_0    conda-forge
prometheus_client         0.14.1             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.31             pyha770c72_0    conda-forge
prompt_toolkit            3.0.31               hd8ed1ab_0    conda-forge
psutil                    5.9.2            py39h02fc5c5_0    conda-forge
psygnal                   0.3.5            py39hab5e169_0    conda-forge
pthread-stubs             0.4               h27ca646_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
py                        1.11.0             pyh6c4a22f_0    conda-forge
pyclesperanto-prototype   0.19.4             pyhd8ed1ab_0    conda-forge
pycodestyle               2.9.1              pyhd8ed1ab_0    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pydantic                  1.10.2           py39h02fc5c5_0    conda-forge
pygments                  2.13.0             pyhd8ed1ab_0    conda-forge
pynndescent               0.5.7              pyh6c4a22f_0    conda-forge
pyopencl                  2022.2.3         py39h70e7ac2_0    conda-forge
pyopengl                  3.1.6              pyhd8ed1ab_1    conda-forge
pyopenssl                 22.0.0             pyhd8ed1ab_1    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyperclip                 1.8.2              pyhd8ed1ab_2    conda-forge
pyqt                      5.15.7           py39h5be3558_0    conda-forge
pyqt5-sip                 12.11.0          py39h6e3512e_0    conda-forge
pyqtgraph                 0.13.1             pyhd8ed1ab_1    conda-forge
pyrsistent                0.18.1           py39hb18efdd_1    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
pyspellchecker            0.7.0              pyhd8ed1ab_0    conda-forge
pystackreg                0.2.7            py39hde7b980_0    conda-forge
pytest                    7.1.3            py39h2804cbe_0    conda-forge
python                    3.9.13          hc596b02_0_cpython    conda-forge
python-build              0.8.0              pyhd8ed1ab_0    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-fastjsonschema     2.16.2             pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytomlpp                  1.0.11           py39h2c803a9_0    conda-forge
pytools                   2022.1.12          pyhd8ed1ab_0    conda-forge
pytz                      2022.4             pyhd8ed1ab_0    conda-forge
pywavelets                1.3.0            py39h43ea957_1    conda-forge
pyyaml                    6.0              py39hb18efdd_4    conda-forge
pyzmq                     24.0.1           py39h0553236_0    conda-forge
qt-main                   5.15.6               h96bf0dc_0    conda-forge
qtconsole-base            5.3.2              pyha770c72_0    conda-forge
qtpy                      2.2.1              pyhd8ed1ab_0    conda-forge
readline                  8.1.2                h46ed386_0    conda-forge
requests                  2.28.1             pyhd8ed1ab_1    conda-forge
rich                      12.6.0             pyhd8ed1ab_0    conda-forge
scikit-image              0.19.3           py39h533cade_1    conda-forge
scikit-learn              1.1.2            py39h598ef33_0    conda-forge
scipy                     1.9.1            py39h737da60_0    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                65.4.1             pyhd8ed1ab_0    conda-forge
shellingham               1.5.0              pyhd8ed1ab_0    conda-forge
simpleitk                 2.1.1.1          py39h7295a1e_0    conda-forge
sip                       6.7.1            py39h23fbdae_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sly                       0.4                pyhd8ed1ab_0    conda-forge
slycot                    0.5.0.0          py39h6b18137_1    conda-forge
snappy                    1.1.9                h39c3846_1    conda-forge
sniffio                   1.3.0              pyhd8ed1ab_0    conda-forge
snowballstemmer           2.2.0              pyhd8ed1ab_0    conda-forge
sortedcontainers          2.4.0              pyhd8ed1ab_0    conda-forge
soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
sphinx                    5.2.3              pyhd8ed1ab_0    conda-forge
sphinxcontrib-applehelp   1.0.2                      py_0    conda-forge
sphinxcontrib-devhelp     1.0.2                      py_0    conda-forge
sphinxcontrib-htmlhelp    2.0.0              pyhd8ed1ab_0    conda-forge
sphinxcontrib-jsmath      1.0.1                      py_0    conda-forge
sphinxcontrib-qthelp      1.0.3                      py_0    conda-forge
sphinxcontrib-serializinghtml 1.1.5              pyhd8ed1ab_2    conda-forge
sqlite                    3.39.4               h2229b38_0    conda-forge
stack_data                0.5.1              pyhd8ed1ab_0    conda-forge
stackview                 0.3.5              pyhd8ed1ab_0    conda-forge
suitesparse               5.10.1               h7cd81ec_1    conda-forge
superqt                   0.3.6              pyhd8ed1ab_0    conda-forge
svt-av1                   1.2.1                he23bcac_0    conda-forge
sympy                     1.11.1           py39h2804cbe_1    conda-forge
tabulate                  0.9.0              pyhd8ed1ab_1    conda-forge
tbb                       2021.6.0             hffc8910_0    conda-forge
tbb-devel                 2021.6.0             hffc8910_0    conda-forge
tblib                     1.7.0              pyhd8ed1ab_0    conda-forge
terminado                 0.16.0             pyhd1c38e8_0    conda-forge
testpath                  0.6.0              pyhd8ed1ab_0    conda-forge
the-segmentation-game     0.2.0              pyhd8ed1ab_0    conda-forge
threadpoolctl             3.1.0              pyh8a188c0_0    conda-forge
tifffile                  2022.8.12          pyhd8ed1ab_0    conda-forge
tk                        8.6.12               he1e0b03_0    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
toolz                     0.12.0             pyhd8ed1ab_0    conda-forge
tornado                   6.1              py39hb18efdd_3    conda-forge
tqdm                      4.64.1             pyhd8ed1ab_0    conda-forge
traitlets                 5.4.0              pyhd8ed1ab_0    conda-forge
transforms3d              0.4.1              pyhd8ed1ab_0    conda-forge
typer                     0.6.1              pyhd8ed1ab_0    conda-forge
typing-extensions         4.4.0                hd8ed1ab_0    conda-forge
typing_extensions         4.4.0              pyha770c72_0    conda-forge
tzdata                    2022d                h191b570_0    conda-forge
umap-learn                0.5.3            py39h2804cbe_0    conda-forge
unicodedata2              14.0.0           py39hb18efdd_1    conda-forge
urllib3                   1.26.11            pyhd8ed1ab_0    conda-forge
vispy                     0.9.6            py39h6eccaaf_1    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          1.4.1              pyhd8ed1ab_0    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
widgetsnbextension        4.0.3              pyhd8ed1ab_0    conda-forge
wrapt                     1.14.1           py39h9eb174b_0    conda-forge
x264                      1!164.3095           h57fd34a_2    conda-forge
x265                      3.5                  hbc6ce65_3    conda-forge
xorg-libxau               1.0.9                h27ca646_0    conda-forge
xorg-libxdmcp             1.1.3                h27ca646_0    conda-forge
xz                        5.2.6                h57fd34a_0    conda-forge
yaml                      0.2.5                h3422bc3_2    conda-forge
zarr                      2.13.2             pyhd8ed1ab_1    conda-forge
zeromq                    4.3.4                hbdafb3b_1    conda-forge
zfp                       1.0.0                h7b19444_1    conda-forge
zict                      2.2.0              pyhd8ed1ab_0    conda-forge
zipp                      3.8.1              pyhd8ed1ab_0    conda-forge
zlib                      1.2.12               h03a7124_4    conda-forge
zlib-ng                   2.0.6                he4db4b2_0    conda-forge
zstd                      1.5.2                h8128057_4    conda-forge

@kevinyamauchi
Copy link

kevinyamauchi commented Oct 8, 2022

Nice work, @psobolewskiPhD !

I believe cellpose was removed due to some installation issues on Windows: #17

@psobolewskiPhD
Copy link
Contributor

Ah, so i had it earlier because arm64 was getting old devbio. Now it's up-to-date so no cellpose—quicker install tho!

@kevinyamauchi
Copy link

I think there's a pathway to adding it back though (see here). I'm a cellpose fan, so I think adding the -c pytorch to the suggested installation command is worth it.

@kevinyamauchi
Copy link

Good news! imagecodecs-lite migration merged: conda-forge/imagecodecs-lite-feedstock#15 and... while installing still takes a bit of time, devbio-napari appears fully functional on my M1 with: mamba create --name test-env2 python=3.9 devbio-napari

devbio-napari             0.7.1            osx_hd1c38e8_0    conda-forge
ocl_icd_wrapper_apple     1.0.0                h27ca646_0    conda-forge

pycle-assistant stuff works, simpleITK stuff works, platymatch works. No cellpose though?

full conda list:

@psobolewskiPhD , am I understanding correctly that the current devbio-napari is now installing correctly on your M1 Mac (:tada:)? If so, I think we can close this issue.

@kevinyamauchi
Copy link

On a related note, thank you for all of your work to make the scientific python easily installable on M1/M2 macs, @psobolewskiPhD ! I've seen you making fixes and helping people all over the place. Amazing!

@psobolewskiPhD
Copy link
Contributor

@psobolewskiPhD , am I understanding correctly that the current devbio-napari is now installing correctly on your M1 Mac (🎉)? If so, I think we can close this issue.

Yes sir!
Also, can nuke this part of the README:
image

I'll make a PR.

@kevinyamauchi
Copy link

Awesome! 🚀

@psobolewskiPhD
Copy link
Contributor

Correct @psobolewskiPhD . Actually, it might make sense to install the wrapper together with pyopencl. We may also let the redlionfish people know about this modification. They also depend directly on pyopencl

I've made a PR to the RLF feedstock to add the wrapper on osx. Hopefully I didn't mess anything up!
conda-forge/redlionfish-feedstock#11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants