def initTriCycle(IGEElement,doPickle=True,samples=10): fitHist=param.fitHistory() lumInterval=runLumCycle(maxIter=5) curParam=param.param() curParam['lum']=lumInterval['suggestValue'] intervals={'luminterval':lumInterval['interval'], 'vphinterval':initialize.getVphBounds(), #make sure that no other metal really shoots up 'igeinterval':initialize.getElementBounds(IGEElement,curParam.comp)} #pdb.set_trace() lumRange=np.linspace(intervals['luminterval'][0],intervals['luminterval'][1],num=samples) vphRange=np.linspace(intervals['vphinterval'][0],intervals['vphinterval'][1],num=samples) IGERange=np.linspace(intervals['igeinterval'][0],intervals['igeinterval'][1],num=samples) lumMG,vphMG,IGEMG,curParamMG=launcherSteps.launchTriCycle(lumRange,vphRange,IGERange,IGEElement,initParam=curParam) if doPickle: pickle.dump(lumMG,file('lumMG0.pkl','w')) pickle.dump(vphMG,file('vphMG0.pkl','w')) pickle.dump(IGEMG,file('igeMG0.pkl','w')) evalTriCycle(lumMG,vphMG,IGEMG,curParamMG,curParam,intervals,fitHist,IGEElement,mode='init') return fitHist,curParam,intervals
def runLumCycle(doPickle=True,maxIter=None,meritThresh=0.01,samples=10,fitHist=None): if fitHist==None: fitHist=param.fitHistory() lumModelGrid,interval=initLum() #fitHist.addHistItem([interval],[lumModelGrid],[None]) #print interval i=1 while True: runDirs,params=launcherSteps.launchLum(np.linspace(interval['interval'][0],interval['interval'][1],samples)) lumModelGrid=read.modelGrid(runDirs,params) basePath=os.path.split(runDirs[0])[0] if doPickle: pickle.dump(lumModelGrid,file(os.path.join(basePath,'lum%d.pkl'%i),'w')) i+=1 interval=dalekSteps.getNextLumInterval(lumModelGrid) #fitHist.addHistItem([interval],[lumModelGrid],[None]) print "Current interval:",interval if maxIter!=None: if i>maxIter: break #fitHist.write2pickle('lumCycle.pkl') if interval['merit']<meritThresh: break return interval