Как передавать (подключать) данные между Цифровой Микрографией и R
Я - новый пользователь DM, и мне нужно передавать данные (яркие пиксели) между Digital Micrograph и R, для обработки и моделирования изображения.
В частности, мне нужно было бы извлечь яркие пиксели из исходного изображения, отправить его в R для обработки и вернуть в DM для представления нового изображения.
Хотелось бы узнать, возможно ли это и как это сделать из скрипта в DM.
Большое спасибо. С уважением.
2 ответа
Прямая связь между DM (сценариями) и внешним миром очень мала, поэтому вполне вероятно, что лучшим решением будет следующий (DM-ориентированный) маршрут:
Сценарий запускается в DM, который выполняет:
- все необходимые интерфейсы
- извлечь интенсивности и т. д.
- сохранить все необходимые данные в подходящем формате на диске по указанному пути. (Необработанные данные / текстовые данные /...)
- вызывает внешнее приложение (все, что можно вызвать из командной строки, включая файлы.bat) и ожидает завершения этой команды
Был ли весь ваш R-код написан так, чтобы его можно было вызывать из командной строки, возможно, с параметрами командной строки (т. Е. Файлом конфигурации):
- читать данные по определенному пути
- обрабатывать по мере необходимости (без интерфейса, поэтому делайте это "тихо")
- сохранить результаты на диске по определенному пути
- закрыть приложение
На этом этапе сценарий в DM продолжается, считывая результаты (и, возможно, выполняя некоторую очистку файлов на диске).
Поэтому, по сути, важно то, что ваш R-код может работать как "автономный" исполняемый файл черного ящика, полностью контролируемый параметрами командной строки.
Команду, которая понадобится вам для запуска внешнего приложения, можно найти в справочной документации в разделе "Функции утилит". LaunchExternalProcess
, Он был введен с GMS 2.3.1.
Вы также можете попробовать использовать команды ScrapCopy()
а также ScrapPasteNew()
скопировать изображение (или подрайон изображения) в буфер обмена, но я не уверен, как именно там обрабатываются данные.