12.5.2 ユーザー定義Python関数の実行
oml.do_eval
関数を使用して、データを明示的に取得する、または外部データが不要なユーザー定義の入力関数を実行します。
oml.do_eval
関数は、データベース環境によって生成および管理されるPythonエンジンでユーザー定義Python関数を実行します。
oml.do_eval
関数の構文は次のとおりです。
oml.do_eval(func, func_owner=None, graphics=False, **kwargs)
func
引数は、実行する関数です。これには次のいずれかを指定できます。
-
Python関数
-
OML4Pyスクリプト・リポジトリ内のユーザー定義Python関数の名前を表す文字列
- Python関数を定義する文字列
-
oml.script.load
関数によって返されるoml.script.script.Callable
オブジェクト
オプションのfunc_owner
引数は文字列またはNone
(デフォルト)で、引数func
が登録済ユーザー定義Python関数名の場合に、登録済ユーザー定義Python関数の所有者を指定します。
graphics
引数は、イメージを検索するかどうかを指定するブール値です。デフォルト値は、False
です。
**kwargs
パラメータを使用すると、func
関数に追加の引数を渡すことができます。oml_
で始まる特殊な制御引数は、func
で指定された関数に渡されるのではなく、関数の実行前または実行後の動作を制御します。
oml.do_eval
関数は、Pythonオブジェクトまたはoml.embed.data_image._DataImage
を返します。ユーザー定義Python関数でイメージがレンダリングされない場合、oml.do_eval
は、関数によって返されたPythonオブジェクトを返します。それ以外の場合は、oml.embed.data_image._DataImage
オブジェクトを返します。
例12-6 oml.do_eval関数の使用
この例では、列IDおよびRESを含むPandas DataFrameを返すPython関数を定義します。次に、その関数をoml.do_eval
関数に渡します。
import pandas as pd
import oml
def return_df(num, scale):
import pandas as pd
id = list(range(0, int(num)))
res = [i/scale for i in id]
return pd.DataFrame({"ID":id, "RES":res})
res = oml.do_eval(func=return_df, scale = 100, num = 10)
type(res)
res
この例のリスト
>>> import pandas as pd
>>> import oml
>>>
>>> def return_df(num, scale):
... import pandas as pd
... id = list(range(0, int(num)))
... res = [i/scale for i in id]
... return pd.DataFrame({"ID":id, "RES":res})
...
>>>
>>> res = oml.do_eval(func=return_df, scale = 100, num = 10)
>>> type(res)
<class 'pandas.core.frame.DataFrame'>
>>>
>>> res
ID RES
0 0.0 0.00
1 1.0 0.01
2 2.0 0.02
3 3.0 0.03
4 4.0 0.04
5 5.0 0.05
6 6.0 0.06
7 7.0 0.07
8 8.0 0.08
9 9.0 0.09