Взаимодействие с заклинаниями - PullRequest
4 голосов
/ 15 декабря 2011

Я бы хотел использовать Incanter от Clojure, но я бы хотел смешивать вызовы с обширными числовыми библиотеками Numpy / Scipy в Python.Существует ли мост взаимодействия между Incanter и Numpy, который позволяет запускать встроенную среду выполнения CPython из Clojure и который взаимопревращает матричные структуры данных Numpy и Incanter?

Jython недостаточно, поскольку Numpy требует CPython.

Я знаю (но никогда не использовал) http://jepp.sourceforge.net/,, который позволяет программам на Java управлять встроенной средой исполнения CPython - но взаимопревращение матриц Numpy / Incanter все еще необходимо.

Яищу что-то похожее на https://github.com/jolby/rincanter (которое я также еще не использовал), но для CPython / Numpy вместо R.

1 Ответ

1 голос
/ 09 февраля 2012

Существует нет готового моста Numpy-Incanter .Вы должны написать свой собственный.

Одним из способов является использование JNI соотв.Jepp и - как вы уже сказали - конвертируют необработанные байты ndarray в то, что может использовать библиотека Java Colt (и наоборот; incanter строится на Colt).Кроме того, вы обернули все интересующие вас функции.

Другим способом было бы сериализовать ndarrays и пересылать их между CPython и Jython (например, Pyro, который работает с CPython и Jython: http://packages.python.org/Pyro4/alternative.html#jython). Опять же, вам придется преобразовать необработанные байты во что-то, что может понять Incanter или numpy, но вы можете использовать код Python на стороне Java без необходимости заключать каждую функцию в numpy / scipy с помощью JNI.*

...