Как передавать (подключать) данные между Digital Micrograph и R

Я новый пользователь DM, и мне нужно передавать данные (яркие пиксели) между Digital Micrograph и R для обработки и моделирования изображения.

В частности, мне нужно было бы извлечь яркие пиксели из исходного изображения, отправить их в R для обработки и вернуть в DM для представления нового изображения.

Хотелось бы узнать, можно ли и как это сделать из скрипта в DM.

Большое спасибо. С Уважением.


person Sergio    schedule 23.04.2015    source источник


Ответы (2)


Существует очень мало прямых соединений между DM (скриптами) и внешним миром, поэтому лучшим решением, скорее всего, будет следующий (ориентированный на DM) маршрут:

В DM запускается скрипт, который делает:

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

Был ли весь ваш код R написан таким образом, чтобы его можно было вызвать из командной строки, возможно, с параметрами командной строки (т.е. конфигурационным файлом):

  • читать данные с определенного пути
  • обрабатывать по мере необходимости (без пользовательского интерфейса, поэтому делайте это «молча»)
  • сохранить результаты на диске по определенному пути
  • закрыть приложение

В этот момент сценарий в DM продолжает чтение результатов (и, возможно, некоторую очистку файлов на диске).


Итак, по сути, важно то, что ваш R-код может работать как «автономный» исполняемый файл черного ящика, полностью управляемый параметрами командной строки.

Команду, которая вам понадобится для запуска внешнего приложения, можно найти в справочной документации в разделе «Утилиты» и она называется LaunchExternalProcess. Он был представлен в GMS 2.3.1.

person BmyGuest    schedule 23.04.2015

Вы также можете попробовать использовать команды ScrapCopy() и ScrapPasteNew() для копирования изображения (или подобласти изображения) в буфер обмена, но я не уверен, как именно там обрабатываются данные.

person BmyGuest    schedule 23.04.2015