def ext_gridloop_exceptions(self, f): """Test error handling in the extension module.""" x_p = self.c.py2my(self.xcoor) y_p1 = self.c.py2my(self.ycoor[1:]) f_p = self.c.set_pyfunc(f) try: #1 ext_gridloop.gridloop1((1, 2), x_p, y_p1, f_p) except: print sys.exc_type, sys.exc_value try: #2 ext_gridloop.gridloop1(x_p, x_p, y_p1, f_p) except: print sys.exc_type, sys.exc_value try: #3 ext_gridloop.gridloop2(x_p, y_p, 'abc') except: print sys.exc_type, sys.exc_value try: #4 # cannot be handled by this interface... #ext_gridloop.gridloop2(array(self.xcoor,Complex64), # self.ycoor, 'abc') pass except: print sys.exc_type, sys.exc_value try: #5 # cannot be handled by this interface... #ext_gridloop.gridloop2(array([[0,0],[1,2]]), self.ycoor, 'abc') pass except: print sys.exc_type, sys.exc_value
def ext_gridloop2(self, f): """Compute a[i,j] = f(xi,yj) in an external routine.""" x_p = self.c.py2my(self.xcoor) y_p = self.c.py2my(self.ycoor) f_p = self.c.set_pyfunc(f) a_p = ext_gridloop.gridloop2(x_p, y_p, f_p) a = self.c.my2py(a_p) return a
def ext_gridloop2(self, f): """Compute a[i,j] = f(xi,yj) in an external routine.""" x_p = self.c.py2my(self.xcoor) y_p = self.c.py2my(self.ycoor) f_p = self.c.set_pyfunc(f) a_p = ext_gridloop.gridloop2(x_p, y_p, f_p) a = self.c.my2py(a_p) return a
def ext_gridloop_exceptions(self, f): """Test error handling in the extension module.""" x_p = self.c.py2my(self.xcoor) y_p1 = self.c.py2my(self.ycoor[1:]) f_p = self.c.set_pyfunc(f) try: #1 ext_gridloop.gridloop1((1,2), x_p, y_p1, f_p) except: print sys.exc_type, sys.exc_value try: #2 ext_gridloop.gridloop1(x_p, x_p, y_p1, f_p) except: print sys.exc_type, sys.exc_value try: #3 ext_gridloop.gridloop2(x_p, y_p, 'abc') except: print sys.exc_type, sys.exc_value
def ext_gridloop_exceptions(self, f): """Test error handling in the extension module.""" x_p = self.c.py2my(self.xcoor) y_p1 = self.c.py2my(self.ycoor[1:]) f_p = self.c.set_pyfunc(f) try: #1 ext_gridloop.gridloop1((1, 2), x_p, y_p1, f_p) except: print sys.exc_type, sys.exc_value try: #2 ext_gridloop.gridloop1(x_p, x_p, y_p1, f_p) except: print sys.exc_type, sys.exc_value try: #3 ext_gridloop.gridloop2(x_p, y_p, 'abc') except: print sys.exc_type, sys.exc_value
def ext_gridloop2(self, f): """Compute a[i,j] = f(xi,yj) in an external routine.""" # a is made in the external routine if isinstance(f, str): f_compiled = compile(f, '<string>', 'eval') def f_str(x, y): return eval(f_compiled) #return eval(f) # much slower func = f_str else: func = f a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, func) return a
def ext_gridloop2(self, f): """Compute a[i,j] = f(xi,yj) in an external routine.""" if isinstance(f, str): f_compiled = compile(f, '<string>', 'eval') def f_str(x, y): return eval(f_compiled) #return eval(f) func = f_str else: func = f x_p = self.c.py2my(self.xcoor) y_p = self.c.py2my(self.ycoor) f_p = self.c.set_pyfunc(func) a_p = ext_gridloop.gridloop2(x_p, y_p, f_p) a = self.c.my2py(a_p) return a
def ext_gridloop_exceptions(self, f): """Test error handling in the extension module.""" try: #1 ext_gridloop.gridloop1((1,2), self.xcoor, self.ycoor[1:], f) except: print sys.exc_type, sys.exc_value try: #2 ext_gridloop.gridloop1(self.xcoor, self.xcoor, self.ycoor[1:], f) except: print sys.exc_type, sys.exc_value try: #3 ext_gridloop.gridloop2(self.xcoor, self.ycoor, 'abc') except: print sys.exc_type, sys.exc_value try: #4 ext_gridloop.gridloop2(array(self.xcoor,Complex64), self.ycoor, 'abc') except: print sys.exc_type, sys.exc_value try: #5 ext_gridloop.gridloop2(array([[0,0],[1,2]]), self.ycoor, 'abc') except: print sys.exc_type, sys.exc_value
def ext_gridloop_exceptions(self, f): """Test error handling in the extension module.""" try: #1 ext_gridloop.gridloop1((1, 2), self.xcoor, self.ycoor[1:], f) except: print sys.exc_type, sys.exc_value try: #2 ext_gridloop.gridloop1(self.xcoor, self.xcoor, self.ycoor[1:], f) except: print sys.exc_type, sys.exc_value try: #3 ext_gridloop.gridloop2(self.xcoor, self.ycoor, 'abc') except: print sys.exc_type, sys.exc_value try: #4 ext_gridloop.gridloop2(array(self.xcoor, Complex64), self.ycoor, 'abc') except: print sys.exc_type, sys.exc_value try: #5 ext_gridloop.gridloop2(array([[0, 0], [1, 2]]), self.ycoor, 'abc') except: print sys.exc_type, sys.exc_value
c = ext_gridloop.Convert_MyArray() n = 3 a = zeros((n,n)) xcoor = linspace(0, 1, 3) ycoor = xcoor.copy def f(x, y): print "in f(%g,%g)" % (x,y) return x+y+1 x_p = c.py2my(xcoor) y_p = c.py2my(ycoor) a_p = c.py2my(a) x_p = c.py2my(xcoor) y_p = c.py2my(ycoor) a_p = c.py2my_copy(a) f_p = c.set_pyfunc(f) print "calling gridloop1" ext_gridloop.gridloop1(a_p, x_p, y_p, f_p) b = c.my2py_copy(a_p) print "b=", b print "calling gridloop2" a2_p = ext_gridloop.gridloop2(x_p, y_p, f_p) print "converting C++ ptr to NumPy" a2 = c.my2py(a2_p) print "a2", a2
def ext_gridloop2(self, f): """Compute a[i,j] = f(xi,yj) in an external routine.""" # a is made in the external routine a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, f) return a
def ext_gridloop2_fcb_ptr(self): """As ext_gridloop2, but compiled Fortran callback func.""" from callback import fcb a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, fcb._cpointer) return a
def ext_gridloop2(self, f): """Compute a[i,j] = f(xi,yj) in an external routine.""" # a is made in the external routine a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, f) return a
def ext_gridloop2_fcb_ptr(self): """As ext_gridloop2, but compiled Fortran callback func.""" from callback import fcb a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, fcb._cpointer) return a
c = ext_gridloop.Convert_MyArray() n = 3 a = zeros((n,n), Float) xcoor = sequence(0, 1, 0.5) ycoor = sequence(0, 1, 0.5) def f(x, y): print "in f(%g,%g)" % (x,y) return x+y+1 x_p = c.py2my(xcoor) y_p = c.py2my(ycoor) a_p = c.py2my(a) x_p = c.py2my(xcoor) y_p = c.py2my(ycoor) a_p = c.py2my_copy(a) f_p = c.set_pyfunc(f) print "calling gridloop1" ext_gridloop.gridloop1(a_p, x_p, y_p, f_p) b = c.my2py_copy(a_p) print "b=", b print "calling gridloop2" a2_p = ext_gridloop.gridloop2(x_p, y_p, f_p) print "converting C++ ptr to NumPy" a2 = c.my2py(a2_p) print "a2", a2
print 'a is still filled with zeros!\n\n' # try something simple and compare 1-dim and 2-dim arrays: print ext_gridloop.change.__doc__ ext_gridloop.change(a, xcoor, ycoor) print 'a after change:\n', a print 'xcoor after change:\n', xcoor print 'ycoor after change:\n', ycoor # repair x and y (a is ok in the calling code): xcoor = sequence(0, 1, 0.5, Float) ycoor = sequence(0, 1, 1, Float) print ext_gridloop.gridloop2.__doc__ a = ext_gridloop.gridloop2(xcoor, ycoor, myfunc) print 'a after gridloop2:\n', a dump() print 'a is correct!\n\n' # work with an input _and_ output array: print ext_gridloop.gridloop3.__doc__ a[:,:] = -1.0 print 'Fortran storage of a?', \ ext_gridloop.has_column_major_storage(a) b = ext_gridloop.gridloop3(a, xcoor, ycoor, myfunc) print 'a after gridloop3:\n', a print 'is a overwritten?', a is b dump() print 'a is correct!\n\n'
print 'a is still filled with zeros!\n\n' # try something simple and compare 1-dim and 2-dim arrays: print ext_gridloop.change.__doc__ ext_gridloop.change(a, xcoor, ycoor) print 'a after change:\n', a print 'xcoor after change:\n', xcoor print 'ycoor after change:\n', ycoor # repair x and y (a is ok in the calling code): xcoor = linspace(0, 1, 3) ycoor = linspace(0, 1, 2) print ext_gridloop.gridloop2.__doc__ a = ext_gridloop.gridloop2(xcoor, ycoor, myfunc) print 'a after gridloop2:\n', a dump() print 'a is correct!\n\n' # work with an input _and_ output array: print ext_gridloop.gridloop3.__doc__ a[:,:] = -1.0 print 'Fortran storage of a?', \ ext_gridloop.has_column_major_storage(a) b = ext_gridloop.gridloop3(a, xcoor, ycoor, myfunc) print 'a after gridloop3:\n', a print 'is a overwritten?', a is b dump() print 'a is correct!\n\n'