sirius-ms/sirius

Unable to Use SIRIUS on Linux

Closed this issue · 6 comments

May 25, 2024 11:31:12 PM de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilderFactory getTreeBuilder
WARNING: Could not load Solver 'CLP': java.lang.NoClassDefFoundError: Could not initialize class de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.CLPModel_JNI
May 25, 2024 11:31:12 PM de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilderFactory getTreeBuilderFromClass
WARNING: Could not load GrbSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v2.10.8.4: Could not initialize class de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.GrbSolver
May 25, 2024 11:31:12 PM de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilderFactory getTreeBuilderFromClass
WARNING: Could not load CPLEXSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v2.10.8.4: ilog/concert/IloNumVar
May 25, 2024 11:31:12 PM de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilderFactory getTreeBuilder
SEVERE: Your system does not ship with any instantiatable ILP solver. Please install either CLP, Gurobi or CPLEX to use SIRIUS.
May 25, 2024 11:31:12 PM de.unijena.bioinf.jjobs.JJob lambda$logError$2
SEVERE: <543>[TreeComputationJob-543 | 6-Ethoxy-2-mercaptobenzothiazole@212.0198m/z | C9H9NOS2 + H+ (5.045)] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "this.treeBuilder" is null
at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$TreeComputationJob.compute(FasterTreeComputationInstance.java:492)
at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$TreeComputationJob.compute(FasterTreeComputationInstance.java:474)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:117)
at de.unijena.bioinf.jjobs.BatchJJob.compute(BatchJJob.java:28)
at de.unijena.bioinf.jjobs.BatchJJob.compute(BatchJJob.java:10)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:117)
at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:101)
at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.awaitDone(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.join(Unknown Source)
at de.unijena.bioinf.jjobs.BasicJJob.awaitResult(BasicJJob.java:211)
at de.unijena.bioinf.jjobs.JJob.takeResult(JJob.java:249)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.estimateTreeSizeAndRecalibration(FasterTreeComputationInstance.java:242)
at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.compute(FasterTreeComputationInstance.java:173)
at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.compute(FasterTreeComputationInstance.java:55)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:117)
at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:101)
at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.awaitDone(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.join(Unknown Source)
at de.unijena.bioinf.jjobs.BasicJJob.awaitResult(BasicJJob.java:211)
at de.unijena.bioinf.sirius.Sirius$SiriusIdentificationJob.compute(Sirius.java:640)
at de.unijena.bioinf.sirius.Sirius$SiriusIdentificationJob.compute(Sirius.java:623)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:117)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Which version of sirius and which linux distribution are you using?

I'm having a similar issue. I'm trying to use SIRIUS 6.0.1 on my university's computing cluster, which looks like it uses Rocky Linux 8.8. I'm using this release: https://github.com/sirius-ms/sirius/releases/download/v6.0.1/sirius-6.0.1-linux64.zip

The Windows version on my personal desktop works just fine out of the box. Seems like maybe a Linux-specific issue?

The program launches and loads the data fine, but when I try to compute, it can't seem to find the included ILP solver.

"Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v2.10.8.2"...
"INFO: Treebuilder priorities loaded from 'sirius.properties' are: [GLPK]"...
"SEVERE: Could not load a valid TreeBuilder (ILP solvers), tried '[GLPK]'. You can switch to heuristic tree computation only to compute results without the need of an ILP Solver."...

This is still an issue with 6.0.4. In addition, the startup with the default config options either takes so long (>5 min) to open compared to previous versions, or stalls indefinitely (undetermined). Changing the config options to the following at least allows the GUI to load:

[Application]
app.classpath=$APPDIR/sirius_rest_service-6.0.4-boot.jar
app.mainclass=org.springframework.boot.loader.launch.JarLauncher

[JavaOptions]
java-options=-Djpackage.app-version=6.0.4
java-options=-Xms2G
java-options=-XX:MaxRAMPercentage=80 <-- was 60% in this version, 80% in previous version
java-options=-XX:+UseZGC <--- added from previous version's config file, absentin current
java-options=-XX:+ZGenerational <--- added from previous version's config file, absent in current; both this and above seem to be cleanup related?
java-options=-XX:+UseStringDeduplication
java-options=-XX:+ExitOnOutOfMemoryError

This is still me attempting to run SIRIUS on my university's computing cluster, installed using the zip release for 6.0.4.

Is anyone investigating the linux issues? I commented on this a month ago, and made my own post, but three versions later there seems to be the same issue and no comments from developers on anything, and the changelog hasn't been updated since 5.x, and I'd like to know if I should just revert to 5.x for now if it's going to take much longer to resolve the issues. Or, let me know if there's more information needed and I'm happy to send whatever you want or even hop on a video call.

@mfleisch

Hi,

We are unable to replicate this issue (we are all running SIRIUS on linux), so it is likely a rare result of specific system configurations or the operating system. Since it is so rare and thus very hard to understand where the problem lies, it has not been a priority.

If you can provide any details you can about hardware and software of the cluster node you are trying to run it on, that might help

Hey,
maybe some additional explanation.

Building a standalone package (like SIRIUS on GitHub) with bundled native libraries that is compatible with every distribution is impossible. Therefore we build and test them so that they run on the most common linux distributions.

However,
SIRIUS 6 is now also available as conda package. The package manager should take care that all necessary native libraries are available on your system. Please try installing SIRIUS via conda an check whether you still have problems. Please remove old .sirius and .sirius-6.0 folders from you home before trying.

I will close the issue for now, feel free to reopen if the conda package does not solve the problem.

I'll give the conda installation a shot now that it's available again for SIRIUS 6, since that's what I used to install SIRIUS 5. If it doesn't work, I'll go through my entire workflow for installation and include as much info and logs as possible for this version and SIRIUS 5 (when it worked) to try to give you as much information as possible.