Skip to content

Conversation

kouichi-c-nakamura
Copy link
Contributor

This is a proposal.

Sometime you may want to access ImageJ Java classes from MATLAB without launching ImageJ GUI. This is particularly important if you want to execute ImageJ command from within MATLAB parfor loop (parallel computing).

Apparently, this has been achieved by using the legacy Miji(false). This is mainly because ImageJ(false) (headless mode) never works.

However, ImageJ.m is actually made of two parts: one to add ImageJ 's jJava class paths to MATLAB, and the other to launch ImageJ GUI.

My suggestion here is to split ImageJ.m into two, so that one can add Java class paths without ImageJ GUI using ImageJ_javaaddpath.m.

Alternatively, instead of splitting ImageJ.m into two, if we can say the outcome of ImageJ_javaaddpath.m. i.e. having access to ImageJ Java classes, can be considered as headless mode, a simple change like below to ImageJ.m may be useful.

Apart from being able to access Java API, what else do you need for a headless ImageJ instance?

import net.imagej.matlab.*;
if open_imagej
    ImageJMATLAB.start(verbose);
end

It's OK to give up this PR if people don't like the idea. Just a try.

Best,
Kouichi

Jacques Pecreaux and others added 30 commits July 3, 2018 16:54
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Sometimes, you only want to use parts of Fiji as a library, not start
the interactive ImageJ. To do this, start 'Miji(false)'.

By default, ImageJ will still be started (e.g. 'Miji' does the same as
'Miji(true)').

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
While at it, almost rewrite the thing to avoid unnecessary cd'ing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Unfortunately, a restart is required if Java3D was not installed, but it
is as convenient now as we could make it, at least.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This file only contains comments, as it is meant to be published using
Matlab's publish() function.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Signed-off-by: Stephan Preibisch <stephan.preibisch@gmx.de>
We also have to ensure that the bin folder in the MATLAB jre path is
writable, otherwise it will confuse the user.

Reported by Peter Beemiller
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Now that Johannes fixed the surface plot mode of the 3D viewer, we can
put this demo back. It is a demo explainging how to get the MATLAB logo
rendered in 3D in Fiji 3D viewer.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Apparently, the light was bluish, dunno whether we can do that, too :O)

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
... also if the user asked the main window to be hidden...

Noticed and reported by Walter de Back.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In Miji.m, there it a call to

 fiji.User_Plugins.installScripts();

Unfortunately, this causes a nasty bug with MATLAB: calling this
static method modifies the static MATLAB java path, which is
normally forbidden. The consequences of that are nasty: adding a
class to the dynamic class path can be refused, because it would be
falsy recorded in the static path. On top of that, the static
path is fsck in a weird way, with file separator from Unix, causing a
mess on Windows platform.
So we give it up as now.
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
In the same vein as the previous commit...

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Interoperability for the win.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
…rrayImg

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
The Miji.m script adds Fiji.app/jars and Fiji.app/plugins to the MATLAB
classpath by explicitly iterating over *.jar in these directories. Thus
it was not recursing to subdirectories - notably /jars/bio-formats.

The script will now recurse through subdirectories to find jars.

Adapted from: http://stackoverflow.com/questions/2652630/
how-to-get-all-files-under-a-specific-directory-in-matlab
Instead of manually adding filesep let's let MATLAB decide how to make a
full file path.
This proposed change removes a bug I described on imagej-dev . Any other use of javaaddpath, say to develop one's other software, loses the instance of MIJ. This is because javaaddpath automatically calls clear java. By returning the MIJ instance as a workspace object, the MIJ instance will not be cleared. The only change for the user is to call:

MIJ = Miji;

instead of just

Miji;

Signed-off by: Mark Hiner
This changes all relevant scripts from javax.vecmath to
org.scijava.vecmath, since we now ship vecmath as a standard dependency!
Java 3D 1.6 now ships with Fiji. It does not need to be
(and cannot be!) installed separately.
bastelflp and others added 5 commits July 3, 2018 16:54
…pt spam of printing every artifact added to the classpath to the console. Related commit: imagej/imagej-matlab@2633d12 - Remove `cd ..` to stay in the same directory while loading Miji - Only turn warnings off for: `MATLAB:javaclasspath:jarAlreadySpecified`
 ImageJ.m src\scripts\update
@kouichi-c-nakamura
Copy link
Contributor Author

Sorry, I just realized that this PR is a duplicate.

@imagejan imagejan changed the base branch from master to migrate-matlab-scripts October 11, 2018 12:32
@imagejan imagejan mentioned this pull request Oct 11, 2018
@kouichi-c-nakamura kouichi-c-nakamura deleted the ImageJ_split branch October 11, 2018 14:19
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

Successfully merging this pull request may close these issues.

8 participants