documents:101105ij_r_jython
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
documents:101105ij_r_jython [2013/09/10 13:00] – kota | documents:101105ij_r_jython [2020/11/26 09:11] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ======= R + ImageJ ======= | ||
+ | |||
+ | Analysis using several tools is a powerful way to deal with complex Image data. We often do this, and here is one small example of taking advantages of ImageJ and R at the same time. There are three ways: | ||
+ | |||
+ | - Use R from ImageJ (Rserve) | ||
+ | - Use ImageJ from R (no description yet) | ||
+ | - Use ImageJ and R from Jython REPL | ||
+ | |||
+ | ====== 1. Using R from ImageJ via Rserve ====== | ||
+ | |||
+ | In this example, R functions are used from ImageJ via Rserve using Jython scripting. | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | After the installation, | ||
+ | < | ||
+ | R CMD Rserve | ||
+ | </ | ||
+ | |||
+ | Then in the Fiji script editor, try the following code: | ||
+ | |||
+ | <sxh python> | ||
+ | from org.rosuda.REngine.Rserve import RConnection | ||
+ | |||
+ | c = RConnection() | ||
+ | x = c.eval(" | ||
+ | print x.asString() | ||
+ | c.close() | ||
+ | </ | ||
+ | |||
+ | If you see the version number of R printed in the output field, then you are successfully communicating with R from ImageJ. | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ====== 2. Using ImageJ from R ====== | ||
+ | |||
+ | One easy way is to execute a shell command to run ImageJ macro / scripts in R. Such example is well documented in the link below. | ||
+ | |||
+ | http:// | ||
+ | |||
+ | I have not made any attempt to directly access ImageJ classes from R but here is my advice for an inquiry. There is an R-package " | ||
+ | |||
+ | < | ||
+ | | ||
+ | |||
+ | http:// | ||
+ | |||
+ | This basically allows use of methods available in one of the classes in ImageJ called ij.IJ | ||
+ | |||
+ | http:// | ||
+ | |||
+ | This class IJ is a kind of utility class with many static methods that allows user to operate on images like ImageJ macro (especially the **run()** method does sort of such). | ||
+ | |||
+ | Access is limited, but depending on what you want to do, I could maybe advice more. | ||
+ | |||
+ | Another option is to access at much lower level using rJava: | ||
+ | |||
+ | http:// | ||
+ | |||
+ | By adding ImageJ to your Java path, it's probably possible to write script in R like Rhino javascript or Jython. | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====== 3. Using ImageJ and R from Jython Interactive Interpreter ====== | ||
+ | |||
+ | ImageJ classes could be accessed by Jython, a python based java interface. R has rJava (JRI, Java - R Interface). For this reason, one way of using ImageJ functions and R functions in an integrated environment is to use these resources from Jython. | ||
+ | |||
+ | Python-scripting environment is light enough to test many things. After these testings are done, then a serious Java code could be written. | ||
+ | |||
+ | Here is a trial in win32. All commands will be done from command line. It should basically be similar in other environment. | ||
+ | |||
+ | ===== Setting Up Environment. ===== | ||
+ | |||
+ | You should have done: | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | **1. set CLASSPATH** | ||
+ | |||
+ | Following three jars should be in your classpath. | ||
+ | * JRI.jar | ||
+ | * REngine.jar | ||
+ | * JRIEngine.jar | ||
+ | * ij.jar | ||
+ | ... so in command line | ||
+ | < | ||
+ | set CLASSPATH=%CLASSPATH%; | ||
+ | </ | ||
+ | **2. set PATH** | ||
+ | |||
+ | R native libraries should be linked. Then the path should be added with bin, jri, R.dll and JVM.dll: | ||
+ | < | ||
+ | set PATH=%PATH%; | ||
+ | </ | ||
+ | ===== Example Scripting ===== | ||
+ | <sxh python> | ||
+ | C:\>java org.python.util.jython | ||
+ | Jython 2.5.1 (Release_2_5_1: | ||
+ | [Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_22 | ||
+ | Type " | ||
+ | |||
+ | #importing image using ImageJ | ||
+ | |||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | |||
+ | # going into R, first instantiate | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | >>> | ||
+ | |||
+ | >>> | ||
+ | #.. will plot the graph but one cannot close it... | ||
+ | |||
+ | >>> | ||
+ | #will close all the plots. | ||
+ | |||
+ | </ | ||