pythononlispの拡張
http://www2s.biglobe.ne.jp/~niitsuma/pythononlispex.html
pythononlispにいくつか関数を追加して以下のようにpythonのグラフ描画機能などが利用できるようにした.
pylabを使ってグラフを書く例は以下
$sudo apt-get install python-matplotlib $ sbcl (asdf:operate 'asdf:load-op :cffi) (asdf:operate 'asdf:load-op :cl-json) #+sbcl (sb-int:set-floating-point-modes :traps '()) ;clisp donot need this (asdf:operate 'asdf:load-op :pythononlisp) (py::py "print \"Hello from python\"") (py::pyj "pylab.plot" '(1 2 3 4) '(4 3 2 1)) (py::py "pylab.show()") ;グラフのプロット
その他にもこんな使い方ができるようにした
(print (py::pyj "len" (list 1 5 6 ) ) ) ;3 (print (py::pyj "range" 2 7)) ;(2 3 4 5 6) (py::setvalj "a" (list 2 3 4)) ;lispのデータをpythonの変数aに代入 (py::py "print a") ;[2, 3, 4] ;ちゃんと代入されてるか確認 (print (py::getvalj "a")) ;(2 3 4) ;pythonの変数aをlispのデータとして返す (py::pyj "numpy.reshape" (list 1 2 3 4 5 6 ) (list 2 3)) ; -> ((1 2 3) (4 5 6)) (py::pyj "numpy.dot" '((1 2) (3 4)) '((1 2) (3 4)) ) ; -> ((7 10) (15 22)) ;行列の積
sbclから使う場合は
(asdf:operate 'asdf:load-op :pythononlisp)
の前に
(sb-int:set-floating-point-modes :traps '())
しないといけないようだ。
pythononlispはlisp - python間で整数と文字列データしかやりとりできないので、他のデータも送れるように拡張した.
jsonrpcdirectとcl-jsonを最初にインストールする必要がある。lispのcffi経由でpython.soを呼ぶと不明なエラーに遭遇することがあるのでjsonrpcdirectを使う方がいい場合もある。
install
$sudo apt-get install python-simplejson python-numpy $wget http://www2s.biglobe.ne.jp/%7Eniitsuma/jsonrpcdirect06.tar.gz $tar zxf jsonrpcdirect06.tar.gz $cd jsonrpcdirect06 $sudo python setup.py install $sudo apt-get install cl-cffi $ sbcl (require :asdf) (require :asdf-install) (sb-int:set-floating-point-modes :traps '()) (asdf-install:install "http://www2s.biglobe.ne.jp/~niitsuma/pythononlisp-ex06.tar.gz")