segment-anything-models-java/SAMJ-IJ

Fails when trying to install Micromamba

comatose-tortoise opened this issue · 34 comments

Trying to test this plugin but when at the step of installing a model, it fails immediately when trying to install Micromamba.

Sonoma 14.4
M3 Max

Console shows this:

java.io.IOException: Failed to create Micromamba default directory /. Please try installing it in another directory.
	at io.bioimage.modelrunner.apposed.appose.Mamba.decompressMicromamba(Mamba.java:401)
	at io.bioimage.modelrunner.apposed.appose.Mamba.installMicromamba(Mamba.java:426)
	at ai.nets.samj.SamEnvManager.installMambaPython(SamEnvManager.java:951)
	at ai.nets.samj.SamEnvManager.installEfficientSAMSmall(SamEnvManager.java:998)
	at ai.nets.samj.gui.SAMModelPanel.lambda$createInstallationThread$7(SAMModelPanel.java:311)
	at java.base/java.lang.Thread.run(Thread.java:829)

I already have Mamba installed using Homebrew. Why is it trying to install Micromamba?

HEllo @comatose-tortoise thanks for giving SAMJ a try!

Where is you Fiji distribution installed? I have observed that installation fails if it is on the Downloads folder of a Mac.

SAMJ installs micromamba to avoid altering the user installation. Downloading its own micromamba it ensures complete control over the environments

It is located in the Applications dir. I installed it to run natively on Apple Silicon using this: https://github.com/ij-plugins/ijp-imagej-launcher#installing-fiji-on-mac-os-x-arm64

Could that be why It's not working?

mmm i doubt it, it seems that the error is related to permissions when trying to create the folder appose_arm64 inside of the Fiji folder.

Could you try moving Fiji to another directory, for example Documents?

Nope, same thing happens if I start it from Documents.

can you paste error again please? To see if there is something diffreent

java.io.IOException: Failed to create Micromamba default directory /. Please try installing it in another directory.
	at io.bioimage.modelrunner.apposed.appose.Mamba.decompressMicromamba(Mamba.java:401)
	at io.bioimage.modelrunner.apposed.appose.Mamba.installMicromamba(Mamba.java:426)
	at ai.nets.samj.SamEnvManager.installMambaPython(SamEnvManager.java:951)
	at ai.nets.samj.SamEnvManager.installEfficientSAMSmall(SamEnvManager.java:998)
	at ai.nets.samj.gui.SAMModelPanel.lambda$createInstallationThread$7(SAMModelPanel.java:311)
	at java.base/java.lang.Thread.run(Thread.java:829)

Identical as far as I can see

Failed to create Micromamba default directory /. .. to root directory !?

in my case (Linux) the micromamba ended up in my home directory
maybe the home folder resolution is failing on some Mac OSes?

so it actually wants to find where your Fiji.app is so that it can create the appose_... folder in it

this is what happened

java.io.IOException: Failed to create Micromamba default directory /home/ulman/Apps/Fiji_SAMJ.app. Please try installing it in another directory.
	at io.bioimage.modelrunner.apposed.appose.Mamba.decompressMicromamba(Mamba.java:401)

(that's my path to my Fiji with SAMJ)
when I set

dr-xr-xr-x 1 ulman users 432 Mar 21 14:45 Fiji_SAMJ.app/

@comatose-tortoise I know this is not the ideal (and final) solution can you, pls, maybe try to place your Fiji to some innocent folder like /temp/abcd/FIji.app.. something that's not a "hot OS folder"?

(all these Documents, Desktop, Downloads, Program Files,App or Apps on Mac.... should be fine... but one never knows.. I live happier since I started avoiding them)

@comatose-tortoise
I have just checked our src code and it seems we're doing something that can be reproduced from Fiji using the .py Jython script:
Screenshot_20240321_150401

what does this do on your side?

yes it is weird that on certain Macs it has problems finding the current working dir. Do you have any idea @xulman ?

I will try to dig deeper on this issue and get back to you @comatose-tortoise

maybe remove the space in File("vlado") .getAbsolutePath to File("vlado").getAbsolutePath ?

Nope, same error

and try to change the type of the file/script to Python, in the menu language... or just rename to .py

@xulman

You're absolutely right, I had selected Java for some reason 🤯

image

I have no idea where it created "vlad", though.

it didn't create anything, it only created an object representing certain path....

on many systems, Google says, the (Java) construct new File("folder_name") should represent a path to the /current_working_directory/folder_name... apparently not your system... there it represents root_folder/folder_name which is what the test is saying... and on most unix systems one cannot create files in root folder (unless one is root)

thank you for the test, we have now confirmed (we believe :-) ) the source of the problem, @carlosuc3m and myself we would create a fix ASAP and let you know here

@comatose-tortoise

Can we still ask you for one experiment? (please 🙏 )

from java.lang import System
from java.io import File
from java.nio.file import FileSystems

# this one we're using, Baeldung says "nonstadard" way
print("Path = "+ File("").getAbsolutePath())

# these two should be standard
# this one Baeldung described w/o any further restrictions
print("CWD  = "+ System.getProperty("user.dir"))
#
# this one is theoretically available since java1.7,
# despite very old I could still imagine that some systems
# might have not adopted using it...
print("NIO  = "+ FileSystems.getDefault().getPath("").toAbsolutePath().toString() )

# user home as a backup backup?? not sure, better to stop and complain instead
print("user home = "+System.getProperty("user.home"))

what would be the outcome of that Jython script in Fiji, please?

This is the output:

Started New_.py at Fri Mar 22 13:23:41 CET 2024
Path = /
CWD  = /
NIO  = /
user home = /Users/<username>

@comatose-tortoise thank you very much for the quick test

(it turned out the problem is actually little different that we thought originally,
still we see light at the end of the tunnel :-) )

Hello,
I have a similar problem. I am trying to install SAMJ models in my computer without success. Can you provide some help?

My computer is a Mac-Book Air (13-inch, 2017) using a 1.8 Ghz Intel Core i5 double nuclei processor with 8 Gbyte 1600 Mhz DDR3 memory, Intel HD Graphics 6000 1536 Mbytes, running under macOS Big Sur (11.7.0) Operating System.
I am using the last update of FIJI imageJ2, version 2.14.0/1.54f, Java 1.8.0_172 (64-bit)

I got this error message:

java.lang.RuntimeException: Error executing the following command: [/Applications/Fiji.app/appose_x86_64/bin/micromamba, create, -p, /Applications/Fiji.app/appose_x86_64/envs/efficientvit_sam_env, -c, conda-forge, python=3.11, -c, pytorch, libpng, libjpeg-turbo, scikit-image, pytorch=2.0.1, torchvision=0.15.2, cpuonly, mkl=2024.0.0, cmake, onnx, onnxruntime, timm=0.6.13, --yes]
09:03:41 -- STARTING INSTALLATION

09:04:31 -- TERMINATED PROCESS
f503ba9f-e9bd-4f3f-8bdc-ce473e345967error libmamba Could not solve for environment specs
f503ba9f-e9bd-4f3f-8bdc-ce473e345967The following package could not be installed
f503ba9f-e9bd-4f3f-8bdc-ce473e345967└─ mkl 2024.0.0** does not exist (perhaps a typo or a missing channel).
f503ba9f-e9bd-4f3f-8bdc-ce473e345967critical libmamba Could not solve for environment specs
at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1196)
at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1218)
at io.bioimage.modelrunner.apposed.appose.Mamba.create(Mamba.java:665)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:652)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:626)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAM(SamEnvManager.java:1058)
at ai.nets.samj.gui.SAMModelPanel.lambda$createInstallationThread$7(SAMModelPanel.java:321)
at java.lang.Thread.run(Thread.java:748)

Thanks a lot in advance

Manuel Nieto Díaz

could you open a terminal, execute the following command and tell me the output?

/Applications/Fiji.app/appose_x86_64/bin/micromamba install -p /Applications/Fiji.app/appose_x86_64/envs/efficientvit_sam_env -c conda-forge mkl=2024.0.0 --yes

okay,
could you try this now?

/Applications/Fiji.app/appose_x86_64/bin/micromamba create -p /Applications/Fiji.app/appose_x86_64/envs/example -c conda-forge mkl=2024.0.0 --yes

Great thanks! The error seems a little bit more clear now. I will fix it and get you back!

Hi,

Would be great to hear since I'm running into the same issue I think.

13:25:20 -- STARTING INSTALLATION

13:25:42 -- TERMINATED PROCESS13:30:47 -- STARTING INSTALLATION
13:30:47 -- conda-forge/osx-64 Using cache
13:30:47 -- conda-forge/noarch Using cache
13:30:47 -- pytorch/osx-64 Using cache
13:30:47 -- pytorch/noarch Using cache

13:30:54 -- TERMINATED PROCESS
87945514-37f5-4969-92ae-2056b031eba4error libmamba Could not solve for environment specs
87945514-37f5-4969-92ae-2056b031eba4The following package could not be installed
87945514-37f5-4969-92ae-2056b031eba4└─ mkl 2024.0.0** does not exist (perhaps a typo or a missing channel).
87945514-37f5-4969-92ae-2056b031eba4critical libmamba Could not solve for environment specs87945514-37f5-4969-92ae-2056b031eba4critical libmamba Could not solve for environment specs
at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1196)
at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1218)
at io.bioimage.modelrunner.apposed.appose.Mamba.create(Mamba.java:665)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:652)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:626)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAM(SamEnvManager.java:1058)
at ai.nets.samj.gui.SAMModelPanel.lambda$createInstallationThread$7(SAMModelPanel.java:313)
at java.lang.Thread.run(Thread.java:750)

This is on 3,1 GHz 6-Core Intel Core i5 running
MAC OS 14.4.1
java version "1.8.0_371"
Fiji version: 2.14.0/1.54j

Any help is appreciated.

Regards

Michael

I am running same issures on my iMacPro
11:17:29 -- TERMINATED PROCESS
41db4c0e-a35e-4312-987c-d21aa848b645error libmamba Could not solve for environment specs
41db4c0e-a35e-4312-987c-d21aa848b645The following package could not be installed
41db4c0e-a35e-4312-987c-d21aa848b645└─ mkl 2024.0.0** does not exist (perhaps a typo or a missing channel).
41db4c0e-a35e-4312-987c-d21aa848b645critical libmamba Could not solve for environment specs

at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1196)
at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1218)
at io.bioimage.modelrunner.apposed.appose.Mamba.create(Mamba.java:665)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:652)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:626)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAM(SamEnvManager.java:1058)
at ai.nets.samj.gui.SAMModelPanel.lambda$createInstallationThread$7(SAMModelPanel.java:313)
at java.lang.Thread.run(Thread.java:748)

java.lang.RuntimeException: Error executing the following command: [/Applications/Fiji.app/appose_x86_64/bin/micromamba, create, -p, /Applications/Fiji.app/appose_x86_64/envs/efficientvit_sam_env, -c, conda-forge, python=3.11, -c, pytorch, libpng, libjpeg-turbo, scikit-image, pytorch=2.0.1, torchvision=0.15.2, cpuonly, mkl=2024.0.0, cmake, onnx, onnxruntime, timm=0.6.13, --yes]
11:17:06 -- STARTING INSTALLATION

11:17:29 -- TERMINATED PROCESS11:18:23 -- STARTING INSTALLATION
11:18:23 -- conda-forge/osx-64 Using cache
11:18:23 -- conda-forge/noarch Using cache
11:18:23 -- pytorch/osx-64 Using cache
11:18:23 -- pytorch/noarch Using cache

11:18:29 -- TERMINATED PROCESS
41db4c0e-a35e-4312-987c-d21aa848b645error libmamba Could not solve for environment specs
41db4c0e-a35e-4312-987c-d21aa848b645The following package could not be installed
41db4c0e-a35e-4312-987c-d21aa848b645└─ mkl 2024.0.0** does not exist (perhaps a typo or a missing channel).
41db4c0e-a35e-4312-987c-d21aa848b645critical libmamba Could not solve for environment specs
41db4c0e-a35e-4312-987c-d21aa848b645error libmamba Could not solve for environment specs
41db4c0e-a35e-4312-987c-d21aa848b645The following package could not be installed
41db4c0e-a35e-4312-987c-d21aa848b645└─ mkl 2024.0.0** does not exist (perhaps a typo or a missing channel).
41db4c0e-a35e-4312-987c-d21aa848b645critical libmamba Could not solve for environment specs
at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1196)
at io.bioimage.modelrunner.apposed.appose.Mamba.runMamba(Mamba.java:1218)
at io.bioimage.modelrunner.apposed.appose.Mamba.create(Mamba.java:665)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:652)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAMPython(SamEnvManager.java:626)
at ai.nets.samj.install.SamEnvManager.installEfficientViTSAM(SamEnvManager.java:1058)
at ai.nets.samj.gui.SAMModelPanel.lambda$createInstallationThread$7(SAMModelPanel.java:315)
at java.lang.Thread.run(Thread.java:748)

Great thanks! The error seems a little bit more clear now. I will fix it and get you back!

Fixed, great work Carlos
Thanks a lot