def StpSzTest(params, out_pre, spec, AccuracyBoost, ParamRange, paramName, lmax, verbose=True): #StpSzs=[scale*float(stepSizes[paramName]) for scale in ScaleSet] #data=np.zeros((NumStep+1,6)) #Return list containing "StpSz_x": [parval,TT,EE,BB,TE,kk] that can be plotted #result={} #Record fiducial value #parfidval=params[paramName] for paramVal in ParamRange: if verbose: print paramName, paramVal params[paramName] = paramVal if paramName == 'theta100': params['H0'] = getHubbleCosmology(params['theta100'], params) CLS = getPowerCamb(params, spec, AccuracyBoost=AccuracyBoost) #Name gives value of the parameter and lmax np.savetxt("output/StepSize/" + paramName + "_" + str(paramVal) + "_" + out_pre + spec + "_lmax_" + str(int(lmax)) + ".csv", CLS, delimiter=",") print "--------------Done with ", paramName
def StpSzTest(params,out_pre,spec,AccuracyBoost,ParamRange,paramName,lmax,verbose=True): #StpSzs=[scale*float(stepSizes[paramName]) for scale in ScaleSet] #data=np.zeros((NumStep+1,6)) #Return list containing "StpSz_x": [parval,TT,EE,BB,TE,kk] that can be plotted #result={} #Record fiducial value #parfidval=params[paramName] for paramVal in ParamRange: if verbose: print paramName,paramVal params[paramName]=paramVal if paramName=='theta100': params['H0'] = getHubbleCosmology(params['theta100'],params) CLS = getPowerCamb(params,spec,AccuracyBoost=AccuracyBoost) #Name gives value of the parameter and lmax np.savetxt("output/StepSize/"+paramName+"_"+str(paramVal)+"_"+out_pre+spec+"_lmax_"+str(int(lmax))+".csv",CLS,delimiter=",") print "--------------Done with ",paramName
parser.add_argument("--AccuracyBoost", type=bool) parser.add_argument("--testParam", type=str) parser.add_argument("--testVal", type=float) parser.add_argument("--output", type=str) args = parser.parse_args() #Get fiducial iniFile = os.environ[ 'FISHER_DIR'] + '/input/cluster-submit/oldtestStepSize_input.ini' Config = ConfigParser.SafeConfigParser() Config.optionxform = str Config.read(iniFile) fparams = {} for (key, val) in Config.items('camb'): if ',' in val: param, step = val.split(',') fparams[key] = float(param) else: fparams[key] = float(val) if not ('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'], fparams) # Assigning testVal to testParam fparams[args.testParam] = args.testVal if args.testParam == 'theta100': fparams['H0'] = getHubbleCosmology(fparams['theta100'], fparams) print "Testing ", args.testParam, "=", args.testVal CLS = getPowerCamb(fparams, args.spec, AccuracyBoost=args.AccuracyBoost) np.savetxt(args.output, CLS, delimiter=",")
fparams[key] = float(param) else: fparams[key] = float(val) if not ('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'], fparams) # Assigning testVal(stepsize) to testParam spec = args.spec AccuracyBoost = args.AccuracyBoost paramName = args.testParam h = args.testVal print "Calculating forward difference for ", paramName pparams = fparams.copy() pparams[paramName] = fparams[paramName] + 0.5 * h if paramName == 'theta100': pparams['H0'] = getHubbleCosmology(theta=pparams['theta100'], params=pparams) pCls = getPowerCamb(pparams, spec, AccuracyBoost=AccuracyBoost) print "Calculating backward difference for ", paramName mparams = fparams.copy() mparams[paramName] = fparams[paramName] - 0.5 * h if paramName == 'theta100': mparams['H0'] = getHubbleCosmology(theta=mparams['theta100'], params=mparams) mCls = getPowerCamb(mparams, spec, AccuracyBoost=AccuracyBoost) dCls = (pCls - mCls) / h np.savetxt(args.output, dCls, delimiter=",")
for (key, val) in Config.items('camb'): if ',' in val: param, step = val.split(',') fparams[key] = float(param) else: fparams[key] = float(val) if not ('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'], fparams) # Assigning testVal to testParam fparams[args.testParam] = args.testVal if args.testParam == 'theta100': fparams['H0'] = getHubbleCosmology(fparams['theta100'], fparams) # Fid or deriv if args.paramName == '0': print "Testing ", args.testParam, "=", args.testVal CLS = getPowerCamb(fparams, args.spec, AccuracyBoost=args.AccuracyBoost) else: h = args.stepSize pparams = fparams.copy() pparams[args.paramName] = fparams[args.paramName] + 0.5 * h if args.paramName == 'theta100': pparams['H0'] = getHubbleCosmology(theta=pparams['theta100'], params=pparams) pCls = getPowerCamb(pparams, args.spec, AccuracyBoost=args.AccuracyBoost) mparams = fparams.copy() mparams[args.paramName] = fparams[args.paramName] - 0.5 * h if args.paramName == 'theta100': mparams['H0'] = getHubbleCosmology(theta=mparams['theta100'], params=mparams) mCls = getPowerCamb(mparams, args.spec, AccuracyBoost=args.AccuracyBoost)
if ',' in val: param, step = val.split(',') fparams[key] = float(param) else: fparams[key] = float(val) if not('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'],fparams) # Assigning testVal(stepsize) to testParam spec = args.spec AccuracyBoost = args.AccuracyBoost paramName = args.testParam h = args.testVal print "Calculating forward difference for ", paramName pparams = fparams.copy() pparams[paramName] = fparams[paramName] + 0.5*h if paramName=='theta100': pparams['H0'] = getHubbleCosmology(theta=pparams['theta100'],params=pparams) pCls = getPowerCamb(pparams,spec,AccuracyBoost=AccuracyBoost) print "Calculating backward difference for ", paramName mparams = fparams.copy() mparams[paramName] = fparams[paramName] - 0.5*h if paramName=='theta100': mparams['H0'] = getHubbleCosmology(theta=mparams['theta100'],params=mparams) mCls = getPowerCamb(mparams,spec,AccuracyBoost=AccuracyBoost) dCls = (pCls-mCls)/h np.savetxt(args.output,dCls,delimiter=",")
parser.add_argument("--AccuracyBoost",type=bool) parser.add_argument("--testParam",type=str) parser.add_argument("--testVal",type=float) parser.add_argument("--output",type=str) args = parser.parse_args() #Get fiducial iniFile = os.environ['FISHER_DIR']+'/input/cluster-submit/oldtestStepSize_input.ini' Config = ConfigParser.SafeConfigParser() Config.optionxform = str Config.read(iniFile) fparams = {} for (key, val) in Config.items('camb'): if ',' in val: param, step = val.split(',') fparams[key] = float(param) else: fparams[key] = float(val) if not('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'],fparams) # Assigning testVal to testParam fparams[args.testParam]=args.testVal if args.testParam=='theta100': fparams['H0'] = getHubbleCosmology(fparams['theta100'],fparams) print "Testing ",args.testParam,"=",args.testVal CLS = getPowerCamb(fparams,args.spec,AccuracyBoost=args.AccuracyBoost) np.savetxt(args.output,CLS,delimiter=",")
if ',' in val: param, step = val.split(',') fparams[key] = float(param) else: fparams[key] = float(val) fidscript += key+' = '+val+'\n' if not('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'],fparams) try: derivForm = Config.getint('general','derivForm') except: derivForm = 0 # Fid or deriv if paramName == '0': CLS = getPowerCamb(fparams,spec,AccuracyBoost=AccuracyBoost) output = args.output+'_fCls.csv' # Save fid + stepsize fidscript ='[camb]\n'+fidscript filename = args.output+'_fid.csv' with open(filename,'w') as tempFile: tempFile.write(fidscript) else: if derivForm == 0: h = stepSize pparams = fparams.copy() pparams[paramName] = fparams[paramName] + 0.5*h if paramName=='theta100': pparams['H0'] = getHubbleCosmology(theta=pparams['theta100'],params=pparams) pCls = getPowerCamb(pparams,spec,AccuracyBoost=AccuracyBoost)
for (key, val) in Config.items('camb'): if ',' in val: param, step = val.split(',') fparams[key] = float(param) else: fparams[key] = float(val) if not('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'],fparams) # Assigning testVal to testParam fparams[args.testParam]=args.testVal if args.testParam=='theta100': fparams['H0'] = getHubbleCosmology(fparams['theta100'],fparams) # Fid or deriv if args.paramName == '0': print "Testing ",args.testParam,"=",args.testVal CLS = getPowerCamb(fparams,args.spec,AccuracyBoost=args.AccuracyBoost) else: h = args.stepSize pparams = fparams.copy() pparams[args.paramName] = fparams[args.paramName] + 0.5*h if args.paramName=='theta100': pparams['H0'] = getHubbleCosmology(theta=pparams['theta100'],params=pparams) pCls = getPowerCamb(pparams,args.spec,AccuracyBoost=args.AccuracyBoost) mparams = fparams.copy() mparams[args.paramName] = fparams[args.paramName] - 0.5*h if args.paramName=='theta100': mparams['H0'] = getHubbleCosmology(theta=mparams['theta100'],params=mparams) mCls = getPowerCamb(mparams,args.spec,AccuracyBoost=args.AccuracyBoost) CLS = (pCls-mCls)/h print args.output
def main(argv): # Read Config iniFile = "input/testmnu_makeDerivs.ini" Config = ConfigParser.SafeConfigParser() Config.optionxform = str Config.read(iniFile) spec = Config.get("general", "spec") out_pre = Config.get("general", "output_prefix") AccuracyBoost = Config.getboolean("general", "AccuracyBoost") paramList = [] fparams = {} stepSizes = {} for (key, val) in Config.items("camb"): if "," in val: param, step = val.split(",") paramList.append(key) fparams[key] = float(param) stepSizes[key] = float(step) else: fparams[key] = float(val) # Save starting fiducials fidparams = fparams.copy() print fidparams # testList = Config.get('testmnu','testList').split(',') # spread = Config.getfloat('testmnu','spread') # testRange = np.arange(1.0-spread/2,1.0+spread/2,spread/6) testRange = {} testList = [] for (key, val) in Config.items("testmnu"): pmin, pmax, numstep = [float(x) for x in val.split(",")] testList.append(key) pstep = (pmax - pmin) / numstep testRange[key] = np.arange(pmin, pmax, pstep) # round the value to about 5 significant digits decimal = int(-(np.ceil(np.log10(pmin)) - 5)) testRange[key] = [round(x, decimal) for x in testRange[key]] print "testRange: ", testRange # avoid recalculation with central fiducial set # fidDone = 1 prefix = "" for testParam in testList: for testVal in testRange[testParam]: prefix = testParam + "_" + str(testVal) print "Testing ", testParam, " = ", testVal # Reset to starting fid, then multiply a fraction fparams = fidparams.copy() fparams[testParam] = testVal # Save fiducials print "Calculating and saving fiducial cosmology..." if not ("H0" in fparams): fparams["H0"] = getHubbleCosmology(theta=fparams["theta100"], params=fparams) fidCls = getPowerCamb(fparams, spec, AccuracyBoost=AccuracyBoost) np.savetxt("output/" + out_pre + spec + "_" + prefix + "_fCls.csv", fidCls, delimiter=",") # Calculate and save derivatives for paramName in paramList: h = stepSizes[paramName] print "Calculating forward difference for ", paramName pparams = fparams.copy() pparams[paramName] = fparams[paramName] + 0.5 * h if paramName == "theta100": pparams["H0"] = getHubbleCosmology(theta=pparams["theta100"], params=pparams) pCls = getPowerCamb(pparams, spec, AccuracyBoost=AccuracyBoost) print "Calculating backward difference for ", paramName mparams = fparams.copy() mparams[paramName] = fparams[paramName] - 0.5 * h if paramName == "theta100": mparams["H0"] = getHubbleCosmology(theta=mparams["theta100"], params=mparams) mCls = getPowerCamb(mparams, spec, AccuracyBoost=AccuracyBoost) dCls = (pCls - mCls) / h np.savetxt( "output/" + out_pre + spec + "_" + prefix + "_dCls_" + paramName + ".csv", dCls, delimiter="," )
if ',' in val: param, step = val.split(',') fparams[key] = float(param) else: fparams[key] = float(val) fidscript += key + ' = ' + val + '\n' if not ('H0' in fparams): fparams['H0'] = getHubbleCosmology(fparams['theta100'], fparams) try: derivForm = Config.getint('general', 'derivForm') except: derivForm = 0 # Fid or deriv if paramName == '0': CLS = getPowerCamb(fparams, spec, AccuracyBoost=AccuracyBoost) output = args.output + '_fCls.csv' # Save fid + stepsize fidscript = '[camb]\n' + fidscript filename = args.output + '_fid.csv' with open(filename, 'w') as tempFile: tempFile.write(fidscript) else: if derivForm == 0: h = stepSize pparams = fparams.copy() pparams[paramName] = fparams[paramName] + 0.5 * h if paramName == 'theta100': pparams['H0'] = getHubbleCosmology(theta=pparams['theta100'], params=pparams)