def test_generateRuns_customSubdirs(self): mSuite = ModelSuite(os.path.join("output","genSuiteTest"), templateMRun = self.mRun1) mSuite.addVariant("depthVary", self.stgI1) mSuite.addVariant("ZVary", self.stgI2) mSuite.subOutputPathGenFunc = msuite.getSubdir_RunIndex mSuite.generateRuns(itertools.izip) self.assertEqual(len(mSuite.runs), min(len(self.yRange), len(self.zRange))) for runI in range(len(mSuite.runs)): # This should just be a very simple output path based on # run index self.assertEqual(mSuite.runs[runI].outputPath, os.path.join("output", "genSuiteTest", msuite.getSubdir_RunIndex(None, None, None, runI))) mSuite.subOutputPathGenFunc = msuite.getSubdir_TextParamVals mSuite.generateRuns(itertools.izip) expIndices = [(0,0),(1,1)] for runI, expIndexTuple in enumerate(expIndices): self.assertEqual(mSuite.runs[runI].outputPath, os.path.join("output", "genSuiteTest", msuite.getSubdir_TextParamVals(mSuite.runs[runI], mSuite.modelVariants, expIndexTuple, runI)))
def test_generateRuns_product(self): mSuite = ModelSuite(os.path.join("output","genSuiteTest"), templateMRun = self.mRun1) #TODO: since currently mVariants implemented as a dict, the order # these are added doesn't currently matter. mSuite.addVariant("depthVary", self.stgI1) mSuite.addVariant("ZVary", self.stgI2) mSuite.addVariant("scaleTests", self.jobI1) mSuite.generateRuns(msuite.product) self.assertEqual(len(mSuite.runs), len(self.yRange) * len(self.zRange) * len(self.procRange)) # These are indices into lists above, created manually for testing # TODO: below is an experimentally-determined order - bad! expIndices = list(msuite.product( range(len(self.procRange)), range(len(self.yRange)), range(len(self.zRange)) )) for ii, expIndexTuple in enumerate(expIndices): pIndex, yIndex, zIndex = expIndexTuple self.assertEqual(mSuite.runs[ii].paramOverrides['minY'], self.yRange[yIndex]) self.assertEqual(mSuite.runs[ii].paramOverrides['maxZ'], self.zRange[zIndex]) self.assertEqual(mSuite.runs[ii].jobParams['nproc'], self.procRange[pIndex]) self.assertEqual(mSuite.runs[ii].outputPath, os.path.join("output", "genSuiteTest", mSuite.subOutputPathGenFunc(mSuite.runs[ii], mSuite.modelVariants, expIndexTuple, ii))) # Now test regenerating produces correct length again mSuite.generateRuns() self.assertEqual(len(mSuite.runs), len(self.yRange) * len(self.zRange) * len(self.procRange))
def test_generateRuns_izip(self): mSuite = ModelSuite(os.path.join("output","genSuiteTest"), templateMRun = self.mRun1) mSuite.addVariant("depthVary", self.stgI1) mSuite.addVariant("ZVary", self.stgI2) mSuite.generateRuns(itertools.izip) self.assertEqual(len(mSuite.runs), min(len(self.yRange), len(self.zRange))) # These are indices into lists above, created manually for testing expIndices = [(0,0),(1,1)] for ii, expIndexTuple in enumerate(expIndices): yIndex, zIndex = expIndexTuple self.assertEqual(mSuite.runs[ii].paramOverrides['minY'], self.yRange[yIndex]) self.assertEqual(mSuite.runs[ii].paramOverrides['maxZ'], self.zRange[zIndex]) self.assertEqual(mSuite.runs[ii].outputPath, os.path.join("output", "genSuiteTest", mSuite.subOutputPathGenFunc(mSuite.runs[ii], mSuite.modelVariants, expIndexTuple, ii)))
import credo_rayTaySuite elRes=32 stoptime=2500.0 mRun = ModelRun("RayTay-basic", "RayleighTaylorBenchmark.xml", simParams=SimParams(stoptime=stoptime, nsteps=-1, dumpevery=3)) mRun.paramOverrides={"elementResI":elRes, "elementResJ":elRes} mSuite = ModelSuite("output/raytay-suite-simple-%dx%d-%d_t" %\ (elRes, elRes, stoptime), templateMRun=mRun) ampRange = [0.02 + x * 0.02 for x in range(10)] mSuite.addVariant("initPerturbation", StgXMLVariant("components.lightLayerShape.amplitude", ampRange)) mSuite.subOutputPathGenFunc = msuite.getSubdir_RunIndexAndText mSuite.generateRuns() if __name__ == "__main__": postProcFromExisting = False if postProcFromExisting == False: jobRunner = credo.jobrunner.defaultRunner() mResults = jobRunner.runSuite(mSuite) else: mResults = mSuite.readResultsFromPath(mSuite.runs[0].basePath) credo_rayTaySuite.reportResults(mSuite, mResults) import credo.reporting.reportLab as rlRep rlRep.makeSuiteReport(mSuite, os.path.join(mSuite.outputPathBase, "%s-report.pdf" %\ "RayTay_Suite"), imgPerRow=5)