如何使用R调用/执行imageJ宏?

时间:2013-09-24 18:52:47

标签: r macros imagej

我在imageJ中编写了一个宏,它会吐出一个数据帧然后我在R中进行分析。我希望能够让整个过程在R中工作,而不必先在imageJ中手动运行宏。目前,宏会提示用户输入和输出目录,然后就可以了。我想在R中必须有一个函数,它允许我指定宏和输入和输出目录(然后我可以在宏中重新编码这些变量,以某种方式通过R脚本获取这些参数?)

我认为我可以使用system()命令从网络上的其他地方找到这个诱人的线索:

system("./JavaApplicationStub  directory file[i] -batch zmacro") 

但我不确定如何实现这一点(我的宏已经使用批处理,因此不需要部分)。

3 个答案:

答案 0 :(得分:3)

感谢nograpes& Kota(以及更多谷歌搜索)问题解决了。

通过R调用imageJ宏如下所示:Kota:

system("/Applications/ImageJ/ImageJ.app/Contents/MacOS/JavaApplicationStub -batch 
/Users/xxxx/Desktop/testmacro.txt")

我使用的特定宏需要输入和输出目录。要在R中对此进行编码,我在系统调用中添加了一个参数:

system("/Applications/ImageJ/ImageJ.app/Contents/MacOS/JavaApplicationStub -batch 
/Users/acgerstein/Desktop/testmacrobatch.txt 
/Users/acgerstein/Desktop/130829Pos_24h/*/Users/acgerstein/Desktop/temp/")

据我所知,imageJ只支持传入一个参数。所以我将输入目录和输出目录分开了“*”。

imageJ中的代码如下所示:

folders = getArgument;
delimiter = "*";
parts=split(folders, delimiter);
dir1 = parts[0];
dir2 = parts[1];

最令人意想不到的一点是,通常通过imageJ中的宏打印的日志文件现在显示在R控制台中。

Mischief管理。

答案 1 :(得分:2)

以下是从CL(在osx中​​)运行宏文件“test.ijm”的示例。您可以将此命令包装在R(未测试)中。宏文件的路径应该是完整路径,而不是相对路径。

/Applications/ImageJ/ImageJ.app/Contents/MacOS/JavaApplicationStub -batchpath /tmp/test.ijm

答案 2 :(得分:1)

你试过Bio7吗?它是一个嵌入在Eclipse RCP应用程序中的ImageJ的发行版,它使用Rserve进行了大量的R集成。

对于它的价值,我们也在R scripting integration中处理ImageJ2