def main(): import sys filename = sys.argv[1] from pyphant.core import KnowledgeManager km = KnowledgeManager.KnowledgeManager.getInstance() import os.path km.registerURL("file://" + os.path.realpath(filename)) import tables h5 = tables.openFile(filename, 'r+') from pyphant.core import PyTablesPersister recipe = PyTablesPersister.loadRecipe(h5) executionOrders = PyTablesPersister.loadExecutionOrders(h5) h5.close() from pyphant.core.Emd5Src import Emd5Src for order in executionOrders: for socket, emd5 in order[0].iteritems(): sSpec = socket.split('.') w = recipe.getWorker(sSpec[0]) s = getattr(w, sSpec[-1]) src = Emd5Src(recipe) src.paramEmd5.value = emd5 if s.isFull(): s.pullPlug() s.insert(src.plugGetDataContainer) pSpec = order[1][0].split('.') d = recipe.getWorker(pSpec[0]) plug = getattr(d, pSpec[1]) res = plug.getResult() res.seal() h5 = tables.openFile(filename, 'r+') PyTablesPersister.saveResult(res, h5) h5.close()
def processArgs(h5): argv = sys.argv[1:] if '-h' in argv or '--help' in argv: help = True else: help = False args = filter(lambda a: not a in ['-h', '--help'], argv) parser = optparse.OptionParser() recipeFile = argv[0] recipe = PyTablesPersister.loadRecipe(h5) plugs = recipe.getAllPlugs() for p in plugs: parser.add_option( "", "--%s" % p.id, help="Request result of plug %s" % p.id, action="append_const", const=p, dest="requestedResults") (options, args) = parser.parse_args(filter(lambda o: 'plug' in o, argv)) if hasattr(options, "requestedResults") and options.requestedResults and len( options.requestedResults) > 0: openSockets = sum([ recipe.getOpenSocketsForPlug(p) for p in options.requestedResults ], []) parser.values.socketMap = {} def optCallback(opt, opt_str, value, parser, socket): try: parser.values.socketMap[socket.id] = value except: parser.values.socketMap = {} parser.values.socketMap[socket.id] = value for s in openSockets: parser.add_option( "", "--%s" % s.id, help="Feed socket %s with data from argument." % s.id, action="callback", callback=optCallback, nargs=1, type='string', callback_args=(s, )) if help: args.append('-h') parser.add_option( "-n", "--max-orders-per-file", help="Maximal number of orders per file", type="int", dest="maxOrders") (options, args) = parser.parse_args(argv) # Order ::= (socketMap, resultPlug) return (options, args, recipe, [(options.socketMap, [p.id for p in options.requestedResults])])
def processArgs(h5): argv = sys.argv[1:] if '-h' in argv or '--help' in argv: help = True else: help = False args = filter(lambda a: not a in ['-h', '--help'], argv) parser = optparse.OptionParser() recipeFile = argv[0] recipe = PyTablesPersister.loadRecipe(h5) plugs = recipe.getAllPlugs() for p in plugs: parser.add_option("", "--%s" % p.id, help="Request result of plug %s" % p.id, action="append_const", const=p, dest="requestedResults") (options, args) = parser.parse_args(filter(lambda o: 'plug' in o, argv)) if hasattr(options, "requestedResults") and options.requestedResults and len( options.requestedResults) > 0: openSockets = sum([ recipe.getOpenSocketsForPlug(p) for p in options.requestedResults ], []) parser.values.socketMap = {} def optCallback(opt, opt_str, value, parser, socket): try: parser.values.socketMap[socket.id] = value except: parser.values.socketMap = {} parser.values.socketMap[socket.id] = value for s in openSockets: parser.add_option("", "--%s" % s.id, help="Feed socket %s with data from argument." % s.id, action="callback", callback=optCallback, nargs=1, type='string', callback_args=(s, )) if help: args.append('-h') parser.add_option("-n", "--max-orders-per-file", help="Maximal number of orders per file", type="int", dest="maxOrders") (options, args) = parser.parse_args(argv) # Order ::= (socketMap, resultPlug) return (options, args, recipe, [(options.socketMap, [p.id for p in options.requestedResults])])
def loadRecipe(self): return PyTablesPersister.loadRecipe(self.handle)