Drkcore

11 04 2009 R rpy Python Tweet

rpy2とsoaplibでつくるRのウェブサービス

soaplibにはCherryPyが組み込まれているので簡単にウェブサービスがつくれる。さらにrpy2を使えばRのウェブサービスがお手軽に構築できて便利。

インストールの手順はwikiを参照

以下のコードをsoapr.pyというファイル名で保存する。これは与えた数字の数だけRがrnormして返すという簡単なサービス。

from soaplib.wsgi_soap import SimpleWSGISoapApp
from soaplib.service import soapmethod
from soaplib.serializers.primitive import String, Integer, Array, Float
import rpy2.robjects as robjects

class RService(SimpleWSGISoapApp):

    @soapmethod(Integer,_returns=Array(Float))
    def rnorm(self,num):
        r = robjects.r        
        y = r.rnorm(num)
        return [i for i in y]

if __name__=='__main__':
    from cherrypy.wsgiserver import CherryPyWSGIServer
    server = CherryPyWSGIServer(('localhost',7789),RService())
    server.start()

実行するとサーバが立ち上がりhttp://localhost:7789/soapr.wsdlにアクセスするとwsdlを出力する。

テスト用のクライアント

>>> from soaplib.client import make_service_client
>>> from soapr import RService
>>> client = make_service_client('http://localhost:7789/',RService())
>>> print client.rnorm(5)
[-0.40538156526399999, 0.45889158855099998, -0.67243766066699995, 2.6881017757299999, 0.113257266309]
>>> print client.rnorm(3)
[-0.16610789340500001, 0.66591497139099998, -1.74812066455]

参考

  • Documentation for rpy2
  • soaplib

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021