次のシンタックスを使用して、Origin CからPython関数を呼び出せます。
Python.function_name(arg1, arg2...)
デフォルトでは、C/CPPまたはXFファイルと同じフォルダに.pyファイルを置く必要があります。ファイル名はorigin.pyにしてください。
サンプル - ベイズ回帰を実行するPython関数
import numpy as np import pandas as pd import originpro as op from sklearn import linear_model def bayesian(vX, vY): blr = linear_model.BayesianRidge(tol=1e-6, fit_intercept=True, compute_score=False, alpha_init=1, lambda_init=1e-3) blr.fit(np.vander(vX, 10), vY) mean = blr.predict(np.vander(vX, 10)) return mean
その後OCコードから関数を呼び出せます。
void bayesian_reg() { // 3列あるワークシートをアクティブにする // 列1と2はそれぞれフィットを実行するX、Yデータ // 列3にはフィット曲線の結果を出力する Worksheet wks=Project.ActiveLayer(); Dataset dsx, dsy, dsypred; dsx.Attach(wks, 0); dsy.Attach(wks, 1); dsypred.Attach(wks, 2); dsypred = Python.bayesian(dsx, dsy); }
複数の変数は、引数を使ってPython関数から返せます。引数名の前の&記号は、それが返された変数であることを示します。
Python.function_name(arg1, arg2..., & ret1, & ret2...)
サンプル - フィット値とフィット誤差を返すベイズ回帰を実行するPython関数
import numpy as np import pandas as pd import originpro as op from sklearn import linear_model def bayesian(vX, vY, vYmean, vYstd): blr = linear_model.BayesianRidge(tol=1e-6, fit_intercept=True, compute_score=False, alpha_init=1, lambda_init=1e-3) blr.fit(np.vander(vX, 10), vY) mean, std = blr.predict(np.vander(vX, 10), return_std=True) vYmean[:] = mean # 変数vYmeanに平均値を渡す vYstd[:] = std # 変数vYstdに誤差の値を返す
その後OCコードから関数を呼び出せます。
void bayesian_reg() { // 4列あるワークシートをアクティブにする // 列1と2はそれぞれフィットを実行するX、Yデータ // 列3と4にはフィット曲線結果とフィット誤差を出力 Worksheet wks=Project.ActiveLayer(); Dataset dsx, dsy, dsypred, dsystd; dsx.Attach(wks, 0); dsy.Attach(wks, 1); dsypred.Attach(wks, 2); dsystd.Attach(wks, 3); vector vYmean, vYstd; Python.bayesian(dsx, dsy, &vYmean, &vYstd); dsypred = vYmean; dsystd = vYstd; }
ファイルの位置を変更するには、LabTalkのPythonオブジェクトプロパティである、Python.OCWD$を目的のフォルダ(作業ディレクトリ)のフルパスに設定します。
ファイル名を変更するには、LabTalkのPythonオブジェクトプロパティである、Python.OCWF$を作業ディレクトリ内の目的のファイル名に設定します。