I am running a test on the implementation of init() for pycall and I built an example using the scipy.interpolate.Rbf and PyCall documentation.
Code:
module test_rbf
using PyCall
function __init__()
py"""
import scipy.interpolate as interp
def rad_fit(a, b, c):
return interp.Rbf(a, b, c, function='multiquadric', smooth=0.5)
def rad_pred(radial, a, b):
return radial(a, b)
"""
end
function rbf_fit(x, y, z)
return py"rad_fit"(x, y, z)
end
function rbf_predict(rbfi, x, y)
return py"rad_pred"(rbfi, x, y)
end
x = rand(20)
y = rand(20)
z = rand(20)
x_pred = rand(20)
y_pred = rand(20)
rbfi = rbf_fit(x,y,z)
z = rbf_pred(rbfi, x_pred, y_pred)
println("z is $z")
end
However, this code returns an error saying the function rbf_fit() from init() is not defined.
Stackrace for the error:
LoadError: PyError ($(Expr(:escape, :(ccall(#= C:\Users\saads\.julia\packages\PyCall\BD546\src\pyeval.jl:38 =# @pysym(:PyEval_EvalCode), PyPtr, (PyPtr,
PyPtr, PyPtr), o, globals, locals))))) <class 'NameError'>
NameError("name 'rad_fit' is not defined")
File "C:\Users\user\.julia\packages\PyCall\BD546\src\pyeval.jl", line 1, in <module>
const Py_single_input = 256 # from Python.h
Stacktrace:
[1] pyerr_check
@ ~\.julia\packages\PyCall\BD546\src\exception.jl:62 [inlined]
[2] pyerr_check
@ ~\.julia\packages\PyCall\BD546\src\exception.jl:66 [inlined]
[3] _handle_error(msg::String)
@ PyCall ~\.julia\packages\PyCall\BD546\src\exception.jl:83
in expression starting at c:\Users\user\Desktop\test\test_2.jl:1
May I know what could be the cause of this issue.
Thanks!! Look forward to the responses and suggestion!!