我在imageJ中编写了一个宏,它会吐出一个数据帧然后我在R中进行分析。我希望能够让整个过程在R中工作,而不必先在imageJ中手动运行宏。目前,宏会提示用户输入和输出目录,然后就可以了。我想在R中必须有一个函数,它允许我指定宏和输入和输出目录(然后我可以在宏中重新编码这些变量,以某种方式通过R脚本获取这些参数?)
我认为我可以使用system()命令从网络上的其他地方找到这个诱人的线索:
system("./JavaApplicationStub directory file[i] -batch zmacro")
但我不确定如何实现这一点(我的宏已经使用批处理,因此不需要部分)。
答案 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。