2013-09-24 4 views
3

Я написал макрос в imageJ, который выплескивает кадр данных, который затем анализирую в R. Мне бы хотелось, чтобы вся процедура работала в R без необходимости сначала запускать макрос вручную в imageJ. В настоящее время макрос запрашивает пользователя для входных и выходных каталогов, а затем делает это. Я думаю, что в R должна быть функция, которая позволит мне указать макрос и каталоги ввода и вывода (я мог бы затем перекодировать эти переменные в макросе, чтобы каким-то образом использовать эти аргументы с помощью сценария R?)Как я могу вызвать/выполнить макрос imageJ с R?

Я заключаю, что я могу использовать команду системы() и нашел этот дразнящий ключ где-то еще в сети:

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

, но я не уверен, как осуществить это (мой макрос уже использует пакетную обработку, так что часть будет не нужны).

+0

Я незнакомый с imageJ, но кажется, что он имеет [интерфейс командной строки] (http://rsbweb.nih.gov/ij/docs/guide/146-18.html) (CLI). Попробуйте заставить его работать с CLI для какого-либо произвольного каталога ввода и вывода. После этого вы сможете создавать команды (подставляя в любой каталог, который вы хотите) в R. – nograpes

+0

Действительно, если посмотреть, то вы можете просто вырезать и вставить ваш макрокоманд в качестве аргумента 'eval'. – nograpes

+0

Извините, я пропустил что-то важное. Аргумент 'eval' где? (спасибо за помощь, кстати). – ACG

ответ

2

Благодаря обоим nograpes & Кота (и больше Google поиск), то проблема решается.

Для вызова ImageJ макроса через R как следует из Кота:

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 удалось.

2

Ниже приведен пример запуска макрокоманды «test.ijm» из CL (в osx). Вероятно, вы можете перенести эту команду в R (не тестировалось). Путь к файлу макроса должен быть полным путем, а не относительным путем.

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

Вы попробовали Bio7? Это дистрибуция ImageJ, встроенная в приложение RCP Eclipse, в котором реализована большая интеграция R с использованием Rserve.

Для чего это стоит, мы также работаем над R scripting integration в ImageJ2.

+1

Я видел Bio7, но очень хотел остаться в среде консоли R. – ACG

Смежные вопросы