Краткое знакомство с пакетами Julia's PyCall и RCall
Большой! Итак, вы рискуете окунуться в многообещающий мир Джулии, но все еще хотите получить доступ к своим знакомым друзьям Python и R. Хотя преимущества Julia лучше всего реализовать, работая исключительно в Julia, обнадеживает то, что есть несколько способов интеграции ваши навыки Python или R в рабочий процесс во время поездки.
И Python, и R могут быть вызваны в Julia с помощью пакетов PyCall или RCall. Самый простой способ увидеть эти пакеты в действии - использовать соответствующие подходы к преобразованию строк Python или R в операции и функции, доступные для Julia. Для тех, кто знаком с Python, это похоже на использование eval
для однострочного / однострочного кода или exec
для многострочного / многовыраженного кода.
PyCall Привет, мир
Чтобы начать с Python, мы рассмотрим PyCall, запустив в Julia REPL следующую команду:
Обратите внимание, что вывод относится к типу Julia (в данном случае String
).
RCall Привет, мир
Вот такая же демонстрация с использованием RCall:
RCall выводит в виде RObjects
, который можно легко преобразовать в типы Julia с помощью метода rcopy
:
Вы можете передавать переменные, объявленные в Julia, непосредственно в код Python или R с помощью простого синтаксиса. Например:
Загрузка локальных модулей Python
Одним из практических вариантов использования возможности взаимодействия является использование любых разработанных вами пользовательских утилит Python и их применение в Julia. Для очень упрощенной демонстрации давайте создадим модуль Python, который хранит нашу функцию hello_world
, а затем вызовем его из Джулии с помощью PyCall.
Сначала создайте ниже пример модуля с именем mymodule
. Из терминала запустите:
Затем вы можете импортировать и вызывать mymodule.hello_world
из вашего Julia REPL. Есть несколько способов сделать это. Первый аналогичен тому, что мы сделали выше:
Второй и, вероятно, более применимый подход использует функцию PyCall pyimport
для прямого импорта вашего модуля Python:
Загрузка пакетов Python и R
Вы также можете использовать внешние пакеты Python и R. Приведенный ниже код загружает набор данных о жилье в Бостоне scikit-learn и генерирует визуальный элемент с помощью matplotlib внутри Julia REPL:
А если вы предпочитаете строить график с помощью пакета R ggplot2, вы можете использовать макрос @rlibrary
RCall:
Заключение
Вот и все. И PyCall, и RCall имеют гораздо более широкую функциональность для поддержки взаимодействия с Julia, чем показано здесь. Приятно видеть эти усилия по облегчению языковой совместимости и снижению барьеров для входа.
По мере того, как экосистема пакетов Джулии продолжает расти, может возникнуть небольшая потребность в использовании инструментов с внешних языков, но, тем не менее, это удобная ступенька для начала работы.
Ознакомьтесь с документацией PyCall и RCall, ссылки на которую приведены ниже, для более глубокого погружения.
Спасибо за прочтение!