def internalGetFuncInfo(mode, number, funcname, functype, numberin, numberout, function) : """ This function is called by the C part of the extension and returns the function number (or 0 on error), function name, function type, number of input parameters, number of output parameters and the function itself. It works much like the internal kernel function krf_getInternalFuncInfo and is called by it. """ retnumber = 0 retnumberin = 0 retnumberout = 0 rettype = functype retfunc = lambda : 0 retname = "Invalid_Name" funclist = [] for key1 in custom_functions : for key2 in custom_functions[key1] : funclist.append((key1,key2, custom_functions[key1][key2])) funclist.sort() if mode == krui.SEARCH_FUNC : try : res = custom_functions[funcname][functype] retnumber = funclist.index((funcname,functype,res)) + 1 rettype = functype retname = funcname retnumberin, retnumberout, retfunc = res except : pass elif mode == krui.GET_FUNC_INFO : res = funclist[number - 1 - (krui.getNoOfFunctions() - len(custom_functions))] retnumber = number retname, rettype, = res[:2] retnumberin, retnumberout, retfunc = res[2] elif mode == krui.GET_FUNC_NAME : barefunclist = [ f[len(f)-1][2] for f in funclist ] try : location = barefunclist.index(function) res = funclist[location] retnumber = location + 1 retname, rettype = res[:2] retnumberin, retnumberout, retfunc = res[2] except: retnumber = 0 print "Could not determine function's name" else : print "No such search mode" raise ValueError, "bad search mode" return (retnumber,rettype,retname,retnumberin,retnumberout, retfunc)
from snns import krui,util import sys def headline(txt) : print print txt print "-" * len(txt) print print krui.getVersion() print "Loadnet:" try: headline("general kernel information") funcnum = krui.getNoOfFunctions() print "Available functions:" for i in range(funcnum)[1:] : params = krui.getFuncInfo(i) print "Function:", params[0], print " Type: ", print util.func_types[params[1] & krui.FUNC_TYPE_MASK], print " i/o params: ", print krui.getFuncParamInfo(params[0],params[1]) headline("some fixed dimension example (encoder.*)") net = krui.loadNet("encoder.net") print "Net loaded: " + net print krui.getMemoryManagerInfo() print "Number of input units:", krui.getNoOfTTypeUnits(krui.INPUT) print "Number of output units:", krui.getNoOfOutputUnits()
def acttest(x): print "ActTest for unit", x return 0 def actderivtest(x): print "ActDerivTest for unit", x return 0 def actderiv2test(x): print "ActDeriv2Test for unit", x return 0 oldnum = krui.getNoOfFunctions() print "Builtin functions:", oldnum util.registerFunction(outtestfunc, "outtestfunc", krui.OUT_FUNC, 0, 0) util.registerFunction(outtestfunc2, "outtestfunc2", krui.OUT_FUNC, 0, 0) util.registerFunction(acttest, "acttest", krui.ACT_FUNC, 0, 0) util.registerFunction(actderivtest, "acttest", krui.ACT_DERIV_FUNC, 0, 0) util.registerFunction(actderiv2test, "acttest", krui.ACT_2_DERIV_FUNC, 0, 0) newnum = krui.getNoOfFunctions() print "After adding:", newnum for num in range(oldnum - 2, newnum + 1): print "Function number", num, "Info:", krui.getFuncInfo(num) print krui.loadNet('encoder.net') for num in [1, 10, 19]: krui.setUnitOutFunc(num, "outtestfunc")
import sys def headline(txt): print print txt print "-" * len(txt) print print krui.getVersion() print "Loadnet:" try: headline("general kernel information") funcnum = krui.getNoOfFunctions() print "Available functions:" for i in range(funcnum)[1:]: params = krui.getFuncInfo(i) print "Function:", params[0], print " Type: ", print util.func_types[params[1] & krui.FUNC_TYPE_MASK], print " i/o params: ", print krui.getFuncParamInfo(params[0], params[1]) headline("some fixed dimension example (encoder.*)") net = krui.loadNet("encoder.net") print "Net loaded: " + net print krui.getMemoryManagerInfo() print "Number of input units:", krui.getNoOfTTypeUnits(krui.INPUT) print "Number of output units:", krui.getNoOfOutputUnits()
return x/3 def acttest(x) : print "ActTest for unit", x return 0 def actderivtest(x) : print "ActDerivTest for unit", x return 0 def actderiv2test(x) : print "ActDeriv2Test for unit", x return 0 oldnum = krui.getNoOfFunctions() print "Builtin functions:", oldnum util.registerFunction(outtestfunc,"outtestfunc",krui.OUT_FUNC,0,0) util.registerFunction(outtestfunc2,"outtestfunc2",krui.OUT_FUNC,0,0) util.registerFunction(acttest,"acttest",krui.ACT_FUNC,0,0) util.registerFunction(actderivtest,"acttest",krui.ACT_DERIV_FUNC,0,0) util.registerFunction(actderiv2test,"acttest",krui.ACT_2_DERIV_FUNC,0,0) newnum = krui.getNoOfFunctions() print "After adding:", newnum for num in range(oldnum - 2, newnum + 1) : print "Function number", num, "Info:",krui.getFuncInfo(num) print krui.loadNet('encoder.net') for num in [1,10,19] : krui.setUnitOutFunc(num,"outtestfunc")