| 1.17 Calling Python Functions from Origin CPython functions can be called from Origin C using the syntax
 Python.function_name(arg1, arg2...) By default the .py file should be placed in the same folder as the C/CPP or XF file.
The name of the file should be origin.py.
 Example - Python Function to perform Bayesian regression:
 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 meanThe function can then be called from OC code:
 void bayesian_reg()
{
        // Have a worksheet active, with three columns
        // Columns 1 and 2 have the X and Y data for fitting
        // Column 3 will have the fit curve result 
	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);
}Multiple variables can be returned from Python function through arguments. & sign before the argument name indicates it's a returned variable. 
 Python.function_name(arg1, arg2..., & ret1, & ret2...) Example - Python Function to perform Bayesian regression to return both fitted values and fitted errors:
 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 # pass mean values to variable vYmean
    vYstd[:] = std  # pass error values to variable vYstdThe function can then be called from OC code:
 void bayesian_reg()
{
        // Have a worksheet active, with four columns
        // Columns 1 and 2 have the X and Y data for fitting
        // Column 3 and column 4 will have the fit curve result, and fitted error.
	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;
}To change the file location, you can set the LabTalk Python object property: Python.OCWD$ to the full path of the desired folder (the working directory).
 To change the file name, you can set the LabTalk Python object property: Python.OCWF$ to the name of the desired Python file in the working directory.
 |