def generateExperimentDescription(self, SWARM_CONFIG, outDir='./swarm/'): expDescConfig = json.dumps(SWARM_CONFIG) expDescConfig = expDescConfig.splitlines() expDescConfig = "".join(expDescConfig) expGenerator( ["--description=%s" % (expDescConfig), "--outDir=%s" % (outDir)])
def generateExperimentDescription(self, SWARM_CONFIG, outDir='./swarm/'): expDescConfig = json.dumps(SWARM_CONFIG) expDescConfig = expDescConfig.splitlines() expDescConfig = "".join(expDescConfig) expGenerator([ "--description=%s" % (expDescConfig), "--outDir=%s" % (outDir)])
"returned %s" % (str(searchDef))) # ------------------------------------------------------------------------ # Figure out the output directory if not provided if options.outDir is None: options.outDir = os.path.dirname(searchFileName) # ------------------------------------------------------------------------ # Run through expGenerator expGenArgs = ['--description=%s' % (json.dumps(searchDef)), '--version=v2', '--outDir=%s' % (options.outDir)] print "Running ExpGenerator with the following arguments: ", expGenArgs expGenerator(expGenArgs) # Get the permutations file name permutationsFilename = os.path.join(options.outDir, 'permutations.py') print "Successfully generated permutations file: %s" % (permutationsFilename)
def runWithConfig(swarmConfig, options, outDir=None, outputLabel="default", permWorkDir=None, verbosity=1): """ Starts a swarm, given an dictionary configuration. @param swarmConfig {dict} A complete [swarm description](https://github.com/numenta/nupic/wiki/Running-Swarms#the-swarm-description) object. @param outDir {string} Optional path to write swarm details (defaults to current working directory). @param outputLabel {string} Optional label for output (defaults to "default"). @param permWorkDir {string} Optional location of working directory (defaults to current working directory). @param verbosity {int} Optional (1,2,3) increasing verbosity of output. @returns {object} Model parameters """ global g_currentVerbosityLevel g_currentVerbosityLevel = verbosity # Generate the description and permutations.py files in the same directory # for reference. if outDir is None: outDir = os.getcwd() if permWorkDir is None: permWorkDir = os.getcwd() # _checkOverwrite(options, outDir) overwrite = options["overwrite"] if not overwrite: for name in ("description.py", "permutations.py"): if os.path.exists(os.path.join(outDir, name)): raise RuntimeError("The %s file already exists and will be " "overwritten by this tool. If it is OK to overwrite " "this file, use the --overwrite option." % \ os.path.join(outDir, "description.py")) # The overwrite option has already been used, so should be removed from the # config at this point. del options["overwrite"] # # _generateExpFilesFromSwarmDescription(swarmConfig, outDir) # The expGenerator expects the JSON without newlines for an unknown reason. expDescConfig = json.dumps(swarmConfig) expDescConfig = expDescConfig.splitlines() expDescConfig = "".join(expDescConfig) expGenerator([ "--description=%s" % (expDescConfig), "--outDir=%s" % (outDir)]) # options["expDescConfig"] = swarmConfig options["outputLabel"] = outputLabel options["outDir"] = outDir options["permWorkDir"] = permWorkDir # runOptions = _injectDefaultOptions(options) # return dict(DEFAULT_OPTIONS, **options) runOptions = dict(DEFAULT_OPTIONS, **options) # # _validateOptions(runOptions) # def _validateOptions(options): if "expDescJsonPath" not in runOptions \ and "expDescConfig" not in runOptions \ and "permutationsScriptPath" not in runOptions: raise Exception("Options must contain one of the following: " "expDescJsonPath, expDescConfig, or " "permutationsScriptPath.") # # return _runAction(runOptions) # def _runAction(runOptions): if not os.path.exists(runOptions["outDir"]): os.makedirs(runOptions["outDir"]) if not os.path.exists(runOptions["permWorkDir"]): os.makedirs(runOptions["permWorkDir"]) action = runOptions["action"] # Print Nupic HyperSearch results from the current or last run if action == "report": returnValue = _HyperSearchRunner.generateReport( options=runOptions, replaceReport=runOptions["replaceReport"], hyperSearchJob=None, metricsKeys=None) # Run HyperSearch elif action in ("run", "dryRun", "pickup"): returnValue = _runHyperSearch(runOptions) # def _runHyperSearch(runOptions): global gCurrentSearch # Run HyperSearch startTime = time.time() search = _HyperSearchRunner(runOptions) # Save in global for the signal handler. gCurrentSearch = search if runOptions["action"] in ("run", "dryRun"): search.runNewSearch() else: search.pickupSearch() # Generate reports # Print results and generate report csv file modelParams = _HyperSearchRunner.generateReport( options=runOptions, replaceReport=runOptions["replaceReport"], hyperSearchJob=search.peekSearchJob(), metricsKeys=search.getDiscoveredMetricsKeys()) secs = time.time() - startTime hours = int(secs) / (60 * 60) secs -= hours * (60 * 60) minutes = int(secs) / 60 secs -= minutes * 60 print "Elapsed time (h:mm:ss): %d:%02d:%02d" % (hours, minutes, int(secs)) jobID = search.peekSearchJob().getJobID() print "Hypersearch ClientJobs job ID: ", jobID return modelParams
getSearchFunc = vars.get('getSearch', None) if getSearchFunc is None: raise RuntimeError("Error: the %s python script does not provide the " "required getSearch() method") searchDef = getSearchFunc(os.path.dirname(__file__)) if not isinstance(searchDef, dict): raise RuntimeError( "The searchDef function should return a dict, but it " "returned %s" % (str(searchDef))) # ------------------------------------------------------------------------ # Figure out the output directory if not provided if options.outDir is None: options.outDir = os.path.dirname(searchFileName) # ------------------------------------------------------------------------ # Run through expGenerator expGenArgs = [ '--description=%s' % (json.dumps(searchDef)), '--version=v2', '--outDir=%s' % (options.outDir) ] print "Running ExpGenerator with the following arguments: ", expGenArgs expGenerator(expGenArgs) # Get the permutations file name permutationsFilename = os.path.join(options.outDir, 'permutations.py') print "Successfully generated permutations file: %s" % ( permutationsFilename)