def main(): settingsf = param_file.split('.')[-2] expt = countModel(modelFamily, nlaws, settingsf, [dataset], floatNoise, doRedshiftSlices=doRedshiftSlices) # Set up MPI world = MPI.COMM_WORLD rank = world.rank size = world.size master = rank == 0 if master: set_module = importlib.import_module(settingsf) globals().update(set_module.__dict__) note = 'MPI processors checked in: rank/size = (%i/%i)' % (rank, size) print note if master: try: os.mkdir(outdir) # Fix permissions os.chmod(outdir, 0755) except OSError: pass logf = os.path.join(outdir, logfile) if master and os.path.exists(logf): os.remove(logf) log = open(logf, 'w') remark(log, note) # Wait here after check-in... world.Barrier() if master: print 'All %i processors checked in...' % size # Broadcast global settings variables if master: set_dict = set_module.__dict__ else: set_dict = None set_dict = world.bcast(set_dict, root=0) if not master: globals().update(set_dict) #print globals() # Wait here after broadcast... world.Barrier() if master: print 'All %i processors received OK...\n' % size # Write settings variables to file if master: variablesf = os.path.join(outdir, variablesfile) dump_variable_values(set_module, variablesf, verbose=False) startTime = time.strftime('%X %x %Z') shutil.copy(param_file, os.path.join(outdir, 'bayestack_settings.py')) if doRedshiftSlices: for datafile in datafiles: shutil.copy(datafile, outdir) else: shutil.copy(datafile, outdir) shutil.copy('bayestackClasses.py', outdir) shutil.copy('bayestack.py', outdir) shutil.copy('lumfuncUtils.py', outdir) notes=['Time now is %s' % startTime,\ 'Settings file: %s' % param_file,\ 'Data file: %s' % datafile] remarks(log, notes) # This is to allow import of settings from outdir # i.e. from outdir import * [or whatever] init_file = '__init__.py' initf = os.path.join(outdir, init_file) touch(initf) notes=['Bins taken from %s' % datafile,\ '# Bin occupancies [i uJy uJy field^-1]:'] remarks(log, notes) if doRedshiftSlices: print 'Multi data' for df in expt.survey.datafiles[0]: print df for ibin in xrange(expt.fnbins[df]): try: line = '%i %f %f %f' % (ibin + 1, expt.fbins[df][ibin], expt.fbins[df][ibin + 1], expt.fdata[df][ibin]) except IndexError: print "Probably your binstyle doesn't match the datafile bins" sys.exit(0) remark(log, line) else: for ibin in xrange(expt.nbins): try: line = '%i %f %f %f' % (ibin + 1, expt.bins[ibin], expt.bins[ibin + 1], expt.data[ibin]) except IndexError: print "Probably your binstyle doesn't match the datafile bins" sys.exit(0) remark(log, line) # Run MultiNest if master: t0 = time.time() print outdir try: pymultinest.run(expt.loglike,expt.logprior,expt.nparams,\ resume=RESUME,verbose=True,\ multimodal=multimodal,max_modes=max_modes,write_output=True,\ n_live_points=n_live_points,\ evidence_tolerance=evidence_tolerance,\ # mode_tolerance=-1e90 bugfix for earlier versions # of PyMultiNest mode_tolerance=-1e90,seed=SEED_SAMP,max_iter=max_iter,\ importance_nested_sampling=do_INS,\ sampling_efficiency=sampling_efficiency,\ outputfiles_basename=os.path.join(outdir,outstem),\ # NB MPI is already init'ed by mpi4py (crashes otherwise) init_MPI=False) except: return 1 if master: stopTime = time.strftime('%X %x %Z') t1 = time.time() dt = t1 - t0 # Touch the output dir so Dropbox picks it up touch(outdir) notes=['Time then was %s' % startTime,\ 'Time now is %s' % stopTime,\ 'Execution took %6.4f sec (~ %i hours %i min) with %i cores' % \ (dt,divmod(dt,3600)[0],int(divmod(dt,3600)[1]/60),size),\ 'Arguments: %s' % ' '.join(sys.argv),\ 'Model used: %s'%modelFamily,\ 'INS = %s' % do_INS,\ 'nlive = %i' % n_live_points,\ 'Run comment: %s' % comment,\ 'Now execute:',\ '\n./plot.py %s' % outdir,\ 'and\n./reconstruct.py %s' % outdir] remarks(log, notes) log.close() print 'Parameters were:', expt.parameters # Copy the stats file so it's legible on my iPhone, Google, email etc. stats_dotdat = '%(od)s/%(os)sstats.dat' % {'od': outdir, 'os': outstem} stats_dottxt = '%(od)s/%(os)sstats.txt' % {'od': outdir, 'os': outstem} shutil.copy(stats_dotdat, stats_dottxt) # Now make all the files world readable globlist = glob.glob(os.path.join(outdir, '*')) [os.chmod(f, 0644) for f in globlist]
def main(): """ """ print 'Settings file is %s' % setf # Import the settings variables set_module=importlib.import_module(setf) globals().update(set_module.__dict__) expt=countModel(modelFamily,nlaws,setf,[dataset],floatNoise) recon_expt=countModel(modelFamily,nlaws,setf,[dataset],floatNoise) #print expt.data #print expt.bins # Get MAP parameters print '\n'*5 print len(expt.parameters) ncols = len(expt.parameters) summf=os.path.join(outdir,'1-summary.txt') summary=numpy.genfromtxt(summf)[-1,:] drawmap=summary[-(ncols+2):-2] ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap=ana.get_best_fit()['parameters'] if dataset=='sdss': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf)==20: num = dataf[-5] print num else: num = dataf[-6:-4] d=numpy.genfromtxt('%s/%s'%(outdir,datafiles[0][4:])) print datafiles[0][4:] elif dataset=='cosmos': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf)==24: num = dataf[-5] print num else: num = dataf[-6:-4] d=numpy.genfromtxt('%s/%s'%(outdir,datafiles[0][8:])) print datafiles[0][8:] elif 'sim' in dataset: d=numpy.genfromtxt(os.path.join(outdir,'sim.txt')) #bins2 = numpy.arange(21.4,29.2,0.4) bins2 = numpy.arange(18.0,29.2,0.4) bins3 = numpy.arange(18.,29.2,0.1) print len(expt.parameters) print 'this is 1st num ', num #sys.exit() params = drawmap# [0] #for i in drawmap: # params.append(i) print params print expt.parameters #novak 2017 L_n =[21.77,22.15,22.46,22.77,23.09,23.34] rho_n =[-2.85,-2.88,-3.12,-3.55,-4.05,-4.63] L_ner_u =[0.23,0.18,0.19, 0.2, 0.21, 0.28] L_ner_d =[1.1, 0.15, 0.14, 0.12, 0.12, 0.048] rho_ner=[0.09, 0.03,0.0355,0.059,0.1,0.234] mcalpine=openlit('mcalpine-2013-tot.txt') padovani=openlit('Padovani_2015_RL_AGN')[1:] mcalpine_panels=[0,1,2,3,4,4,5,6,6] padovani_panels=[0,1,0,2,2,3,3,5,6,6] #print padovani print padovani[0][:,0],padovani[0][:,1],padovani[0][:,2],padovani[0][:,3] #sys.exit() #novak 2018 L_n2 =[[21.77,22.24,22.68,23.16,23.69,24.34, 24.74,25.56],\ [22.30,22.61,22.96,23.38,23.80,24.10, 24.55,25.14],\ [22.61,22.86,23.14,23.45,23.82,24.14, 24.40,24.71],\ [22.85,23.16,23.69,24.24,24.80,25.31, 25.96,26.69],\ [23.10,23.38,23.86,24.36,24.86,25.35, 25.94,26.36],\ [23.32,23.57,23.94,24.32,24.67,25.06, 25.47,25.96],\ [23.54,23.75,24.13,24.45,24.90,25.27, 25.74,26.10],\ [23.73,23.99,24.57,25.10,25.68,26.18, 26.83,27.51],\ [24.01,24.26,24.76,25.26,25.91,26.19, 27.45],\ [24.30,24.56,24.80,25.13,25.37,25.80, 25.97,26.49]] L_ner_u2 =[[0.23,0.27, 0.34, 0.37, 0.35, 0.21, 0.31, 0.03],\ [0.11,0.20, 0.26, 0.25, 0.24, 0.35, 0.31, 0.15],\ [0.08,0.15, 0.20, 0.22, 0.17, 0.18, 0.24, 0.28],\ [0.072,0.33,0.38, 0.40, 0.48, 0.42, 0.41, 0.28],\ [0.080,0.30,0.32, 0.32, 0.32, 0.33, 0.24, 0.34],\ [0.068,0.22,0.24, 0.25, 0.29, 0.30, 0.28, 0.21],\ [0.067,0.22,0.21, 0.26, 0.18, 0.17,0.075, 0.11],\ [0.093,0.36,0.31, 0.30, 0.25, 0.28, 0.16,0.028],\ [0.076,0.34,0.36, 0.38, 0.24, 0.47, 0.27],\ [0.097,0.14,0.20, 0.16, 0.23, 0.092,0.22,0.026]] L_ner_d2 =[[1.0, 0.24, 0.17, 0.14, 0.16, 0.30, 0.20, 0.50],\ [0.29, 0.21, 0.15, 0.16, 0.17, 0.06, 0.099,0.29],\ [0.24, 0.17, 0.12, 0.10, 0.15, 0.15, 0.08,0.074],\ [0.16, 0.24, 0.19, 0.17, 0.15, 0.09, 0.16, 0.33],\ [0.30, 0.19, 0.18, 0.18, 0.18, 0.17, 0.26, 0.18],\ [0.14, 0.18, 0.15, 0.14, 0.10, 0.095,0.11, 0.21],\ [0.19, 0.14, 0.15, 0.11, 0.19, 0.19, 0.29, 0.28],\ [0.40, 0.17, 0.21, 0.23, 0.27, 0.25, 0.37, 0.53],\ [0.20, 0.17, 0.16, 0.14, 0.27, 0.042, 0.27],\ [0.22, 0.16, 0.10, 0.14,0.072, 0.21, 0.08, 0.30]] rho_n2 =[[-2.84,-2.90,-3.34,-4.00,-4.92,-4.92, -5.22,-5.07],\ [-2.95,-3.17,-3.46,-4.24,-4.76,-5.41, -5.23,-5.44],\ [-2.95,-3.11,-3.44,-3.81,-4.37,-4.48, -4.90,-5.14],\ [-2.99,-3.24,-3.89,-4.54,-5.27,-5.33, -5.69,-5.89],\ [-3.32,-3.51,-4.06,-4.74,-5.28,-5.43, -6.08,-5.70],\ [-3.29,-3.54,-4.02,-4.45,-5.11,-5.56, -5.37,-6.07],\ [-3.43,-3.61,-4.19,-4.56,-5.09,-5.34, -5.70,-5.75],\ [-3.88,-3.98,-4.64,-5.33,-5.73,-6.27, -6.14,-6.77],\ [-3.85,-4.28,-5.05,-5.60,-5.68,-6.44, -6.59],\ [-4.43,-4.91,-5.46,-5.58,-5.89,-6.23, -6.26,-6.91]] rho_ner_u2=[[0.08,0.024,0.038,0.083,0.28,0.28 , 0.45, 0.34],\ [0.048,0.027,0.036,0.089,0.17,0.45, 0.34, 0.45],\ [0.062,0.024,0.032,0.048,0.096, 0.11,0.18,0.25],\ [0.042,0.018,0.035,0.073,0.180, 0.20,0.34,0.45],\ [0.045,0.019,0.033,0.072,0.15, 0.17,0.45,0.25],\ [0.040,0.022,0.033,0.055,0.13, 0.22,0.17,0.45],\ [0.061,0.020,0.035,0.055,0.099, 0.14,0.22,0.25],\ [0.044,0.022,0.044,0.11, 0.16, 0.34, 0.28,0.76],\ [0.048,0.025,0.058,0.13, 0.24, 0.34, 0.45],\ [0.084,0.058,0.11 ,0.24, 0.20, 0.28, 0.28,0.76]] rho_ner_d2=[[0.07,0.023,0.035,0.070,0.25,0.25 , 0.37, 0.30],\ [0.043,0.026,0.033,0.074,0.16,0.37, 0.30, 0.37],\ [0.054,0.023,0.030,0.043,0.079,0.086,0.17,0.22],\ [0.038,0.017,0.032,0.062,0.17,0.19, 0.30, 0.37],\ [0.041,0.019,0.031,0.062,0.11,0.16, 0.37, 0.22],\ [0.037,0.021,0.031,0.049,0.098,0.20,0.16, 0.37],\ [0.054,0.019,0.032,0.049,0.081,0.11,0.20, 0.22],\ [0.040,0.021,0.040,0.085,0.15, 0.30, 0.25,0.52],\ [0.043,0.024,0.051,0.10, 0.15, 0.30, 0.37],\ [0.070,0.051,0.087,0.16,0.19, 0.25, 0.25, 0.52]] fig = plt.figure() pre_chain='12' #pre_chain='01' chains=['12a','12b','12c','12d','12e','12f','12g','12h','12i']#chains_191062 chains=['22a','22b','22c','22d','22e','22f','22g','22h','22i'] chains=['32a','32b','32c','32d','32e','32f','32g','32h','32i'] chains=['42a','42b','42c','42d','42e','42f','42g','42h','42i'] chains=['62a_2','62b_2','62c_2','62d_2','62e_2','62f_2','62g_2','62h_2','62i_2'] #chains_191062 chains=['01a_3','01b_3','01c_3','01d_3','01e','01f_3','01g_3','01h_3','01i_3']#chains_191101 chains=['01a_4','01b_4','01c_4','01d_4','01e_4','01f_4','01g_4','01h_4','01i_4_2']#chains_191101 7x7 grid chains=['02a_4','02b_4','02c_4','02d_4','02e_4','02f_4','02g_5','02h_4','02i_4']#chains_191101 7x7 grid lognorm #chains=['01a_5','01b_5','01c_5','01d_5','01e_5','01f_5','01g_5','01h_5','01i_5']#chains_191101 3x3 grid scaled #chains=['01a_6','01b_6_3','01c_6','01d_6_2','01e_6_2','01f_6','01g_6_2','01h_6_2','01i_6_2']#chains_191101 11x11 grid #chains=['01a','01b','01c','01d','01e','01f','01g','01h','01i'] #chains_1912 #includeing maskregion chains=['01a_2_1','01b_2_1','01c_2_1','01d_2','01e_2','01f_2','01g_2','01h_2','01i_2'] #1912 exclding peterinclde match #chains=['01a_2','01b_2','01c_2_1','01d_2','01e_2','01f_2','01g_2','01h_2','01i_2'] #chains_1912 excluding peter #chains=['01a_3','01b_3','01c_3','01d_3','01e_3','01f_3_1','01g','01h','01i'] #chains_1912 including peter #chains=['01a_4_1','01b_4_1','01c_4','01d_4','01e_4','01f_4_1','01g_4','01h_4','01i_4'] #chains_1912 no mass selection chains=['02a','02b_2','02c','02d','02e','02f','02g','02h','02i'] #lgnorm #chains_1912 excluding peter chains=['01a_1','01b','01c','01d','01e','01f_1','01g','01h','01i'] #chains_2001 DR4 chains4=['01a_4','01b_2','01c_2','01d_2','01e_2','01f_2','01g','01h_2','01i_2'] #chains_2001 DR4 remove phi2 #chains=['01a_9','01b_9','01c_9','01d_9','01e_9','01f_9','01g_9','01h_9','01i_9','01j_9'] #chains_2001 DR4 dpl_dpl no mass selection chains=['01a_7','01b_7','01c_7','01d_7','01e_7','01f_7','01g_7','01h_7','01i_7','01j_7'] #chains_2001 DR4 dpl_dpl chains4=['01a_6','01b_6','01c_6','01d_6','01e_6_3','01f_6','01g_6','01h_6','01i_6','01j_6'] #chains_2001 DR4 dpl_dpl Lmin=15 #chains=['01a_6_3','01b_6_3','01c_6_3','01d_6_2','01e_6_2','01f_6_2','01g_6_2','01h_6_3','01i_6_3','01j_6_3'] #chains_2001 DR4 dpl_dpl Lmin=21 chains2=['02a_z_6x','02b_z_6x','02c_z_6x','02d_z_6x','02e_z_6x','02f_z_6x','02g_z_6x','02h_z_6x','02i_z_6x','02j_z_6x']#Novak individual model chains2=['02a_z_6x_1','02a_z_6x_2','02b_z_7x','02c_z_7x','02d_z_7x','02e_z_7x','02f_z_7x','02g_z_7x','02h_z_7x','02i_z_7x','02j_z_7x']#Novak individual model newz #chains=['02a_4','02b_3','02c_4','02d_4','02e_4','02f_4','02g_4','02h_4','02i_4','02j_3'] ##chains_2001 DR4 logn_dpl Lmin=19 #chains=['01a_9_2','01b_9_2','01c_9_2','01d_9_2','01e_9_2_1','01f_9_2','01g_9_2_2','01h_9_2','01i_9_2_1','01j_9_2_1'] #chains_2001 DR4 dpl_dpl no mass selection fixed zmean #chains=['01a_6_1','01a_8_2','01b_6_3','01c_6_3','01d_6_2','01e_6_2','01f_6_2','01g_6_2','01h_6_3','01i_6_3','01j_6_3'] #chains_2001 DR4 dpl_dpl Lmin=19 newz #chains=['02a_4','02b_4','02c_4','02d_4','02e_4','02f_4','02g_4','02h_4','02i_4','02j_3'] ##chains_2001 DR4 logn_dpl Lmin=21 newz #chains=['02a_z_6x','02b_z_7x','02c_z_7x','02d_z_7x','02e_z_7x','02f_z_7x','02g_z_7x','02h_z_7x','02i_z_7x','02j_z_7x']#Novak individual model newz chains=['01a_1','01b_1','01c_1','01d_1','01e_1','01f_1','01g_1','01h_1','01i_1','01j_1'] #95% mass sample chains=['02a_z_9x','02b_z_9x','02c_z_9x','02d_z_9x','02e_z_9x','02f_z_9x','02g_z_9x','02h_z_9x','02i_z_9x','02j_z_9x']#95 mass limit chains=['01a_2','01b_2','01c_2','01d_2','01e_2','01f_2','01g_2','01h_2','01i_2','01j_2'] #50% mass sample chains=['02a_z_9x_1','02b_z_9x_1','02c_z_9x_1','02d_z_9x_1','02e_z_9x_1','02f_z_9x_1','02g_z_9x_1','02h_z_9x_1','02i_z_9x_1','02j_z_9x_1']#50 mass limi1 chains2=['01a_5','01b_5','01c_5','01d_5','01e_5','01f_5','01g_5','01h_5','01i_5','01j_5'] #stellar mass>10.2 dpl chains2=['02a_5','02b_5','02c_5','02d_5','02e_5','02f_5','02g_5','02h_5','02i_5','02j_5'] #stellar mass>10.2 dpl chains=['02a_z_7x','02b_z_7x','02c_z_7x','02d_z_7x','02e_z_7x','02f_z_7x','02g_z_7x','02h_z_7x','02i_z_7x','02j_z_7x'] #stellar mass>10.2 chains=['01a_8','01b_8','01c_8','01d_8','01e_8','01f_8','01g_8','01h_8','01i_8','01j'] #stellar mass<10. dpl chains4=['02a_3','02b_3','02c_3','02d_3','02e_3','02f_3','02g_3','02h_3','02i_3','02j_3'] #stellar mass<10. logn chains3=['02a_z_5x','02b_z_5x','02c_z_5x','02d_z_5x','02e_z_5x','02f_z_5x','02g_z_5x','02h_z_5x','02i_z_5x','02j_z_5x']#stellar mass limit mass<10 #chains3=['02a_z_5f','02b_z_5f','02c_z_5f','02d_z_5f','02e_z_5f','02f_z_5f','02g_z_5f','02h_z_5f','02i_z_5f','02j_z_8x']#stellar mass limit mass<10 #chains=['01a','01b','01c','01d','01e','01f','01g','01h','01i','01j'] #dpl #chains_2001 DR4 newz new_area chains=['02a','02b','02c','02d','02e','02f','02g','02h','02i','02j'] #lgnorm #chains_2001 DR4 newz new_area chains=['02a_z_8x','02b_z_8x','02c_z_8x','02d_z_8x','02e_z_8x','02f_z_8x','02g_z_8x','02h_z_8x','02i_z_8x','02j_z_8x']#fixed model newz area chains=['02a_z_8x_6','02b_z_8x_6','02c_z_8x_6','02d_z_8x_6','02e_z_8x_6','02f_z_8x_6','02g_z_8x_6','02h_z_8x_6','02i_z_8x_6','02j_z_8x_6']#fixed cut data more bins _el lmin lose chains=['02a_z_8x_6_1','02b_z_8x_6_1','02c_z_8x_6_1','02d_z_8x_6_1','02e_z_8x_6_1','02f_z_8x_6_1','02g_z_8x_6_3','02h_z_8x_6_3','02i_z_8x_6_3','02j_z_8x_6_3']#fixed cut data more bins _el lmin lose #chains3='02z_31_3' #Novak evolution fit #chains3='02z_31_5' #Fixed evolution newz, area #chains3='02z_31_6' #Fixed evolution newz, area, 10.2 mass lim #z = [0, 0.5, 1 , 1.5, 2, 2.3, 2.6, 3, 3.5, 4] #old #z = [ 0.7, 1 , 1.35, 1.7, 2, 2.3, 2.6, 3, 3.5, 4]# older print expt.parameters n,m=3,3 #print xrecon #print yrecon #sys.exit() z_new=True Replot=False z_nov = [0.31, 0.5, 0.69, 0.9, 1.16, 1.44, 1.81, 2.18, 2.81, 3.71, 4.83] if z_new: z =[0.1,0.3,0.4,0.6,0.8,1.0,1.3,1.6,2.0,2.5,3.2,4.0] z=[0.1,0.4,0.6,0.8,1.0,1.3,1.6,2.0,2.5,3.2,4.0]#oldest ;) #chains=['11a','11b','11c_3','11d_3','11e_3','11f_3','11g_3','11h','11i','11j', '11k', '11l' ,'11m', '11n']#chains_201111 else: z=[0.1,0.4,0.6,0.8,1.0,1.3,1.6,2.0,2.5,3.2,4.0]#oldest ;) #ana3=pymultinest.analyse.Analyzer(ncols-1,\ # outputfiles_basename=os.path.join('chains_2002%s'%chains3,outstem)) #drawmap3=ana3.get_best_fit()['parameters'] #params3 = drawmap3 #parameters2= ['noise', 'A_SF', 'A_agn', 'LMIN', 'LMAX'] #parameters3= ['noise', 'A_agn', 'A_SF', 'B_agn', 'B_SF', 'LMIN', 'LMAX'] #parameters3= ['noise', 'A_agn', 'A_SF', 'B_agn', 'B_SF', 'LMIN_1', 'LMIN_2', 'LMIN_3', 'LMIN_4', 'LMIN_5', 'LMIN_6', 'LMIN_7', 'LMIN_8', 'LMIN_9', 'LMIN', 'LMAX'] #parameters4=['noise', 'LMIN', 'LMAX2', 'LMIN2', 'LMAX', 'LNORM', 'LSTAR', 'LSLOPE', 'LSLOPE2', 'LNORM_2', 'LSTAR_2', 'LSLOPE_2', 'LSLOPE2_2'] parameters2= ['noise', 'A_SF', 'A_agn', 'LMIN', 'LMAX'] parameters3= ['noise', 'LMIN', 'LMAX', 'LNORM_2', 'LSTAR_2', 'LSLOPE_2', 'LSLOPE2_2'] parameters4= ['noise', 'LMIN', 'LMAX', 'LNORM_2', 'LSTAR_2', 'LSLOPE_2', 'LSIGMA'] #lognorm parameters2=['noise', 'LMIN', 'LMAX2', 'LMIN2', 'LMAX', 'LNORM', 'LSTAR', 'LSLOPE', 'LSLOPE2', 'LNORM_2', 'LSTAR_2', 'LSLOPE_2', 'LSLOPE2_2'] parameters3= ['noise', 'A_SF', 'A_agn', 'LMIN', 'LMAX']#fixed parameters2=['noise', 'LMIN', 'LMAX2', 'LMIN2', 'LMAX', 'LNORM', 'LSTAR', 'LSLOPE', 'LSLOPE2', 'LNORM_2', 'LSTAR_2', 'LSLOPE_2', 'LSIGMA'] pass1=False for num in range(1,11): #num = 1. print num if num==2:pass1=False print 'new num ',num z_min,z_max, z_m = get_z(num) dl = get_dl(z_m) Vmax = get_Vmax(z_min,z_max) dsdl = get_dsdl(z_m,dl) #z_m = (z_min + z_max)/2 dl = get_dl(z_m) print z_min,z_max print expt.kind area = SURVEY_AREA*sqDeg2sr area1 = SURVEY_AREA*sqDeg2sr print SURVEY_AREA ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_20%s%s'%(pre_chain,chains[num-1]),outstem)) drawmap=ana.get_best_fit()['parameters'] drawmid=ana.get_stats()['marginals'] params = drawmap ana2=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_20%s%s'%('11',chains2[num-1]),outstem)) drawmap2=ana2.get_best_fit()['parameters'] params2 = drawmap2 ana3=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_20%s%s'%(pre_chain,chains3[num-1]),outstem)) drawmap3=ana3.get_best_fit()['parameters'] params3 = drawmap3 ana4=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_20%s%s'%('11',chains4[num-1]),outstem)) drawmap4=ana4.get_best_fit()['parameters'] params4 = drawmap4 settingf='chains_20%s%s/bayestack_settings.py'%(pre_chain,chains[num-1]) f = open(settingf, 'r') mod = f.readlines()[31].split()[0] print mod if 'logn' in mod: if 'dpl' in mod: model='LFlognorm_dpl' elif '_el' in mod: model='LFevol_logn_el' elif 'pl_' in mod: model='LFpl_lognorm' elif 'phi' in mod: model='LFevol_phi_logn_mat' elif 'mat' in mod: model='LFevol_logn_mat' else: model='LFlognorm' elif 'LFdpl' in mod or 'LFpl' in mod: if 'LFdpl_dpl' in mod: model='LFdpl_dpl' elif '_pl' in mod: model='LFdpl_pl' elif 'LFpl_' in mod: model='LFpl_dpl' elif 'LFpl' in mod: model='LFpl' else: model = 'LFdpl' with open('chains_20%s%s/params.tex'%(pre_chain,chains[num -1])) as f: parameters=[line.split(None,1)[0] for line in f] #model='LFdpl_pl' print parameters print model print 'LSIGMA' in parameters ''' if model in ['LFsch','LFdpl_pl','LFpl_dpl','LFdpl_dpl','LFlognorm_dpl','LFpl_lognorm']: Lnorm=params[parameters.index('LNORM')] Lstar=params[parameters.index('LSTAR')] Lslope=params[parameters.index('LSLOPE')] #Lzevol=params[parameters.index('LZEVOL')] if model in ['LFdpl_pl','LFpl_dpl','LFdpl_dpl','LFlognorm_dpl']: Lslope2=params[parameters.index('LSLOPE2')] if model in ['LFlognorm','LFpl', 'LFdpl', 'LFdpl_pl','LFpl_dpl', 'LFlognorm_dpl','LFpl_lognorm','LFdpl_dpl']: Lnorm_2=params[parameters.index('LNORM_2')] Lstar_2=params[parameters.index('LSTAR_2')] Lslope_2=params[parameters.index('LSLOPE_2')] if model in ['LFdpl_dpl','LFdpl']: Lslope2_2=params[parameters.index('LSLOPE2_2')] if model in ['LFlognorm','LFlognorm_dpl','LFpl_lognorm']: Lsigma = params[parameters.index('LSIGMA')] ''' Lmin=params[parameters.index('LMIN')] Lmax=params[parameters.index('LMAX')] #Lmin=params[expt.parameters.index('LMIN')] #Lmax=params[expt.parameters.index('LMAX')] SMIN = get_sbins(numpy.power(10,Lmin),z_m,dl)*1e6 SMAX = get_sbins(numpy.power(10,Lmax),z_m,dl)*1e6 sigma,fsigma,Lmin = numpy.log10(get_Lbins([SURVEY_NOISE,18.9, Lmin],z_m,dl,'muJy')*(1.4/3)**(-.7)) sigma2,fsigma2 = numpy.log10(get_Lbins([450,2400],z_m,dl,'muJy')) print z_m,dl, sigma,fsigma print SURVEY_NOISE,SURVEY_NOISE*5,SURVEY_AREA s=numpy.loadtxt('chains_20%s%s/recon_stats.txt'%(pre_chain,chains[num -1])) s2=numpy.loadtxt('chains_20%s%s/recon_stats.txt'%('11',chains2[num -1])) s3=numpy.loadtxt('chains_20%s%s/recon_stats.txt'%(pre_chain,chains3[num -1])) s4=numpy.loadtxt('chains_20%s%s/recon_stats.txt'%('11',chains4[num -1])) xrecon=s[:-1,0]; yrecon=s[:-1,1] yrecon_d=s[:-1,2]; yrecon_u=s[:-1,3] yrecon_rms = s[:-1,4] yrecon_avr = s[:-1,5] yrecon_rms_down = yrecon_rms xreco = get_Lbins(xrecon,z_m,dl,'muJy')#*(1.4/3)**(-.7) yreco = yrecon lin_yrecon = numpy.log10(yreco) lin_xrecon = numpy.log10(xreco) xrecon2=s2[:-1,0]; yrecon2=s2[:-1,1] yrecon_d2=s2[:-1,2]; yrecon_u2=s2[:-1,3] lin_xrecon2 = numpy.log10(get_Lbins(xrecon2,z_m,dl,'muJy')) xrecon3=s3[:-1,0]; yrecon3=s3[:-1,1] yrecon_d3=s3[:-1,2]; yrecon_u3=s3[:-1,3] lin_xrecon3 = numpy.log10(get_Lbins(xrecon3,z_m,dl,'muJy')) xrecon4=s4[:-1,0]; yrecon4=s4[:-1,1] yrecon_d4=s4[:-1,2]; yrecon_u4=s4[:-1,3] lin_xrecon4 = numpy.log10(get_Lbins(xrecon4,z_m,dl,'muJy')) bins2 = numpy.arange(15.,25.,0.4) bins = numpy.arange(fsigma-0.4,29.2,0.4)#bin +0.2 if not os.path.isfile('cos_data/cos_s%s_LF.el'%num) and z_new or not os.path.isfile('cos_data/cos_s%s_LF.el'%num) and not z_new or Replot: print 'doing all calculations' #l,z_l = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,21), F='uJy',L=True,getz=True) #l2,z_l2 = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,24), F='uJy',L=True,getz=True) if z_new: L,z_L = open_anytype('cos_data/cos_s%s.txt'%num,(2,3), F='uJy',L=True,getz=True,band='S') print 'this is the new z bins (please check if lumfuncUtils and cos_manifest are using the right z)' else: L,z_L = open_anytype('cos_data/cos_s%s.txt'%num,(2,3), F='uJy',L=True,getz=True,band='S') print 'this is the old z binning style. (please check if lumfuncUtils and cos_manifest are using the right z)' L_c,z_c=open_anytype('cosmos_counter_parts_II.txt',(3,4),[z_min,z_max], F='uJy',L=True,getz=True, band='S') z_c2,S_c2,L_c2 =numpy.loadtxt('cosmos_counter_parts_II.txt',unpack=True, usecols=(3,4,5)) L_c2,z_c2=open_anytype('cosmos_comp_vla.el',(2,3),[z_min,z_max], F='uJy',L=True,getz=True, band='S') L_c3,z_c3=open_anytype('cosmos_vla.el',(2,3),[z_min,z_max], F='uJy',L=True,getz=True, band='S') L_c4,z_c4=open_anytype('/home/eliab/Documents/OC/Project/cosmos/Cosmos/dr4_cos2015_vla.tx',(-4,-1),[z_min,z_max], F='uJy',L=True,getz=True, band='S') L_c5,z_c5=open_anytype('/home/eliab/Documents/OC/Project/cosmos/Cosmos/dr4_cos2015_vla.tx',(3,-1),[z_min,z_max], F='uJy',L=True,getz=True, band='S') #L_c2=L_c2[(z_c2<z_max)&(z_c2 >z_min)] #S_c2=S_c2[(z_c2<z_max)&(z_c2 >z_min)] #z_c2=z_c2[(z_c2<z_max)&(z_c2 >z_min)] #rho_1,er1 = calc_Vmax(calcu_zeff(z_l,l,11.5e-32),l,bins,z_max,z_min,area) #rho_2,er2 = calc_Vmax(calcu_zeff(z_l2,l2,11.5e-32),l2,bins,z_max,z_min,area) rho_3,er3,b3,n3 = calc_Vmax(calcu_zeff(z_L,L,1.15e-31),L,bins,z_max,z_min,area,table=True) #rho_4,er4 = calc_Vmax(99.,L,bins2,z_max,z_min,area) print 'COS15 VLA' rho_5,er5,b5,n5 = calc_Vmax(calcu_zeff(z_c,L_c,1.15e-31),L_c,bins,z_max,z_min,1.77*sqDeg2sr,table=True) print 'mass lim DR4-vla' rho_6,er6,b6,n6 = calc_Vmax(calcu_zeff(z_c2,L_c2,1.15e-31),L_c2,bins,z_max,z_min,1.5*sqDeg2sr,table=True) print 'DR4-vla' rho_7,er7,b7,n7 = calc_Vmax(calcu_zeff(z_c3,L_c3,1.15e-31),L_c3,bins,z_max,z_min,1.5*sqDeg2sr,table=True) print 'cos-DR4-vla DR4 photo-z' rho_8,er8,b8,n8 = calc_Vmax(calcu_zeff(z_c4,L_c4,1.15e-31),L_c4,bins,z_max,z_min,1.5*sqDeg2sr,table=True) print 'cos-DR4-vla COS15 photo-z' rho_9,er9,b9,n9 = calc_Vmax(calcu_zeff(z_c5,L_c5,1.15e-31),L_c5,bins,z_max,z_min,1.5*sqDeg2sr,table=True) for i in range(len(b5)): print '%5.2f %7d %10d %13d %17d %11d'%(b5[i],n3[i],n7[i],n8[i],n9[i],n5[i]) if z_new: f = open('cos_data/cos_s%s_LF_4.el'%num,'w') #I used LF_2 for the final results, _5 for stellar-mass 10.2 print 'saving data for future use in cos_data/cos_s%s_LF_4.el'%num else: f = open('cos_data/cos_s%s_LF_old.el'%num,'w') print 'saving data for future use in cos_data/cos_s%s_LF.el'%num for i in range(len(bins)): f.write('%5.1f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f\n'%(bins[i], rho_3[i],er3[i],rho_5[i],er5[i],rho_6[i],er6[i],rho_7[i],er7[i],rho_8[i],er8[i],rho_9[i],er9[i]) ) f.close() dl_c=get_dl(z_c2) L_c3=numpy.log10(get_Lbins(S_c2,z_c2,numpy.array(dl_c),'muJy')*(1.4/3.)**(-.7)) else: if z_new: bins,rho_3,er3,rho_5,er5,rho_6,er6 ,rho_7,er7 ,rho_8,er8 ,rho_9,er9 = numpy.loadtxt('cos_data/cos_s%s_LF_2.el'%num, unpack=True) print 'Using stored RLF for the new z (The one with more z bins). If you want to calculate the plot the set "Replot=True"' else: bins,rho_3,er3,rho_5,er5,rho_6,er6 = numpy.loadtxt('cos_data/cos_s%s_LF_old.el'%num, unpack=True) print 'Using stored RLF for the is old z bins. If you want to calculate the plot the set "Replot=True"' #ssd = numpy.loadtxt('%s/data_cos_s%s.txt'%(outdir,num)) ssd = numpy.loadtxt('cos_data/cos_s%s.txt'%(num), unpack=True, usecols=(-1,2)) ssbin2 = ssd[:,0] #2 ssbin1 = ssd[:,2] #0 Nbin2 = ssd[:,3] zbin3 = ssd[:,-1] dl1 = get_dl(z_min) dl2 = get_dl(z_max) #dl3 = get_dl(zbin3) Ncount = sum(Nbin2[fsigma>ssbin1]) Llmin = numpy.log10(get_Lbins([fsigma/numpy.sqrt(Ncount)],z_min,get_dl(z_min),'muJy'))[0] Llmin*=(1.4/3.)**(-.7) print Llmin #sys.exit() if z_new: try:pos=get_changed_multiplot(n,m,num) except:print 'changed pos doesnt work for ',num if num==4: pos = 10 elif num==8: pos=11 elif num==10: pos=11 elif num==11: pos=11 if num>4 and num!=8: n_s = 1 if num>8: n_s+=1 pos=get_changed_multiplot(n,m,num-n_s) ax=fig.add_subplot(n+1,m,pos) print 'plot change', n, m ,pos else: ax=fig.add_subplot(n,m,get_changed_multiplot(n,m,num)) plt.rc('lines', linewidth=2) #plt.errorbar(bins,rho_1 ,yerr=er1,fmt='*r',label='detected extracted',markersize=11) #bin ''' if model in ['LFdpl','LFdpl_dpl']: faint =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3), Lstar_2,Lslope_2,Lslope2_2,Lnorm_2) elif model in ['LFpl','LFdpl_pl']: faint =lumfuncUtils.powerlaw(numpy.power(10,bins3), Lstar_2,Lslope_2,Lnorm_2) elif model in ['LFpl_dpl']: faint =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar,Lslope,Lslope2,Lnorm) elif model =='LFevol_logn_mat': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=parameters,\ family='LFevol_logn_mat',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] else: faint = lumfuncUtils.lognormpl(numpy.power(10,bins3), Lstar_2,Lslope_2,Lsigma,Lnorm_2) #phi_dpl =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar ,Lslope,Lslope2,Lnorm) ''' #phi_dpl #dpl = dm =0.4#05 hm=0. #if num==1:hm=-0.25 ##if num>1:num-=1 L_1 = numpy.power(10,bins3)/(1 + z_m)**(2.86-z_m*0.7) L_2 = numpy.power(10,bins3)/(1 + z_m)**(2.95-z_m*0.29) print z_m, z_nov[num-1] Novak17=lumfuncUtils.lognormpl(L_2, numpy.log10(1.85e21),1.22,0.63, numpy.log10(3.55e-3/2.5)) Novak17_2=lumfuncUtils.lognormpl(numpy.power(10,bins3)/(1 + z_nov[num-1])**(3.16-z_nov[num-1]*0.32),\ numpy.log10(1.85e21),1.22,0.63, numpy.log10(3.55e-3/2.5)) phi_agn_n=lumfuncUtils.doublepowerlaw(L_1,24.59,1.27,0.49,numpy.log10(10**(-5.5))) phi_tot_n = phi_agn_n+Novak17 phi_tot_n2 = phi_agn_n+Novak17_2 #phi_2 =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params2,paramsList=parameters2,\ # family='LFdpl_dpl',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True) for lL in bins3] #phi_3 =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params3,paramsList=parameters3,\ # family='LFlognorm',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True) for lL in bins3] phi = [lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=parameters,\ family=model,inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True) for lL in bins3] #phi_2 =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params2,paramsList=parameters2,\ # family='LFlognorm_dpl',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True) for lL in bins3] phi_3 =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params3,paramsList=parameters3,\ family='LFevol_logn_mat',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True) for lL in bins3] #faint_3 =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params3,paramsList=parameters3,\ # family='LFevol_logn',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] phi_4 =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params4,paramsList=parameters4,\ family='LFlognorm',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0) for lL in bins3] #sys.exit() ##plt.plot(bins3+hm,numpy.log10(faint)-dm,'--k',linewidth=4 ,label='SF MAP Indiv. Novak 2018 fit') #plt.plot(numpy.log10(10**bins3),numpy.log10(phi_dpl)-dm,'--c', label='agn') #plt.plot(numpy.log10(10**bins3 *(1.4/3)**(-.7))+hm,numpy.log10(faint)-dm,'--b' ,label='faint-end') #plt.errorbar(lin_xrecon+hm,lin_yrecon-dm ,fmt='-b', label='MAP No mass-limit',linewidth=1.8) plt.errorbar(bins[2:],rho_3[2:] ,yerr=er3[2:],fmt='hb', fillstyle= 'none', markeredgewidth=3 ,label=r'$\rm{1/V_{max}}$',markersize=12) #bin #plt.errorbar(lin_xrecon+hm,lin_yrecon-dm ,fmt='-b', label='MAP Model A $M/M_\odot > 10$',linewidth=1.8) #plt.errorbar(lin_xrecon+hm,lin_yrecon-dm ,fmt='-b', label='MAP $\rm{Model}$ $\rm{C}$ Individual',linewidth=1.8) #plt.errorbar(lin_xrecon+hm,lin_yrecon-dm ,fmt='-b', label='MAP $\rm{Model}$ $\rm{C}$ 50% mass limit',linewidth=1.8) ##plt.errorbar(lin_xrecon+hm,lin_yrecon-dm ,fmt='-k', label='MAP Fixed Individual fit',linewidth=2.) ##plt.errorbar(lin_xrecon+hm,lin_yrecon-dm ,fmt='-k', label=r'$\rm{Total}$ $\rm{MAP}$ $\rm{Model}$ $\rm{C}$',linewidth=3) #plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi) -0.4 ,fmt='-k', label=r'$\rm{Total}$ $\rm{MAP}$ $\rm{Model}$ $\rm{C}$',linewidth=3) #plt.plot(bins3+hm,numpy.log10(faint)-dm,'-.b' ,label='SF MAP $\rm{Model}$ $\rm{C}$ Individual $M > 10 M/M_\odot$') #plt.plot(bins3+hm,numpy.log10(faint_3)-dm,'-g' ,label='SF MAP $\rm{Model}$ $\rm{C}$ PLE $M > 10 M/M_\odot$') #plt.plot(bins3+hm,numpy.log10(faint)-dm,'-.b' ,label='SF MAP $\rm{Model}$ $\rm{B}$') #if num!=10:plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_4) -0.4,fmt='--',color='orange',linewidth=3,label=r'$8.5<\log_{10}(M/M_\odot) <10$ $\rm{MAP}$ $\rm{Model}$ $\rm{B}$ ') #if num!=10:plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_3) -0.4,fmt='.',color='purple',linewidth=3,label=r'$8.5<\log_{10}(M/M_\odot) <10$ $\rm{MAP}$ $\rm{Model}$ $\rm{C}$ ') #plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_2) -0.4,fmt='-.r',linewidth=5.,label=r'$\log_{10}(M/M_\odot) > 10$ $\rm{Model}$ $\rm{B}$') #phi_5=numpy.array(phi_2)+numpy.array(phi_3) #plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_5) -0.4,fmt='-.b',linewidth=3.,label=r'$\rm{Total}$ $\rm{Model C+B}$') #if num!=10:plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_4) -0.4,fmt='--',color='orange',linewidth=3,label=r'$10^{8.5} M_\odot<M <10^{10} M_\odot$ $\rm{MAP}$ $\rm{Model}$ $\rm{B}$ ') #if num!=10:plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_3) -0.4,fmt='.',color='purple',linewidth=3,label=r'$10^{8.5} M_\odot<M <10^{10} M_\odot$ $\rm{MAP}$ $\rm{Model}$ $\rm{C}$ ') #plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_2) -0.4,fmt='-.r',linewidth=5.,label=r'$M > 10^{10} M_\odot$ $\rm{Model}$ $\rm{B}$') #plt.errorbar(lin_xrecon+hm,numpy.log10(yrecon_avr)-dm,fmt='-c', label = 'Average') #plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_4) -0.4,fmt='--k',linewidth=3,label='MAP with mass limit') ##plt.errorbar(bins,rho_5 ,yerr=er5,fmt='^k',label='VLA-COSMOS2015',markersize=10) #bin ##plt.errorbar(bins,rho_8 ,yerr=er8,fmt='sc',label='VLA-COSMOS2015 in DR4 using DR4 z',markersize=10) #bin ##plt.errorbar(bins,rho_9 ,yerr=er9,fmt='*m',label='VLA-COSMOS2015 in DR4 using COS15z',markersize=14) #bin ##plt.errorbar(bins,rho_6 ,yerr=er6,fmt='ok',label='DR4 detected',fillstyle='none',markersize=14) #bin ##plt.errorbar(bins,rho_7 ,yerr=er6,fmt='dg',label='DR4 detected - Full NIR sample',markersize=12) #bin #if not pass1:plt.errorbar(numpy.array(L_n2[num-1]),numpy.array(rho_n2[num-1]) -0.4,xerr=[L_ner_d2[num-1],L_ner_u2[num-1]],yerr=[rho_ner_d2[num-1],rho_ner_u2[num-1]], fmt='sr',fillstyle='none',ecolor='k',markeredgewidth=1.5, label='Total Novak+2018') #plt.errorbar(numpy.log10(10**bins3), numpy.log10(phi_tot_n),fmt='--k',linewidth=3,label='Total Novak+2018') #plt.errorbar(bins3, numpy.log10(Novak17_2),fmt='.r',linewidth=0.4,label='SF Novak + 2017') #if num <9: #plt.errorbar(mcalpine[mcalpine_panels[num] -1][:,0] ,mcalpine[mcalpine_panels[num] -1][:,1]-0.4 ,yerr=mcalpine[mcalpine_panels[num] -1][:,2],fmt='>c', fillstyle= 'none', markeredgewidth=2 ,label='Total McAlpine+2013',markersize=12) #print padovani[num-1] #if num <9 and num!=2: #plt.errorbar(padovani[padovani_panels[num] -1][:,0],padovani[padovani_panels[num] -1][:,1] -(9-numpy.log10(10)),fmt='dk', fillstyle= 'none', markeredgewidth=1 ,label='padovani+2015 RL AGN',markersize=13) #plt.errorbar(bins3, numpy.log10(Novak17)-0.4,fmt='--b',label='SF galaxies Novak + 2017') #plt.plot(bins3,numpy.log10(phi_agn_n),'--g', label='local agn nov') ##if num>1:num+=1 #plt.plot(L_s, numpy.log10(rho_1), '*m',label='bins LF',markersize=8) #plt.errorbar(bins,rho_5 ,yerr=er5,fmt='*r',label='Total',markersize=10) #bin #plt.errorbar(bins,rho_6 ,yerr=er6,fmt='>g',label='Total LF',markersize=10) #bin #plt.fill_between(lin_xrecon+hm,numpy.log10((yrecon_d))-dm,numpy.log10(yrecon_u) -dm, color='k',label='95% Model C Individaul' ,alpha=0.2) #plt.fill_between(lin_xrecon+hm,numpy.log10((yrecon_d))-dm,numpy.log10(yrecon_u) -dm, color='k',label='95% Model A $M/M_\odot > 10$' ,alpha=0.2) plt.fill_between(lin_xrecon+hm,numpy.log10((yrecon_d))-dm,numpy.log10(yrecon_u) -dm, color='k',label=r'$\rm{95%}$ $\rm{Total}$ $\rm{Model}$ $\rm{C}$' ,alpha=0.5) plt.fill_between(lin_xrecon2+hm,numpy.log10((yrecon_d2))-dm,numpy.log10(yrecon_u2) -dm, color='r',label=r'$\rm{95%}$ $\log_{10}(M/M_\odot) > 10$ $\rm{Model}$ $\rm{B}$' ,alpha=0.5) plt.fill_between(lin_xrecon4+hm,numpy.log10((yrecon_d4))-dm,numpy.log10(yrecon_u4) -dm, color='orange',label=r'$\rm{95%}$ $8.5<\log_{10}(M/M_\odot) <10$ $\rm{Model}$ $\rm{B}$ ' ,alpha=0.7) plt.fill_between(lin_xrecon3+hm,numpy.log10((yrecon_d3))-dm,numpy.log10(yrecon_u3) -dm, color='purple',label=r'$\rm{95%}$ $8.5<\log_{10}(M/M_\odot) <10$ $\rm{Model}$ $\rm{C}$ ' ,alpha=0.7) #plt.errorbar(bins[1:],rho_3[1:] ,yerr=er3[1:],fmt='h', fillstyle= 'none', markeredgewidth=3 ,label='extracted fluxes (No mass limit)',markersize=12) #bin #plt.fill_between(lin_xrecon2+hm,numpy.log10((yrecon_d2))-dm,numpy.log10(yrecon_u2) -dm, color='r',label=r'$\rm{95%}$ $M > 10^{10} M_\odot$ $\rm{Model}$ $\rm{B}$' ,alpha=0.5) #if num!=10:plt.fill_between(lin_xrecon4+hm,numpy.log10((yrecon_d4))-dm,numpy.log10(yrecon_u4) -dm, color='orange',label=r'$\rm{95%}$ $10^{8.5} M_\odot<M <10^{10} M_\odot$ $\rm{Model}$ $\rm{B}$ ' ,alpha=0.7) #if num!=10:plt.fill_between(lin_xrecon3+hm,numpy.log10((yrecon_d3))-dm,numpy.log10(yrecon_u3) -dm, color='purple',label=r'$\rm{95%}$ $10^{8.5} M_\odot<M <10^{10} M_\odot$ $\rm{Model}$ $\rm{C}$ ' ,alpha=0.7) plt.ylim(-8.,-1.6) plt.axvline(fsigma,color='g',linestyle='dashed',label=r'$\rm{5\sigma}$') #plt.axvline(sigma,color='g') #plt.axvline(Lmin,color='r',linewidth=2) ##z_new=True if num<2 or num<6 and num>3 or num>6 and num<9: plt.xticks( visible=False) plt.ylim(-8.,-1.6) if num<5: plt.xlim(18.6,25.7) plt.text(18.8,-7.,r'$\rm{%.1f < z < %.1f}$ %s$\rm{z_{MED} = %.2f}$'%(z_min,z_max,'\n',z_m),fontsize = 28 ) # \n $M_i$ < -22 elif num<9: plt.xlim(20.,27.2) plt.text(20.2,-7.,r'$\rm{%.1f < z < %.1f}$ %s$\rm{z_{MED} = %.2f}$'%(z_min,z_max,'\n',z_m),fontsize = 28 ) # \n $M_i$ < -22 else: plt.xlim(20.6,27.8) plt.text(21.,-7.,r'$\rm{%.1f < z < %.1f}$ %s$\rm{z_{MED} = %.2f}$'%(z_min,z_max,'\n',z_m),fontsize = 28 ) # \n $M_i$ < -22 plt.tick_params(axis='both',which = 'minor',width=1) plt.tick_params(axis='both',which = 'major', width=1.5) ax.xaxis.set_minor_locator(AutoMinorLocator()) #ax.yaxis.set_minor_locator(AutoMinorLocator()) #plt.axes().xaxis.set_minor_locator(AutoMinorLocator()) #plt.axes().yaxis.set_minor_locator(AutoMinorLocator()) #plt.minorticks_on() if num==4: plt.xticks([19,20,21,22,23,24,25],fontsize=30) plt.xticks( visible=True) handles,labels=plt.gca().get_legend_handles_labels() print labels print len(labels) #order=[0, 5, 6,1, 2 ,3 ,4, 7, 8, 9]#model_C order=[0,5,1,4,2,3] #plt.legend(frameon=False).draggable() plt.legend([handles[idx] for idx in order],[labels[idx] for idx in order],frameon=False).draggable() if num==8: plt.xticks([21,22,23,24,25,26,27],fontsize=30) plt.xticks( visible=True) if num == 10: plt.xticks([21,22,23,24,25,26,27],fontsize=30) plt.xticks( visible=True) if num==1 or num ==2 or num==3 or num==4: plt.yticks([-2.,-3,-4,-5, -6, -7], fontsize=30) if num==4: plt.yticks([-2.,-3,-4,-5, -6, -7, -8], fontsize=30) continue plt.yticks(visible=False) '''#z_new=False print 'Is this still num ',num if num<2 or num<6 and num>3 or num>6 and num<9: plt.xticks( visible=False) plt.ylim(-7.6,-1.6) if num<4: plt.xlim(19,25.8) plt.text(19.2,-7.,r'$\rm{%.1f < z < %.1f}$'%(z_min,z_max),fontsize = 32 ) # \n $M_i$ < -22 elif num<7: plt.xlim(20.8,27.2) plt.text(21.,-7.,r'$\rm{%.1f < z < %.1f}$'%(z_min,z_max),fontsize = 33 ) # \n $M_i$ < -22 else: plt.xlim(21.3,27.8) plt.text(21.5,-7.,r'$\rm{%.1f < z < %.1f}$'%(z_min,z_max),fontsize = 32 ) # \n $M_i$ < -22 if num==3: plt.xticks([19,20,21,22,23,24,25],fontsize=22) if num==6: plt.xticks([21,22,23,24,25,26,27],fontsize=22) if num == 9: plt.xticks([22,23,24,25,26,27],fontsize=22) plt.legend(frameon=False).draggable() if num==1 or num ==2 or num==3 or num==10: plt.yticks([-2.,-3,-4,-5, -6], fontsize=22) if num==3: plt.yticks([-2.,-3,-4,-5, -6, -7], fontsize=22) continue plt.yticks(visible=False) ''' fig.text(0.06,0.5,r'$\rm{log_{10}[\Phi /(Mpc^{-3}mag^{-1})]}$',fontsize=32, ha='center',va='center', rotation='vertical') fig.text(0.5,0.04,r'$\rm{log_{10}[L_{1.4}/(W}$ $\rm{Hz^{-1})]}$',fontsize = 32, ha='center',va='center') #plt.text(23.9,-9.7,'%s'%outdir,fontsize = 16 ) # \n $M_i$ < -22 #plt.tick_params(axis='both',which = 'major', labelsize=20,width =2) #plt.tick_params(axis='both',which = 'minor', labelsize=10, width=2) plt.subplots_adjust(hspace=0,wspace=0) #plt.xtick(fontsize=15) #plt.ytick(fontsize=15) #plt.ylim(-10.2,-5.8) #plt.ylim(-11,-5.5) #ax.xaxis.set_minor_locator(AutoMinorLocator()) #ax.yaxis.set_minor_locator(AutoMinorLocator()) #print truth['LMIN'] plotf='%s/LF_recon_s1.pdf' % (outdir) plt.show() return 0
def main(): """ """ print 'Settings file is %s' % setf # Import the settings variables set_module = importlib.import_module(setf) globals().update(set_module.__dict__) # Load prior ranges etc. expt = countModel(modelFamily, nlaws, setf, dataset, floatNoise) # Insert hacks here #plotRanges['C']=[0,200] print modelFamily if modelFamily == 'LFsch': labelDict= {'noise': '$\sigma$','LMIN':r'$\log_{10}[L_\rm{min}]$','LMAX':r'$\log_{10}[L_\rm{max}]$',\ 'LNORM':'$\log_{10}[\Phi_1^*]$','LSTAR': '$\log_{10}[L_1^*]$','LSLOPE':r'$\alpha$'}#,'LZEVOL':'$Z_{evol}$'} elif modelFamily == 'LFpl': print 'this..' labelDict= {'LMIN':r'$L_{\rm{min}_2}$','LMAX':r'$L_{\rm{max}_2}$',\ 'LNORM_2':'$\Phi_2^*$','LSTAR_2': '$L_2^*$','LSLOPE_2':r'$\alpha_1$','LSLOPE2_2':r'$\alpha_1$'} elif modelFamily == 'LFdpl': print 'this..' labelDict= {'LMIN':r'$L_{\rm{min}_2}$','LMAX':r'$L_{\rm{max}_2}$',\ 'LNORM_2':'$\Phi_2^*$','LSTAR_2': '$L_2^*$','LSLOPE_2':r'$\alpha_1$','LSLOPE2_2':r'$\beta_1$','LZEVOL':'$Z_{evol}$'} elif modelFamily == 'LFlognorm': labelDict= {'LMIN':r'$L_{\rm{min}_2}$','LMAX':r'$L_{\rm{max}_2}$',\ 'LNORM_2':'$\Phi_2^*$','LSTAR_2': '$L_2^*$','LSLOPE_2':r'$\alpha_1$','LSIGMA':r'$\sigma_{LF}$','LZEVOL':'$Z_{evol}$'} elif modelFamily == 'LFlognorm_dpl': print 'this is the right model' labelDict= {'LMIN':r'$\log_{10}[L_{\rm{min}_1}]$','LMAX2':r'$\log_{10}[L_{\rm{max}_1}]$','LMIN2':r'$\log_{10}[L_{\rm{min}_2}]$','LMAX':r'$\log_{10}[L_{\rm{max}_2}]$',\ 'LNORM':'$\log_{10}[\Phi_1^*]$','LSTAR': '$\log_{10}[L_1^*]$','LSLOPE':r'$\alpha_1$',\ 'LSLOPE2': r'$\beta_1$', 'LNORM_2':'$\log_{10}[\Phi_2^*]$','LSTAR_2': '$\log_{10}[L_2^*]$','LSLOPE_2':r'$\alpha_2$','LSIGMA':r'$\sigma_{LF}$'} print labelDict elif modelFamily == 'LFdpl_pl': labelDict= {'noise': '$\sigma$','LMIN':r'$\log_{10}[L_{\rm{min}_1}]$','LMAX2': r'$\log_{10}[L_{\rm{max}_1}]$','LMIN2':r'$\log_{10}[L_{\rm{min}_2}]$','LMAX':r'$\log_{10}[L_{\rm{max}_2]$',\ 'LNORM':'$\log_{10}[\Phi_1^*]$','LSTAR': '$\log_{10}[L_1^*]$','LSLOPE':r'$\alpha_1$',\ 'LSLOPE2': r'$\beta_1$', 'LNORM_2':'$\log_{10}[\Phi_2^*]$','LSTAR_2': '$\log_{10}[L_2^*]$','LSLOPE_2':r'$\alpha_2$','LSLOPE2_2':r'$\beta_2$'} elif modelFamily == 'LFdpl_dpl': labelDict= {'noise': '$\sigma$','LMIN': r'$L_{\rm{min}_1}$','LMAX2': r'$L_{\rm{max}_1}$','LMIN2':r'$L_{\rm{min}_2}$','LMAX':r'$L_{\rm{max}_2}$',\ 'LNORM':'$\Phi_1^*$','LSTAR': '$L_1^*$','LSLOPE':r'$\alpha_1$',\ 'LSLOPE2': r'$\beta_1$', 'LNORM_2':'$\Phi_2^*$','LSTAR_2': '$L_2^*$','LSLOPE_2':r'$\alpha_2$','LSLOPE2_2':r'$\beta_2$'} elif modelFamily == 'LFevol_logn_L': labelDict= {'noise': '$\sigma$','LMIN':'$L_{min}$','LMAX':'$L_{max}$','A_SF':r'$\alpha_{SF}$', 'A_agn':r'$\alpha_{AGN}$',\ 'B_SF':r'$\beta_{SF}$', 'B_agn':r'$\beta_{AGN}$', 'LMIN_1':'$L_{min1}$', 'LMIN_2':'$L_{min2}$' ,'LMIN_3':'$L_{min3}$' ,'LMIN_4':'$L_{min4}$' ,'LMIN_5':'$L_{min5}$' ,'LMIN_6':'$L_{min6}$' ,'LMIN_7':'$L_{min7}$' ,'LMIN_8':'$L_{min8}$' ,'LMIN_9':'$L_{min9}$'} elif modelFamily == 'LFevol': labelDict= {'noise': '$\sigma$','LMIN':'$L_{min}$','LMAX':'$L_{max}$','A_SF':r'$\alpha_{SF}$', 'A_agn':r'$\alpha_{AGN}$',\ 'B_SF':r'$\beta_{SF}$', 'B_agn':r'$\beta_{AGN}$'} elif modelFamily == 'LFevol_dpl': labelDict= {'noise': '$\sigma$','LMIN':'$S_{min} (\mu Jy)$','LMAX':'$L_{max}$','A_SF':r'$\alpha_{SF}$', 'A_agn':r'$\alpha_{AGN}$',\ 'B_SF':r'$\beta_{SF}$', 'B_agn':r'$\beta_{AGN}$'} elif modelFamily == 'LFevol_logn': labelDict= {'noise': '$\sigma$','LMIN':'$S_{min} (\mu Jy)$','LMAX':'$L_{max}$','A_SF':r'$\alpha_{SF}$', 'A_agn':r'$\alpha_{AGN}$',\ 'B_SF':r'$\beta_{SF}$', 'B_agn':r'$\beta_{AGN}$'} elif modelFamily == 'LFevol_phi_logn': labelDict= {'noise': '$\sigma$','LMIN':'$S_{min} (\mu Jy)$','LMAX':'$L_{max}$','A_SF':r'$\alpha_{SF}$','A_B':r'$\alpha^D_{SF}$', 'A_agn':r'$\alpha_{AGN}$',\ 'B_SF':r'$\beta_{SF}$','B_D':r'$\beta^D_{SF}$', 'B_agn':r'$\beta_{AGN}$'} elif modelFamily == 'LFevol_logn_mat' or modelFamily == 'LFevol_logn_el': labelDict = { 'noise': '$\sigma$', 'LMIN': r'$\log_{10}[L_{\rm{min}}]$', 'LMAX': r'$\log_{10}[L_{\rm{max}}]$', 'A_agn': r'$\alpha_{AGN}$', 'A_SF': r'$\alpha_{SF}$' } elif modelFamily == 'LFevol_dpl_s': labelDict = { 'noise': '$\sigma$', 'LMIN': '$S_{min} (\mu Jy)$', 'LMAX': '$L_{max}$', 'A_SF': r'$\alpha_{SF}$', 'B_SF': r'$\beta_{SF}$' } elif modelFamily == 'LFevol_logn_s': labelDict = { 'noise': '$\sigma$', 'LMIN': '$S_{min} (\mu Jy)$', 'LMAX': '$L_{max}$', 'A_SF': r'$\alpha_{SF}$', 'B_SF': r'$\beta_{SF}$' } elif modelFamily == 'LFevol_logn_mat': labelDict = { 'noise': '$\sigma$', 'LMIN': '$L_{min}$', 'LMAX': '$L_{max}$', 'A_agn': r'$L_{agn}$', 'A_SF': r'$\L_{SF}$' } else: labelDict = dict((name, lables) for name in expt.parameters) plotTruth = dict((name, -99.0) for name in expt.parameters) if modelFamily in ['LFsch', 'LFdpl_pl', 'LFdpl_dpl', 'LFlognorm_dpl']: Lnorm = expt.parameters[expt.parameters.index('LNORM')] Lstar = expt.parameters[expt.parameters.index('LSTAR')] Lslope = expt.parameters[expt.parameters.index('LSLOPE')] #Lzevol=expt.parameters[expt.parameters.index('LZEVOL')] if modelFamily in ['LFdpl_dpl', 'LFlognorm_dpl']: Lslope2 = expt.parameters[expt.parameters.index('LSLOPE2')] if modelFamily in [ 'LFlognorm', 'LFdpl', 'LFpl', 'LFdpl_pl', 'LFlognorm_dpl', 'LFdpl_dpl' ]: Lnorm = expt.parameters[expt.parameters.index('LNORM_2')] Lstar = expt.parameters[expt.parameters.index('LSTAR_2')] Lslope = expt.parameters[expt.parameters.index('LSLOPE_2')] if modelFamily in ['LFdpl_dpl']: Lslope2_2 = expt.parameters[expt.parameters.index('LSLOPE2_2')] noise = expt.parameters[expt.parameters.index('noise')] plotRanges = dict((k, v[-2:]) for (k, v) in expt.priorsDict.items()) ''' furniture={'TRUNCATE_phi':False,'TRUNCATE_phi_limit':2.0e7,\ 'Lstar':Lnorm ,'FONTSIZE':4,\ 'ROTATION':60.0,'FIGSIZE':(8.27,11.69), 'DPI':400,\ 'AXIS_LABEL_OFFSET':-0.3,'LOG_BINS':Lnorm,\ 'PADDING':0.05} ''' furniture={'TRUNCATE_Lstar':False,'TRUNCATE_Lstar_limit':2.0e7,\ 'FONTSIZE':4,\ 'ROTATION':60.0,'FIGSIZE':(8.27,11.69), 'DPI':400,\ 'AXIS_LABEL_OFFSET':-0.3} #furniture={} # Load the data chain = numpy.loadtxt('%s/1-post_equal_weights.dat' % outdir) # stats = fetchStats(outdir, expt.parameters, plotTruth) print 'start' #print chain[0][1:] chain = numpy.array([c[1:] for c in chain]) #chain=numpy.delete(chain,-1,1) print expt.parameters #print expt.parameters.keys() remove = ['noise'] #,'LMAX2', 'LMAX'] #parameters= [ele for ele in expt.parameters if ele not in remove] #chain =numpy.delete(chain,[1],1) #print chain #print parameters #print chains #print chain2 #sys.exit() ''' print chain[0] #sys.exit() #chain=pylab.loadtxt('%s/1-ev.dat'%outdir) print expt.parameters,'oka' print modelFamily labels=[labelDict[param] for param in expt.parameters[1:] ] rc('xtick',labelsize=24) rc('ytick',labelsize=24) if corner_tri: figure= corner.corner(chains,bins=50,labels=labels,color='#0057f6',label_kwargs={'fontsize':32},plot_contours=True,fill_contours=True,contour_kwargs={'linewidth':100})#contour_kwargs={'levels',0.6}) show() sys.exit() plotRanges={'noise': [148., 160],'LMIN': [20, 26],'LMAX':[23,30] ,'LMIN2': [20, 28],'LMAX2':[23,30],\ 'LNORM':[-10,2],'LSTAR': [24,30],'LSLOPE':[-5,5],'LSLOPE2':[-5,5], 'LNORM_2':[-10,2],\ 'LSTAR_2': [20,26],'LSLOPE_2':[-2,2],'LSLOPE2_2':[-5,1]} # Local plot line=False print labelDict autoscale=True print 'this is noise',noise title=''#r'$\rm{%s \mu Jy}$'%noise#%s - %s'%(outdir,dataset) truth=plotTruth bundle=contour_plot.contourTri(chain,\ line=line,\ labels=expt.parameters[1:],\ ranges=plotRanges,truth=truth,\ autoscale=autoscale,title=title,\ X_LABEL_OFFSET=-0.8,Y_LABEL_OFFSET=-0.7 ,\ labelDict=labelDict\ ,furniture=furniture) ''' # Plot for publication print 'latex stuff' printLaTeX(expt.parameters, stats, dump=outdir) line = False autoscale = True title = '' truth = { 'noise': 150, 'LMIN': 21.7, 'LMAX': 24.6, 'LNORM_2': numpy.log10(1e-7), 'LSTAR_2': 23.1, 'LSLOPE_2': 1., 'LSLOPE2_2': 1. } truth = {par: stats[par][0] for par in expt.parameters} print 'This is the truth\n \n' print truth #plotRanges={'noise': [148., 160],'LMIN': [20, 26],'LMAX':[26,30] ,'LMIN2': [20, 30],'LMAX2':[20,30],\ # 'LNORM':[-10,-2],'LSTAR': [24,30],'LSLOPE':[-5,5],'LSLOPE2':[-5,5], 'LNORM_2':[-10,-2],\ # 'LSTAR_2': [20,26],'LSLOPE_2':[-5,5],'LSLOPE2_2':[-5,5]} extn = 'png' plotRanges = {} bundle=contour_plot.contourTri(chain,\ line=line,\ outfile='%s/triangle_%s.%s'%(outdir,outdir[-3:],extn),\ labels=expt.parameters[1:],\ ranges=plotRanges,truth=truth,\ autoscale=autoscale,title=title,\ X_LABEL_OFFSET=-0.55,Y_LABEL_OFFSET=-0.45,FONTSIZE=24.,\ binsize=50,labelDict=labelDict) #X_LABEL_OFFSET=-0.45,Y_LABEL_OFFSET=-0.35,FONTSIZE=15.,\ dpl_dpl #X_LABEL_OFFSET=-0.45,Y_LABEL_OFFSET=-0.35,FONTSIZE=20.,\ model C stats = fetchStats(outdir, expt.parameters, plotTruth) print stats printLaTeX(expt.parameters, stats, dump=outdir) return 0
def main(): """ """ # Import the settings variables print 'Settings file is %s' % param_file # Import the settings variables set_module = importlib.import_module(settingsf) globals().update(set_module.__dict__) # Set up the experiment #bins=[12.679592, 31.84969509, 80.00281696, 200.9579904, 504.78364938, 1010, 3267.95919972]# 0.4 bins bins = numpy.logspace(0, 3.01, 10) bins = list(bins) bins.append(2e3) bins1 = numpy.arange(17.2, 28.2, 0.1) print 'run expt' nbins = len(bins) z_m = redshifts[0] dl = get_dl(z_m) sbin1 = get_sbins(10**bins1, z_m, dl) * 1e6 expt = countModel(modelFamily, nlaws, settingsf, [dataset], floatNoise, doRedshiftSlices=True, mybins=sbin1) #expt=countModel(modelFamily,nlaws,settingsf,dataset,floatNoise,\ # doRedshiftSlices=True)#numpy.logspace(0,3.0,20)) #print 'these are my beens', expt.bins #sys.exit() f = '%spost_equal_weights.dat' % outstem #f='%sev.dat'% outstem f = os.path.join(outdir, f) # Fetch best-fit parameters and calculate best-fit line plotTruth = dict((name, -99.0) for name in expt.parameters) # Load equally-weighted posterior samples x = numpy.genfromtxt(f) nsamp = x.shape[0] ncols = x.shape[1] # The fifth [seventh] column is the posterior value # There must be a better way, but: #ncols = 14 z = numpy.zeros((nsamp, ncols - 1 + expt.nbins)) z[:, :-(expt.nbins - 1)] = x # Shift posterior values to end z[:, -1] = z[:, ncols - 1] # Copy... z[:, ncols - 1] = 0.0 # ...and blank # Fetch best-fit parameters and calculate best-fit line ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap = ana.get_best_fit()['parameters'] #print 'These is MAP',drawml #sys.exit() #summf=os.path.join(outdir,'1-summary.txt') #summary=numpy.genfromtxt(summf)[-1,:] #drawmap=summary[-(ncols+1):-2] print 'Now this is MAP', drawmap #drawmap = [ 1.76792100e+02, 5.24202324e+18, 7.67284256e+24, 2.52157587e+1, 9.63136831e+22, 3.30233162e+00] if True: print '--> Calculating *ML* reconstruction' drawmap = drawmap # Convert drawmap into correct units etc. power = 2.5 #drawmap[6]-=0.6 #ymap=expt.evaluate(expt.convertPosterior(drawmap,power)) ymap = expt.evaluate(drawmap)[0] #,expt.binsMedian) #ymap=expt.realise(drawmap) #print 'ymap' #print ymap #print 'yy',['%e'%y for y in ymap] #sys.exit(0) for isamp in xrange(nsamp): #z[isamp,ncols-1:]=expt.evaluate(expt.convertPosterior(z[isamp,:],power)) #z[isamp,:][6]-=0.6 z[isamp, ncols - 1:] = expt.evaluate(z[isamp, :])[0] #,expt.binsMedian) #print z[isamp,:] #sys.exit() # Blanking, 0.0 -> NaN z[numpy.where(z == 0.0)] = 'NaN' #sys.exit() # Save the raw reconstructions reconf = 'recon_raw.txt' reconf = os.path.join(outdir, reconf) recons = z[:, ncols - 1:] #numpy.savetxt(reconf,recons) # Generate stats here... s = numpy.zeros((len(expt.binsMedian), 8)) s[:, 0] = expt.binsMedian #print '# ibin flux fit low high dlower dupper skew kurtosis' #print '%6s %12s %12s %12s %12s %12s %12s %12s %12s'%('bin', 'lower phi_rms','lower phi', 'l_err','ymap','u_err', 'upper phi','u_phi_rms', '2*rms') for ibin in xrange(len(expt.binsMedian)): x = recons[:, ibin] # Remove NaNs from stats vectors # http://stackoverflow.com/questions/11620914/removing-nan-values-from-an-array x = x[~numpy.isnan(x)] #ss=stats.bayes_mvs(x,alpha=0.68)[0] #x*=numpy.power(s[ibin,0]/1.0e6,2.5) #print bins1[ibin] #plt.hist(numpy.log10(x),bins=15) #plt.xlabel(r'$\rm{log_{10}[\rho_m(Mpc^{-3} mag^{-1})]}$',fontsize = 20) #plt.show() #tt=peak_confidence(x,bins=10) try: ss = numpy.zeros(3) ss[0], dlow, dhigh, ss[1], ss[2] = calculate_confidence( x, alpha=0.95, ret_all=True) #ss[0],dlow,dhigh,ss[1],ss[2]=calculate_confidence2(x,alpha=0.68,ret_all=True,\ # value_central=ymap[ibin],\ # truncate_edges=True) except: ss = numpy.nan * numpy.ones(3) print "didn't work for ", x continue #sys.exit() #tt=peak_confidence(x,bins=10) #ss*=numpy.power(s[ibin,0]/1.0e6,2.5) #print ss[0],tt # s[ibin,1]=ss[0] # median # s[ibin,1]=tt # peak s[ibin, 1] = ymap[ibin] # MAP #print ymap s[ibin, 2] = ss[1] # lower s[ibin, 3] = ss[2] # upper s[ibin, 4] = 2 * numpy.std( x) # (s[ibin,3]- s[ibin,2])/(2*numpy.std(x))# skewness s[ibin, 5] = ss[0] #print '%6.1f %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f'%(bins1[ibin], numpy.log10((ymap[ibin] - s[ibin,4])), numpy.log10(ss[1]),numpy.log10(s[ibin,2]),numpy.log10(ymap[ibin]),numpy.log10(s[ibin,3]) ,numpy.log10(ss[2]), numpy.log10(s[ibin,4]+ ymap[ibin]), numpy.log10(s[ibin,4]) ) #print ibin,s[ibin,0],s[ibin,1],dlow,dhigh,ss[1],ss[2],s[ibin,4],s[ibin,5]#,stats.skewtest(x) #sys.exit() # ...and output to file #sys.exit() rstatsf = 'recon_stats.txt' rstatsf = os.path.join(outdir, rstatsf) hdr = '# median_flux_uJy dnds_2p5_Jy1p5srm1 delta_dnds_2p5_lower_Jy1p5srm1 delta_dnds_2p5_upper_Jy1p5srm1 skewness kurtosis' fid = open(rstatsf, 'w') #print hdr #print s print '-> Writing stats (i.e. dnds2p5+/- v. S/uJy) to %s' % rstatsf fid.write('%s\n' % hdr) numpy.savetxt(fid, s) fid.close() print 'Finished.' return 0
def main(): """ """ print 'Settings file is %s' % setf # Import the settings variables set_module = importlib.import_module(setf) globals().update(set_module.__dict__) expt = countModel(modelFamily, nlaws, setf, [dataset], floatNoise, doRedshiftSlices=True) #recon_expt=countModel(modelFamily,nlaws,setf,[dataset],floatNoise) #print expt.data #print expt.bins # Get MAP parameters print '\n' * 5 print len(expt.parameters) ncols = len(expt.parameters) summf = os.path.join(outdir, '1-summary.txt') summary = numpy.genfromtxt(summf)[-1, :] drawmap = summary[-(ncols + 2):-2] ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap = ana.get_best_fit()['parameters'] if dataset == 'sdss': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 20: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][4:])) print datafiles[0][4:] elif dataset == 'cosmos': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 24: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][8:])) print datafiles[0][8:] elif 'sim' in dataset: d = numpy.genfromtxt(os.path.join(outdir, 'sim.txt')) #bins2 = numpy.arange(21.4,29.2,0.4) bins2 = numpy.arange(18.0, 29.2, 0.4) bins3 = numpy.arange(18., 29.2, 0.01) print len(expt.parameters) print 'this is 1st num ', num #sys.exit() params = drawmap # [0] #for i in drawmap: # params.append(i) print params print expt.parameters #novak 2017 L_n = [21.77, 22.15, 22.46, 22.77, 23.09, 23.34] rho_n = [-2.85, -2.88, -3.12, -3.55, -4.05, -4.63] L_ner_u = [0.23, 0.18, 0.19, 0.2, 0.21, 0.28] L_ner_d = [1.1, 0.15, 0.14, 0.12, 0.12, 0.048] rho_ner = [0.09, 0.03, 0.0355, 0.059, 0.1, 0.234] #novak 2018 L_n2 =[[21.77,22.24,22.68,23.16,23.69,24.34, 24.74,25.56],\ [22.30,22.61,22.96,23.38,23.80,24.10, 24.55,25.14],\ [22.61,22.86,23.14,23.45,23.82,24.14, 24.40,24.71],\ [22.85,23.16,23.69,24.24,24.80,25.31, 25.96,26.69],\ [23.10,23.38,23.86,24.36,24.86,25.35, 25.94,26.36],\ [23.32,23.57,23.94,24.32,24.67,25.06, 25.47,25.96],\ [23.54,23.75,24.13,24.45,24.90,25.27, 25.74,26.10],\ [23.73,23.99,24.57,25.10,25.68,26.18, 26.83,27.51],\ [24.01,24.26,24.76,25.26,25.91,26.19, 27.45],\ [24.30,24.56,24.80,25.13,25.37,25.80, 25.97,26.49]] L_ner_u2 =[[0.23,0.27, 0.34, 0.37, 0.35, 0.21, 0.31, 0.03],\ [0.11,0.20, 0.26, 0.25, 0.24, 0.35, 0.31, 0.15],\ [0.08,0.15, 0.20, 0.22, 0.17, 0.18, 0.24, 0.28],\ [0.072,0.33,0.38, 0.40, 0.48, 0.42, 0.41, 0.28],\ [0.080,0.30,0.32, 0.32, 0.32, 0.33, 0.24, 0.34],\ [0.068,0.22,0.24, 0.25, 0.29, 0.30, 0.28, 0.21],\ [0.067,0.22,0.21, 0.26, 0.18, 0.17,0.075, 0.11],\ [0.093,0.36,0.31, 0.30, 0.25, 0.28, 0.16,0.028],\ [0.076,0.34,0.36, 0.38, 0.24, 0.47, 0.27],\ [0.097,0.14,0.20, 0.16, 0.23, 0.092,0.22,0.026]] L_ner_d2 =[[1.0, 0.24, 0.17, 0.14, 0.16, 0.30, 0.20, 0.50],\ [0.29, 0.21, 0.15, 0.16, 0.17, 0.06, 0.099,0.29],\ [0.24, 0.17, 0.12, 0.10, 0.15, 0.15, 0.08,0.074],\ [0.16, 0.24, 0.19, 0.17, 0.15, 0.09, 0.16, 0.33],\ [0.30, 0.19, 0.18, 0.18, 0.18, 0.17, 0.26, 0.18],\ [0.14, 0.18, 0.15, 0.14, 0.10, 0.095,0.11, 0.21],\ [0.19, 0.14, 0.15, 0.11, 0.19, 0.19, 0.29, 0.28],\ [0.40, 0.17, 0.21, 0.23, 0.27, 0.25, 0.37, 0.53],\ [0.20, 0.17, 0.16, 0.14, 0.27, 0.042, 0.27],\ [0.22, 0.16, 0.10, 0.14,0.072, 0.21, 0.08, 0.30]] rho_n2 =[[-2.84,-2.90,-3.34,-4.00,-4.92,-4.92, -5.22,-5.07],\ [-2.95,-3.17,-3.46,-4.24,-4.76,-5.41, -5.23,-5.44],\ [-2.95,-3.11,-3.44,-3.81,-4.37,-4.48, -4.90,-5.14],\ [-2.99,-3.24,-3.89,-4.54,-5.27,-5.33, -5.69,-5.89],\ [-3.32,-3.51,-4.06,-4.74,-5.28,-5.43, -6.08,-5.70],\ [-3.29,-3.54,-4.02,-4.45,-5.11,-5.56, -5.37,-6.07],\ [-3.43,-3.61,-4.19,-4.56,-5.09,-5.34, -5.70,-5.75],\ [-3.88,-3.98,-4.64,-5.33,-5.73,-6.27, -6.14,-6.77],\ [-3.85,-4.28,-5.05,-5.60,-5.68,-6.44, -6.59],\ [-4.43,-4.91,-5.46,-5.58,-5.89,-6.23, -6.26,-6.91]] rho_ner_u2=[[0.08,0.024,0.038,0.083,0.28,0.28 , 0.45, 0.34],\ [0.048,0.027,0.036,0.089,0.17,0.45, 0.34, 0.45],\ [0.062,0.024,0.032,0.048,0.096, 0.11,0.18,0.25],\ [0.042,0.018,0.035,0.073,0.180, 0.20,0.34,0.45],\ [0.045,0.019,0.033,0.072,0.15, 0.17,0.45,0.25],\ [0.040,0.022,0.033,0.055,0.13, 0.22,0.17,0.45],\ [0.061,0.020,0.035,0.055,0.099, 0.14,0.22,0.25],\ [0.044,0.022,0.044,0.11, 0.16, 0.34, 0.28,0.76],\ [0.048,0.025,0.058,0.13, 0.24, 0.34, 0.45],\ [0.084,0.058,0.11 ,0.24, 0.20, 0.28, 0.28,0.76]] rho_ner_d2=[[0.07,0.023,0.035,0.070,0.25,0.25 , 0.37, 0.30],\ [0.043,0.026,0.033,0.074,0.16,0.37, 0.30, 0.37],\ [0.054,0.023,0.030,0.043,0.079,0.086,0.17,0.22],\ [0.038,0.017,0.032,0.062,0.17,0.19, 0.30, 0.37],\ [0.041,0.019,0.031,0.062,0.11,0.16, 0.37, 0.22],\ [0.037,0.021,0.031,0.049,0.098,0.20,0.16, 0.37],\ [0.054,0.019,0.032,0.049,0.081,0.11,0.20, 0.22],\ [0.040,0.021,0.040,0.085,0.15, 0.30, 0.25,0.52],\ [0.043,0.024,0.051,0.10, 0.15, 0.30, 0.37],\ [0.070,0.051,0.087,0.16,0.19, 0.25, 0.25, 0.52]] fig = plt.figure() pre_chain = 12 pre_chain = '02' chains = [ '01a_1', '01b', '01c', '01d', '01e', '01f_1', '01g', '01h', '01i' ] #chains_2001 DR4 chains = [ '01a_4', '01b_2', '01c_2', '01d_2', '01e_2', '01f_2', '01g', '01h_2', '01i_2' ] #chains_2001 DR4 remove phi2 chains = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'] #z = [0, 0.5, 1 , 1.5, 2, 2.3, 2.6, 3, 3.5, 4] #old #z = [ 0.7, 1 , 1.35, 1.7, 2, 2.3, 2.6, 3, 3.5, 4]# older print expt.parameters n, m = 3, 3 z_new = True Replot = False z_nov = [0.31, 0.5, 0.69, 0.9, 1.16, 1.44, 1.81, 2.18, 2.81, 3.71, 4.83] if z_new: z = [0.1, 0.3, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 2.0, 2.5, 3.2, 4.0] z = [0.1, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 2.0, 2.5, 3.2, 4.0] #chains=['11a','11b','11c_3','11d_3','11e_3','11f_3','11g_3','11h','11i','11j', '11k', '11l' ,'11m', '11n']#chains_201111 else: z = [0.1, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 2.0, 2.5, 3.2, 4.0] #oldest ;) model = modelFamily if model in [ 'LFsch', 'LFdpl_pl', 'LFpl_dpl', 'LFdpl_dpl', 'LFdpl_dpl_z', 'LFlognorm_dpl', 'LFpl_lognorm' ]: Lnorm = params[expt.parameters.index('LNORM')] Lstar = params[expt.parameters.index('LSTAR')] Lslope = params[expt.parameters.index('LSLOPE')] #Lzevol=params[expt.parameters.index('LZEVOL')] if model in [ 'LFdpl_pl', 'LFpl_dpl', 'LFdpl_dpl', 'LFdpl_dpl_z', 'LFlognorm_dpl' ]: Lslope2 = params[expt.parameters.index('LSLOPE2')] if model in [ 'LFlognorm', 'LFpl', 'LFdpl', 'LFdpl_pl', 'LFpl_dpl', 'LFlognorm_dpl', 'LFpl_lognorm', 'LFdpl_dpl', 'LFdpl_dpl_z' ]: Lnorm_2 = params[expt.parameters.index('LNORM_2')] Lstar_2 = params[expt.parameters.index('LSTAR_2')] Lslope_2 = params[expt.parameters.index('LSLOPE_2')] if model in ['LFdpl_dpl', 'LFdpl', 'LFdpl_dpl_z']: Lslope2_2 = params[expt.parameters.index('LSLOPE2_2')] if model in ['LFlognorm', 'LFlognorm_dpl', 'LFpl_lognorm']: Lsigma = params[expt.parameters.index('LSIGMA')] if modelFamily in [ 'LFdpl_dpl_z', 'LFevol', 'LFevol_dpl', 'LFevol_logn', 'LFevol_logn_L' ]: alpha_agn = params[expt.parameters.index('A_agn')] alpha_SF = params[expt.parameters.index('A_SF')] beta_agn = params[expt.parameters.index('B_agn')] beta_SF = params[expt.parameters.index('B_SF')] if modelFamily in ['LFevol_dpl_s', 'LFevol_logn_s']: alpha_SF = params[expt.parameters.index('A_SF')] beta_SF = params[expt.parameters.index('B_SF')] if modelFamily in ['LFevol_dpl_a', 'LFevol_logn_a']: alpha_agn = params[expt.parameters.index('A_agn')] beta_agn = params[expt.parameters.index('B_agn')] Lmin = params[expt.parameters.index('LMIN')] LMIN = params[expt.parameters.index('LMIN')] Lmax = params[expt.parameters.index('LMAX')] loglike = 0. loglike_nov = 0. print model bins3 = numpy.arange(15., 30.2, 0.2) #xbins = numpy.arange(fsigma,26.2,0.4)#bin +0.2 sbin4 = get_sbins(10**bins3, z[0], get_dl(z[0])) * 1e6 expt2 = countModel(modelFamily, nlaws, setf, [dataset], floatNoise, doRedshiftSlices=True, mybins=sbin4) sbin5 = medianArray(sbin4) phi_tot3 = expt2.evaluate(params) #print phi_tot3 #print len(phi_tot3[0]), len(bins3) for num in range(1, 10): #num = 1. print num print 'new num ', num z_min, z_max, z_m = get_z(num, False) dl = get_dl(z_m) Vmax = get_Vmax(z_min, z_max) dsdl = get_dsdl(z_m, dl) #z_m = (z_min + z_max)/2 dl = get_dl(z_m) print z_min, z_max, 'lmin ', SMIN = get_sbins(numpy.power(10, Lmin), z_m, dl) * 1e6 SMAX = get_sbins(numpy.power(10, Lmax), z_m, dl) * 1e6 sigma, fsigma, Lmin = numpy.log10( get_Lbins([SURVEY_NOISE, SURVEY_NOISE * 5, LMIN], z_m, dl, 'muJy') * (1.4 / 3)**(-.7)) sigma2, fsigma2 = numpy.log10(get_Lbins([450, 2400], z_m, dl, 'muJy')) print Lmin print SURVEY_NOISE, SURVEY_NOISE * 5, SURVEY_AREA print num, '%s/recon_stats_%s.txt' % (outdir, chains[num - 1]) s = numpy.loadtxt('%s/recon_stats_%s.txt' % (outdir, chains[num - 1])) print chains[num - 1] xrecon = s[:-1, 0] yrecon = s[:-1, 1] yrecon_d = s[:-1, 2] yrecon_u = s[:-1, 3] yrecon_rms = s[:-1, 4] yrecon_avr = s[:-1, 5] yrecon_rms_down = yrecon_rms #area = 6672*sqDeg2sr #143165.15 49996.49 59876.8861135 sbin3 = get_sbins(10**bins2, z_m, dl) * 1e6 #sbin4 = get_sbins(10**bins3,z_m,dl)*1e6 xreco = get_Lbins(xrecon, z_m, dl, 'muJy') #*(1.4/3)**(-.7) yreco = yrecon print SMIN, SMAX #sys.exit() lin_yrecon = numpy.log10(yreco) #print xrecon lin_xrecon = numpy.log10(xreco) #bins3 = numpy.arange(15.,30.,0.4) bins3 = numpy.log10(get_Lbins(sbin4, z_m, dl, 'muJy')) #*(1.4/3)**(-.7)) #bins = numpy.arange(fsigma,26.2,0.4)#bin +0.2 #sbin4 = get_sbins(10**bins3,z_m,dl)*1e6 if not os.path.isfile('cos_data/cos_s%s_LF.el' % num) and z_new or not os.path.isfile( 'cos_data/cos_s%s_LF_old.el' % num) and not z_new or Replot: print 'doing all calculations' #l,z_l = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,21), F='uJy',L=True,getz=True) #l2,z_l2 = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,24), F='uJy',L=True,getz=True) if z_new: L, z_L = open_anytype('cos_data/cos_s%s.txt' % num, (2, 3), F='uJy', L=True, getz=True, band='S') print 'this is the new z bins (please check if lumfuncUtils and cos_manifest are using the right z)' else: L, z_L = open_anytype('cos_data/cos_s%s_old.txt' % num, (2, 3), F='uJy', L=True, getz=True, band='S') print 'this is the old z binning style. (please check if lumfuncUtils and cos_manifest are using the right z)' L_c, z_c = open_anytype('cosmos_counter_parts_II.txt', (3, 4), [z_min, z_max], F='uJy', L=True, getz=True, band='S') z_c2, S_c2, L_c2 = numpy.loadtxt('cosmos_counter_parts_II.txt', unpack=True, usecols=(3, 4, 5)) L_c2 = L_c2[(z_c2 < z_max) & (z_c2 > z_min)] S_c2 = S_c2[(z_c2 < z_max) & (z_c2 > z_min)] z_c2 = z_c2[(z_c2 < z_max) & (z_c2 > z_min)] #rho_1,er1 = calc_Vmax(calcu_zeff(z_l,l,11.5e-32),l,bins,z_max,z_min,area) #rho_2,er2 = calc_Vmax(calcu_zeff(z_l2,l2,11.5e-32),l2,bins,z_max,z_min,area) rho_3, er3 = calc_Vmax(calcu_zeff(z_L, L, 1.15e-31), L, bins, z_max, z_min, area) #rho_4,er4 = calc_Vmax(99.,L,bins2,z_max,z_min,area) rho_5, er5 = calc_Vmax(calcu_zeff(z_c, L_c, 1.15e-31), L_c, bins, z_max, z_min, area) rho_6, er6 = calc_Vmax(calcu_zeff(z_c2, 10**L_c2, 1.15e-31), 10**L_c2, bins, z_max, z_min, area) if z_new: f = open('cos_data/cos_s%s_LF.el' % num, 'w') else: f = open('cos_data/cos_s%s_LF_old.el' % num, 'w') for i in range(len(bins)): f.write('%5.1f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f\n' % (bins[i], rho_3[i], er3[i], rho_5[i], er5[i], rho_6[i], er6[i])) f.close() dl_c = get_dl(z_c2) L_c3 = numpy.log10( get_Lbins(S_c2, z_c2, numpy.array(dl_c), 'muJy') * (1.4 / 3.)**(-.7)) else: if z_new: #bins,rho_3,er3,rho_5,er5,rho_6,er6 = numpy.loadtxt('cos_data/cos_s%s_LF.el'%num, unpack=True) bins, rho_3, er3, rho_5, er5, rho_6, er6, rho_7, er7, rho_8, er8, rho_9, er9 = numpy.loadtxt( 'cos_data/cos_s%s_LF_2.el' % num, unpack=True) print 'Using stored RLF for the new z (The one with more z bins). If you want to calculate the plot the set "Replot=True"' else: bins, rho_3, er3, rho_5, er5, rho_6, er6 = numpy.loadtxt( 'cos_data/cos_s%s_LF_old.el' % num, unpack=True) print 'Using stored RLF for the is old z bins. If you want to calculate the plot the set "Replot=True"' ssd = numpy.loadtxt('%s/data_cos_s%s.txt' % (outdir, num)) #ssd = numpy.loadtxt('cos_data/data_cos_s%s.txt'%(num)) ssbin2 = ssd[:, 0] #2 ssbin1 = ssd[:, 2] #0 Nbin2 = ssd[:, 3] zbin3 = ssd[:, -1] dl1 = get_dl(z_min) dl2 = get_dl(z_max) #dl3 = get_dl(zbin3) Ncount = sum(Nbin2[fsigma > ssbin1]) Llmin = numpy.log10( get_Lbins([fsigma / numpy.sqrt(Ncount)], z_min, get_dl(z_min), 'muJy'))[0] Llmin *= (1.4 / 3.)**(-.7) print Llmin dn = expt.realise(params) nov_real = expt.realise([2.3, 2.95, 2.86, -0.29, -0.7, 19.5, 26.0]) #sys.exit() fig.add_subplot(n, m, get_changed_multiplot(n, m, num)) plt.rc('lines', linewidth=2) #plt.errorbar(bins,rho_1 ,yerr=er1,fmt='*r',label='detected extracted',markersize=11) #bin plt.errorbar(bins[1:], rho_3[1:], yerr=er3[1:], fmt='ob', label='extracted', markersize=8) #bin ''' if model in ['LFdpl','LFdpl_dpl']: faint =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3), Lstar_2,Lslope_2,Lslope2_2,Lnorm_2) elif model in ['LFpl','LFdpl_pl']: faint =lumfuncUtils.powerlaw(numpy.power(10,bins3), Lstar_2,Lslope_2,Lnorm_2) elif model in ['LFpl_dpl']: faint =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar,Lslope,Lslope2,Lnorm) elif model in ['LFdpl_dpl_z']: faint =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar,Lslope,Lslope2,Lnorm) else: faint = lumfuncUtils.lognormpl(numpy.power(10,bins3), Lstar_2,Lslope_2,Lsigma,Lnorm_2) ''' #phi_dpl =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar ,Lslope,Lslope2,Lnorm) #phi_dpl #dpl = dm = 0.4 #05 hm = 0. Novak17 = lumfuncUtils.lognormpl( numpy.power(10, bins3) / (1 + z_nov[num - 1])**(3.16 - z_nov[num - 1] * 0.32), numpy.log10(1.85e21), 1.22, 0.63, numpy.log10(3.55e-3)) Novak18=[lumfuncUtils.LF(S,z_m,0,0,dl,[2.3,2.86, 2.95, -0.70, -0.29,0.01,28.],\ ['noise','A_agn','A_SF','B_agn','B_SF','LMIN','LMAX'],area=SURVEY_AREA,\ family='LFevol_logn') for S in sbin4/1.0e6] phi_tot2 = [lumfuncUtils.LF(S,z_m,0,0,dl,params,expt.parameters,area=expt.survey.SURVEY_AREA,\ family=modelFamily) for S in sbin5/1.0e6] L_1 = numpy.power(10, bins3) / (1 + z_m)**(2.86 - z_m * 0.7) L_2 = numpy.power(10, bins3) / (1 + z_m)**(2.95 - z_m * 0.29) L_4 = numpy.power(10, bins3) / (1 + z_m)**(alpha_SF + z_m * beta_SF) #L_3 = numpy.power(10,bins3)/(1 + z_m)**(alpha_agn+z_m*beta_agn) print z_m #print L_4 #print L_3 #sys.exit() phi_agn_n = lumfuncUtils.doublepowerlaw(L_1, 24.59, 1.27, 0.49, numpy.log10(10**(-5.5))) phi_sf_n = lumfuncUtils.lognormpl(L_2, numpy.log10(1.85e21), 1.22, 0.63, numpy.log10(3.55e-3)) phi_exp =[lumfuncUtils.LF(S,z_m,0,0,dl,[2.3,3, 5.58, -0.9, -1.99,0.01,28.],\ ['noise','A_agn','A_SF','B_agn','B_SF','LMIN','LMAX'],area=SURVEY_AREA,\ family='LFevol_logn') for S in sbin4/1.0e6] #Novak18= phi_agn_n+phi_sf_n #print 'this is Lminz', numpy.log10(10**18/(1 + z_m)**(alpha_SF+z_m*beta_SF)) #phi_agn=lumfuncUtils.doublepowerlaw(L_3,24.59,1.27,0.49,numpy.log10(2.5*10**(-5.5))) phi_agn = 0 phi_sf = lumfuncUtils.doublepowerlaw(L_4, 22.41, 2.4, 0.43, -3.50) #0.33 2.97 phi_sf = lumfuncUtils.lognormpl(L_4, numpy.log10(1.85e21), 1.22, 0.63, numpy.log10(3.55e-3)) phi_tot = phi_agn + phi_sf #for k in range(len(phi_sf)): # print bins3[k],numpy.power(10,bins3[k]), numpy.log10(L_4[k]), numpy.log10(L_3[k]), numpy.log10(phi_sf[k]), numpy.log10(phi_agn[k]),numpy.log10(phi_tot[k]) #sys.ek #phi_sf =lumfuncUtils.lognormpl(L_4,numpy.log10(1.85e21),1.22,0.63, numpy.log10(3.55e-3)) #plt.plot(bins3+hm,numpy.log10(faint)-dm,'--b' ,label='faint-end') #plt.plot(numpy.log10(10**bins3 *(1.4/3)**(-.7))+hm,numpy.log10(faint)-dm,'--b' ,label='faint-end') #plt.plot(numpy.log10(10**bins3),numpy.log10(phi_sf)-dm,'--c', label=' SF') #plt.plot(bins3,numpy.log10(phi_agn)-dm,'--r', label='AGN') #plt.plot(numpy.log10(10**bins3),numpy.log10(phi_tot)-dm,'--g',linewidth=3, label='Tot') #plt.plot(numpy.log10(10**bins3[:-1]),numpy.log10(phi_tot2)-dm,'-k',linewidth=4, label='Tot2') #plt.plot(numpy.log10(10**bins3 *(1.4/3)**(-.7)),numpy.log10(phi_exp)-dm,'-k',linewidth=4, label='Expected') plt.errorbar(lin_xrecon + hm, lin_yrecon - 0.4, fmt='-b', label='MAP', linewidth=3) #plt.plot(numpy.log10(10**bins3[:-1] *(1.4/3)**(-.7)),numpy.log10(phi_tot3[num-1])-dm,'-r',linewidth=3, label='Tot3') plt.errorbar(lin_xrecon + hm, numpy.log10(yrecon_avr) - dm, fmt='-c', label='Average') plt.errorbar(numpy.array(L_n2[num - 1]), numpy.array(rho_n2[num - 1]) - 0.4, xerr=[L_ner_d2[num - 1], L_ner_u2[num - 1]], yerr=[rho_ner_d2[num - 1], rho_ner_u2[num - 1]], fmt='sk', label='Total RLF Novak et al 2018') #plt.errorbar(bins3, numpy.log10(Novak17)-0.4,fmt='--b',label='Local SF Novak et al 2017') #plt.plot(bins3,numpy.log10(phi_agn_n),'--g', label='Local AGN Smolcic et al. 2017') plt.errorbar(numpy.log10(10**bins3), numpy.log10(Novak18) - 0.4, fmt='--k', label='Total RLF Novak et al 2018') #plt.plot(L_s, numpy.log10(rho_1), '*m',label='bins LF',markersize=8) #plt.errorbar(bins,rho_5 ,yerr=er5,fmt='*r',label='Total',markersize=10) #bin #plt.errorbar(bins,rho_6 ,yerr=er6,fmt='>g',label='Total LF',markersize=10) #bin plt.fill_between(lin_xrecon + hm, numpy.log10((yrecon_d)) - dm, numpy.log10(yrecon_u) - dm, color='k', alpha=0.2) #plt.axvline(Lmin,color='r') print 'This is the dn' print z_m #print dn.keys() ''' for key in dn.keys(): if round(key,2)==round(z_m,2):z_m=key dn=dn[z_m] nov_real=nov_real[z_m] #print nov_real #dn=dn[round(z_m,2)] for i in range(len(ssbin1)): loglike_i= Nbin2[i]*numpy.log(dn[i]) + Nbin2[i] - (Nbin2[i] + 0.5)*numpy.log(Nbin2[i]) - 0.5*numpy.log(2*numpy.pi) - dn[i] loglike_nov_i= Nbin2[i]*numpy.log(nov_real[i]) + Nbin2[i] - (Nbin2[i] + 0.5)*numpy.log(Nbin2[i]) - 0.5*numpy.log(2*numpy.pi) - nov_real[i] if nov_real[i]>0:loglike_nov+=loglike_nov_i if dn[i]>0:loglike+=loglike_i print '%10.5f %8.2d %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f'%(ssbin1[i], Nbin2[i], dn[i],nov_real[i],loglike_i,loglike_nov_i,loglike, loglike_nov) ''' plt.ylim(-7.6, -1.6) plt.axvline(fsigma, color='k', linestyle='dashed') plt.axvline(sigma, color='g') #plt.axvline(Llmin,color='r',linewidth=5) print 'Is this still num ', num if num < 2 or num < 6 and num > 3 or num > 6 and num < 9: plt.xticks(visible=False) plt.ylim(-7.6, -1.6) if num < 4: plt.xlim(19, 25.8) plt.text(19.2, -7., '%.1f < z < %.1f' % (z_min, z_max), fontsize=19) # \n $M_i$ < -22 elif num < 7: plt.xlim(20.8, 27.2) plt.text(21., -7., '%.1f < z < %.1f' % (z_min, z_max), fontsize=19) # \n $M_i$ < -22 else: plt.xlim(21.3, 27.8) plt.text(21.5, -7., '%.1f < z < %.1f' % (z_min, z_max), fontsize=19) # \n $M_i$ < -22 if num == 3: plt.xticks([19, 20, 21, 22, 23, 24, 25], fontsize=22) if num == 6: plt.xticks([21, 22, 23, 24, 25, 26, 27], fontsize=22) if num == 9: plt.xticks([22, 23, 24, 25, 26, 27], fontsize=22) plt.legend(frameon=False).draggable() if num == 1 or num == 2 or num == 3 or num == 10: plt.yticks([-2., -3, -4, -5, -6], fontsize=22) if num == 3: plt.yticks([-2., -3, -4, -5, -6, -7], fontsize=22) continue plt.yticks(visible=False) fig.text(0.06, 0.5, r'$\rm{log_{10}[\Phi /(Mpc^{-3}mag^{-1})]}$', fontsize=30, ha='center', va='center', rotation='vertical') fig.text(0.5, 0.04, r'$\rm{log_{10}[L_{1.4}/(W}$ $\rm{Hz^{-1})]}$', fontsize=30, ha='center', va='center') #plt.text(23.9,-9.7,'%s'%outdir,fontsize = 16 ) # \n $M_i$ < -22 plt.tick_params(axis='both', which='major', labelsize=20, width=3) plt.tick_params(axis='both', which='minor', labelsize=10, width=2) plt.subplots_adjust(hspace=0, wspace=0) #plt.xtick(fontsize=15) #plt.ytick(fontsize=15) #plt.ylim(-10.2,-5.8) #plt.ylim(-11,-5.5) #ax.xaxis.set_minor_locator(AutoMinorLocator()) #ax.yaxis.set_minor_locator(AutoMinorLocator()) #print truth['LMIN'] plotf = '%s/LF_recon_s1.pdf' % (outdir) plt.show() return 0
def main(): """ """ # Import the settings variables print 'Settings file is %s' % param_file # Import the settings variables set_module = importlib.import_module(settingsf) globals().update(set_module.__dict__) # Set up the experiment #bins=[12.679592, 31.84969509, 80.00281696, 200.9579904, 504.78364938, 1010, 3267.95919972]# 0.4 bins chains = [ '01a_3', '01b_3', '01c_3', '01d_3', '01e', '01f', '01g', '01h', '01i', '01j' ] #chains_1912 including peter chains = [ '01a_3', '01b_2', '01c_2', '01d_2', '01e_2', '01f_2', '01g', '01h_2', '01i_2', '01j_3' ] #chains_2001 DR4 remove phi2 chains = [ '01a_8', '01b_8', '01c_8', '01d_8', '01e_8', '01f_8', '01g_7', '01h_8', '01i_8', '01j_7' ] #chains_2001 DR4 dpl_dpl chains = [ '01a_9', '01b_9', '01c_9', '01d_9', '01e_9', '01f_9', '01g_9', '01h_9', '01i_9', '01j_9' ] #chains_2001 DR4 dpl_dpl no mass selection chains = [ '02a_4_1', '02a_4_2', '02b_4', '02c_4', '02d_4', '02e_4', '02f_4', '02g_4', '02h_4', '02i_4', '02j_3' ] chains = [ '02a_z_6x_1', '02a_z_6x_2', '02b_z_7x', '02c_z_7x', '02d_z_7x', '02e_z_7x', '02f_z_7x', '02g_z_7x', '02h_z_7x', '02i_z_7x', '02j_z_7x' ] chains = [ '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3', '02z_31_3' ] chains = [ '02a_z_8x', '02b_z_8x', '02c_z_8x', '02d_z_8x', '02e_z_8x', '02f_z_8x', '02g_z_8x', '02h_z_8x', '02i_z_8x', '02j_z_8x' ] #fixed model newz area chains = [ '02a', '02b', '02c', '02d', '02e', '02f', '02g', '02h', '02i', '02j' ] #lgnorm #chains_2001 DR4 newz new_area #chains=['02a_3','02b_3','02c_3','02d_3','02e_3','02f_3','02g_3','02h_3','02i_3','02j_3'] #mass <10 #chains=['02a_z_6e','02b_z_6e','02c_z_6e','02d_z_6e','02e_z_6e','02e_z_6e','02g_z_6e','02h_z_6e','02i_z_6e','02j_z_6e']# New fixed 6e (using a) #chains=['02a_z_6f','02b_z_6f','02c_z_6f','02d_z_6f','02e_z_6f','02e_z_6f','02g_z_6f','02h_z_6f','02i_z_6f','02j_z_6f']# New fixed 6f (using a) #chains=['02a_z_6g','02b_z_6g','02c_z_6g','02d_z_6g','02e_z_6g','02e_z_6g','02g_z_6g','02h_z_6g','02i_z_6g','02j_z_6g']# New fixed 6f (using a) #chains=['01a_5','01b_5','01c_5','01d_5','01e_5','01f_5','01g_5','01h_5','01i_5','01j_5'] #stellar mass>10.2 chains = [ '02a_5', '02b_5', '02c_5', '02d_5', '02e_5', '02f_5', '02g_5', '02h_5', '02i_5', '02j' ] #stellar mass>10 chains = [ '02a_3', '02b_3', '02c_3', '02d_3', '02e_3', '02f_3', '02g_3', '02h_3', '02i_3', '02j_3' ] #stellar mass<10. logn #chains=['01a','01b','01c','01d','01e','01f','01g','01h','01i','01j'] #dpl #chains_2001 DR4 newz new_area #chains=['02a_z_5x','02b_z_5x','02c_z_5x','02d_z_5x','02e_z_5x','02f_z_5x','02g_z_5x','02h_z_5x','02i_z_5x','02j_z_5x']#stellar mass limit mass<10 #chains=['02a_z_5f','02b_z_5f','02c_z_5f','02d_z_5f','02e_z_5f','02f_z_5f','02g_z_5f','02h_z_5f','02i_z_5f','02j_z_5x']#stellar mass limit mass<10 #chains=['02a_z_8x_6_1','02b_z_8x_6_1','02c_z_8x_6_1','02d_z_8x_6_1','02e_z_8x_6_1','02f_z_8x_6_1','02g_z_8x_6_3','02h_z_8x_6_10','02i_z_8x_6_10','02j_z_8x_6_10']#fixed cut data more bins _el lmin lose #chains=['02a_z_8x_6_1','02b_z_8x_6_1','02c_z_8x_6_1','02d_z_8x_6_1','02e_z_8x_6_1','02f_z_8x_6_1','02g_z_8x_6_1','02h_z_8x_6_3','02i_z_8x_6_3','02j_z_8x_6_4'] #chains='02z_31_5_15' pre_chain = '11' bins = numpy.logspace(0, 3.01, 10) bins = list(bins) bins.append(2e3) bins1 = numpy.arange(15.2, 30.2, 0.1) nbins = len(bins) z_m = redshifts[0] dl = get_dl(z_m) sbin1 = get_sbins(10**bins1, z_m, dl) * 1e6 expt = countModel(modelFamily, nlaws, settingsf, [dataset], floatNoise, doRedshiftSlices=True, mybins=sbin1) Lmin = 21 #21.5# 19. 21.5 Lmax = 26. z_med = [] SFRD, SFRD_l, SFRD_h = [], [], [] sfrd_map = [] nov_z, nov_z_u, nov_z_l, nov_sfrd, nov_sfrd_u, nov_sfrd_l, Lower, lw_up, lw_lw = numpy.loadtxt( 'novak_2017.txt', usecols=(0, 1, 2, 3, 4, 5, 6, 7, 8), unpack=True) print modelFamily evaluations = [] evaluate = True for num in range(1, 11): print num z_min, z_max, z_m = get_z(num, z_new=False) z_med.append(z_m) print z_m #f='%sev.dat'% outstem f = '1-post_equal_weights.dat' f = os.path.join('chains_20%s%s' % (pre_chain, chains[num - 1]), f) #f=os.path.join('chains_20%s%s'%(pre_chain,chains),f) print 'os.pathf', f #sfrd_map # Load equally-weighted posterior samples x = numpy.genfromtxt(f) nsamp = x.shape[0] ncols = x.shape[1] # The fifth [seventh] column is the posterior value # There must be a better way, but: #ncols = 14 z = numpy.zeros((nsamp, ncols - 1 + expt.nbins)) z[:, :-(expt.nbins - 1)] = x # Shift posterior values to end z[:, -1] = z[:, ncols - 1] # Copy... z[:, ncols - 1] = 0.0 # ...and blank print 'outstem', outstem # Fetch best-fit parameters and calculate best-fit line ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_20%s%s'%(pre_chain,chains[num-1]),outstem)) drawmap = ana.get_best_fit()['parameters'] #ana=pymultinest.analyse.Analyzer(ncols-1,\ # outputfiles_basename=os.path.join('chains_20%s%s'%(pre_chain,chains),outstem)) #drawmap=ana.get_best_fit()['parameters'] if True: print '--> Calculating *ML* reconstruction' drawmap = drawmap #ymap=expt.evaluate(drawmap)[0]#,expt.binsMedian) q_l, q, q_h = get_q(z_m) yrecon, lin_xrecon2, str_q_l = 0, 0, 0 sfrd = [] sfrd_map.append( get_sfrd_z(yrecon, lin_xrecon2, str_q_l, drawmap, expt.parameters, modelFamily, q_h, 26., Lmin, z_m)[0]) print drawmap for isamp in xrange(nsamp): #z[isamp,ncols-1:]=expt.evaluate(z[isamp,:])[0]#,expt.binsMedian) #Lmin =z[isamp,:][expt.parameters.index('LMIN')] Lmax = z[isamp, :][expt.parameters.index('LMAX')] #sfrd_z_l=get_sfrd_z(yrecon,lin_xrecon2,str_q_l,z[isamp,:],expt.parameters,modelFamily,q_l ,Lmax,Lmin,z_m)[0] #lower limit #sfrd_z_h=get_sfrd_z(yrecon,lin_xrecon2,str_q_l,z[isamp,:],expt.parameters,modelFamily,q_h ,Lmax,Lmin,z_m)[0] #upper limit sfrd_z = get_sfrd_z(yrecon, lin_xrecon2, str_q_l, z[isamp, :], expt.parameters, modelFamily, q, Lmax, Lmin, z_m)[0] #26, 21.5 #plt.plot(z_m,numpy.log10(sfrd_z),'.', alpha=0.02) #plt.plot(z_m,numpy.log10(sfrd_z_l),'.', alpha=0.01) #plt.plot(z_m,numpy.log10(sfrd_z_h),'.', alpha=0.01) #sfrd.append(sfrd_z_l) sfrd.append(sfrd_z) #sfrd.append(sfrd_z_h) #plt.show() # Blanking, 0.0 -> NaN #sys.exit() s_med, dlow, dhigh, s_low, s_high = calculate_confidence(sfrd, alpha=0.95, ret_all=True) SFRD.append(s_med) SFRD_l.append(s_low) SFRD_h.append(s_high) ''' plt.hist(numpy.log10(sfrd),20) plt.axvline(numpy.log10(s_med),color='r') plt.axvline(numpy.log10(s_low),color='k') plt.axvline(numpy.log10(s_high), color='k') plt.xlabel(r'$\rm{\log10(SFRD[M_\odot yr^{-1} Mpc^{-3}])}$',fontsize=20) plt.show() ''' sfrdf = 'sfrd_chains_20%s%s_Lmin_%s' % (pre_chain, chains[0], '21_5') #sfrdf='sfrd_chains_20%s%s_Lmin_%s'%(pre_chain,chains,'21_5') fils = open(sfrdf, 'w') hdr = '# median redshift sfrd_median sfrd_low sfrd_high' fils.write('%s\n' % hdr) for i in range(len(SFRD)): fils.write('%f %f %f %f \n' % (z_med[i], SFRD[i], SFRD_l[i], SFRD_h[i])) fils.close() z_b = numpy.arange(0, 60) / 10. Ilbert_h = sfrd_Behroozi(z_b, z0=0.95 - 0.410, A=-1., B=0.194 - 0.082, C=0.111 + 0.04) Ilbert_l = sfrd_Behroozi(z_b, z0=0.95 + 0.343, A=-1., B=0.194 + 0.128, C=0.111 - 0.029) G_x, Gruppioni = numpy.loadtxt('Gruppioni_2013', unpack=True, delimiter=',') G_x1, Gruppioni_yup = numpy.loadtxt('Gruppioni_2013_y_up', unpack=True, delimiter=',') G_x2, Gruppioni_ydown = numpy.loadtxt('Gruppioni_2013_y_down', unpack=True, delimiter=',') Burg_z, Burg_FIR, Burg_FIR_er, Burg_tot, Burg_tot_er = numpy.loadtxt( 'Burgarella_2013', unpack=True) plt.fill_between(z_med, numpy.log10((SFRD_l)), numpy.log10(SFRD_h), color='b', alpha=0.2) plt.errorbar(z_med, numpy.log10(SFRD), fmt='*', markersize=14, label='Faint LF function') #plt.errorbar(z_med,numpy.log10(sfrd_map),fmt='pr',markersize=14, label='Faint LF function') plt.errorbar(z_b, numpy.log10(sfrd_Behroozi(z_b)), fmt='--', markersize=12, label='Behroozi et al. 2013') plt.errorbar(z_b, numpy.log10( sfrd_Behroozi(z_b, z0=0.95, A=-1., B=0.194, C=0.111)), fmt=':', markersize=12, label='IIlbert et al. 2013 (UltraVista DR1)') plt.errorbar(z_b, numpy.log10(sfrd_Madau(z_b)), fmt='.-', markersize=12, label='Madau&Dickinson 2014') try: plt.errorbar(numpy.array(nov_z), numpy.array(nov_sfrd), xerr=[nov_z_l, nov_z_u], yerr=[nov_sfrd_l, nov_sfrd_u], fmt='sk', label='Total SFRD Novak et al 2017') except: print '' plt.ylabel(r'$\rm{\log10(SFRD[M_\odot yr^{-1} Mpc^{-3}])}$', fontsize=30) plt.xlabel(r'$\rm{z} $', fontsize=30) #plt.text(23.9,-9.7,'%s'%outdir,fontsize = 16 ) # \n $M_i$ < -22 plt.tick_params(axis='both', which='major', labelsize=20, width=3) plt.tick_params(axis='both', which='minor', labelsize=10, width=2) plt.show() return 0
def main(): """ """ print 'Settings file is %s' % setf # Import the settings variables set_module=importlib.import_module(setf) globals().update(set_module.__dict__) expt=countModel(modelFamily,nlaws,setf,[dataset],floatNoise) recon_expt=countModel(modelFamily,nlaws,setf,[dataset],floatNoise) #print expt.data #print expt.bins # Get MAP parameters print '\n'*5 print len(expt.parameters) ncols = len(expt.parameters) summf=os.path.join(outdir,'1-summary.txt') summary=numpy.genfromtxt(summf)[-1,:] drawmap=summary[-(ncols+2):-2] ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap=ana.get_best_fit()['parameters'] if dataset=='sdss': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf)==20: num = dataf[-5] print num else: num = dataf[-6:-4] d=numpy.genfromtxt('%s/%s'%(outdir,datafiles[0][4:])) print datafiles[0][4:] elif dataset=='cosmos': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf)==24: num = dataf[-5] print num else: num = dataf[-6:-4] d=numpy.genfromtxt('%s/%s'%(outdir,datafiles[0][8:])) print datafiles[0][8:] elif 'sim' in dataset: d=numpy.genfromtxt(os.path.join(outdir,'sim.txt')) #bins2 = numpy.arange(21.4,29.2,0.4) bins2 = numpy.arange(18.0,29.2,0.4) bins3 = numpy.arange(18.,29.2,0.01) print len(expt.parameters) print 'this is 1st num ', num #sys.exit() params = drawmap# [0] #for i in drawmap: # params.append(i) print params print expt.parameters #novak 2017 L_n =[21.77,22.15,22.46,22.77,23.09,23.34] rho_n =[-2.85,-2.88,-3.12,-3.55,-4.05,-4.63] L_ner_u =[0.23,0.18,0.19, 0.2, 0.21, 0.28] L_ner_d =[1.1, 0.15, 0.14, 0.12, 0.12, 0.048] rho_ner=[0.09, 0.03,0.0355,0.059,0.1,0.234] #novak 2018 nov_z,nov_z_u, nov_z_l, nov_sfrd, nov_sfrd_u, nov_sfrd_l, Lower, lw_up, lw_lw, nov_phi_L, nov_phi_L2 = numpy.loadtxt('novak_2017.txt',usecols=(0,1,2, 3,4,5, 6,7,8,-2,-1),unpack=True) #fig,ax = subplots() pre_chain='12' chains=['01a_4','01b_4','01c_4','01d_4','01e_4','01f_4','01g_4','01h_4','01i_4_2', '01j_4_2']#chains_191101 7x7 grid chains=['02a_4','02b_4','02c_4','02d_4','02e_4','02f_4','02g_5','02h_4','02i_4','02j_4']#chains_191101 7x7 grid lognorm #chains=['01a_5','01b_5','01c_5','01d_5','01e_5','01f_5','01g_5','01h_5','01i_5']#chains_191101 3x3 grid scaled #chains=['01a_6','01b_6','01c_6','01d_6','01e_6','01f_6','01g_6','01h_6','01i_6']#chains_191101 11x11 grid #chains=['01a','01b','01c','01d','01e','01f','01g','01h','01i'] #chains_1912 #includeing maskregion chains=['01a_3','01b_3','01c_3','01d_3','01e','01f','01g','01h','01i','01j'] #chains_1912 including peter #chains=['01a_2_1','01b_2_1','01c_2_1','01d_2','01e_2','01f_2','01g_2','01h_2','01i_2','01j_2'] #chains=['01a_4_1','01b_4_1','01c_4','01d_4','01e_4','01f_4_1','01g_4','01h_4','01i_4','01j_4'] #chains_1912 no mass selection #chains=['01a_3','01b_2','01c_2','01d_2','01e_2','01f_2','01g','01h_2','01i_2','01j_3'] #chains_2001 DR4 remove phi2 chains=['01a_5','01b_5','01c_5','01d_5','01e_5','01f_5','01g_5','01h_5','01i_5','01j_5'] #chains_2001 DR4 remove phi2 new changes chains4=['01a_8','01b_8','01c_8','01d_8','01e_8','01f_8','01g_7','01h_8','01i_8','01j_7'] #chains_2001 DR4 dpl_dpl chains=['01a_9','01b_9','01c_9','01d_9','01e_9','01f_9','01g_9','01h_9','01i_9','01j_9'] #chains_2001 DR4 dpl_dpl no mass selection #chains=['02a_z_9_6','02b_z_9_6','02c_z_9_6','02d_z_9_6','02e_z_9_6','02f_z_9_6','02g_z_9_6','02h_z_9_6','02i_z_9_6','02j_z_9_6'] chains=['01a_6_1','01a_8_2','01b_6_3','01c_6_3','01d_6_2','01e_6_2','01f_6_2','01g_6_2','01h_6_3','01i_6_3','01j_6_3'] #chains_2001 DR4 dpl_dpl Lmin=19 newz chains=['02a_4_1','02a_4_2','02b_4','02c_4','02d_4','02e_4','02f_4','02g_4','02h_4','02i_4','02j_3'] chains2=['02a_z_5x','02b_z_5x','02c_z_5x','02d_z_5x','02e_z_5x','02f_z_5x','02g_z_5x','02h_z_5x','02i_z_5x_2','02j_z_5x'] chains2=['02a_z_6x_1','02a_z_6x_2','02b_z_7x','02c_z_7x','02d_z_7x','02e_z_7x','02f_z_7x','02g_z_7x','02h_z_7x','02i_z_7x','02j_z_7x'] #chains=['01a','01b','01c','01d','01e','01f','01g','01h','01i','01j'] #dpl #chains_2001 DR4 newz new_area chains4=['02a','02b','02c','02d','02e','02f','02g','02h','02i','02j'] #lgnorm #chains_2001 DR4 newz new_area chains2=['02a_z_8x','02b_z_8x','02c_z_8x','02d_z_8x','02e_z_8x','02f_z_8x','02g_z_8x','02h_z_8x','02i_z_8x','02j_z_8x']#fixed model newz area chains=['02a_z_8x_4','02b_z_8x_4','02c_z_8x_4','02d_z_8x_4','02e_z_8x_4','02f_z_8x_4','02g_z_8x_4','02h_z_8x_4','02i_z_8x_4','02j_z_8x_4']#fixed model newz area #chains=['02a_z_8x_6','02b_z_8x_6','02c_z_8x_6','02d_z_8x_6','02e_z_8x_6','02f_z_8x_6','02g_z_8x_6','02h_z_8x_6','02i_z_8x_6','02j_z_8x_6']#fixed cut data more bins wrong noise chains=['02a_z_8x_6_1','02b_z_8x_6_1','02c_z_8x_6_1','02d_z_8x_6_1','02e_z_8x_6_1','02f_z_8x_6_1','02g_z_8x_6_3','02h_z_8x_6_3','02i_z_8x_6_3','02j_z_8x_6_3']#fixed cut data more bins _el lmin lose chains2=['02a_z_8x_6_1','02b_z_8x_6_1','02c_z_8x_6_1','02d_z_8x_6_1','02e_z_8x_6_1','02f_z_8x_6_1','02g_z_8x_6_3','02h_z_8x_6_3','02i_z_8x_6_3','02j_z_8x_6_3']#fixed cut data more bins _el lmin lose chains3='02z_31_5_15' print expt.parameters z_new=True Replot=False z_nov = [0.31, 0.5, 0.69, 0.9, 1.16, 1.44, 1.81, 2.18, 2.81, 3.71, 4.83] if z_new: z =[0.1,0.3,0.4,0.6,0.8,1.0,1.3,1.6,2.0,2.5,3.2,4.0] #chains=['11a','11b','11c_3','11d_3','11e_3','11f_3','11g_3','11h','11i','11j', '11k', '11l' ,'11m', '11n']#chains_191111 else: z=[0.1,0.4,0.6,0.8,1.0,1.3,1.6,2.0,2.5,3.2,4.0]#oldest ;) sfrd, sfrd_l,sfrd_h,z_med = numpy.zeros(len(z)+1),numpy.zeros(len(z)+1) ,\ numpy.zeros(len(z)+1) ,numpy.zeros(len(z)+1) sfrd_nov, sfrd_nov_l,sfrd_nov_h, sfrd_2, sfrd_3, sfrd_4, sfrd_2_l, sfrd_3_l, sfrd_2_h, sfrd_3_h = numpy.zeros(len(z)+1),\ numpy.zeros(len(z)+1), numpy.zeros(len(z)+1) ,numpy.zeros(len(z)+1),numpy.zeros(len(z)+1),\ numpy.zeros(len(z)+1), numpy.zeros(len(z)+1) ,numpy.zeros(len(z)+1),numpy.zeros(len(z)+1) ,\ numpy.zeros(len(z)+1) ana3=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_2012%s'%chains3,outstem)) drawmap3=ana3.get_best_fit()['parameters'] params3 = drawmap3 print 'chains_2002%s'%chains3 print params3 parameters2= ['noise', 'A_SF', 'A_agn', 'LMIN', 'LMAX'] parameters3= ['noise', 'A_agn', 'A_SF', 'B_agn', 'B_SF', 'LMIN', 'LMAX'] parameters3= ['noise', 'A_agn', 'A_SF', 'B_agn', 'B_SF', 'LMIN_1', 'LMIN_2', 'LMIN_3', 'LMIN_4', 'LMIN_5', 'LMIN_6', 'LMIN_7', 'LMIN_8', 'LMIN_9', 'LMIN', 'LMAX'] parameters4=['noise', 'LMIN', 'LMAX2', 'LMIN2', 'LMAX', 'LNORM', 'LSTAR', 'LSLOPE', 'LSLOPE2', 'LNORM_2', 'LSTAR_2', 'LSLOPE_2', 'LSLOPE2_2'] for num in range(1,11): #num = 1. print num z_min,z_max, z_m = get_z(num,False) dl = get_dl(z_m) Vmax = get_Vmax(z_min,z_max) dsdl = get_dsdl(z_m,dl) dl = get_dl(z_m) print z_min,z_m,z_max print expt.kind area = SURVEY_AREA*sqDeg2sr area1 = SURVEY_AREA*sqDeg2sr print SURVEY_AREA ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_20%s%s'%(pre_chain,chains[num-1]),outstem)) drawmap=ana.get_best_fit()['parameters'] drawmid=ana.get_stats()['marginals'] params = drawmap print params ana2=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join('chains_2012%s'%(chains2[num-1]),outstem)) drawmap2=ana2.get_best_fit()['parameters'] params2 = drawmap2 #ana4=pymultinest.analyse.Analyzer(ncols-1,\ # outputfiles_basename=os.path.join('chains_20%s%s'%(pre_chain,chains4[num-1]),outstem)) #drawmap4=ana4.get_best_fit()['parameters'] #params4 = drawmap4 print 'parameter 1 ', params print 'parameters 2 ', params2 print 'parameters 3 ', params3 settingf='chains_20%s%s/bayestack_settings.py'%(pre_chain,chains[num-1]) f = open(settingf, 'r') mod = f.readlines()[31].split()[0] print mod if 'logn' in mod: if 'dpl' in mod: model='LFlognorm_dpl' elif '_el' in mod: model='LFevol_logn_el' elif 'pl_' in mod: model='LFpl_lognorm' else: model='LFlognorm' elif 'LFdpl' in mod or 'LFpl' in mod: if 'LFdpl_dpl' in mod: model='LFdpl_dpl' elif '_pl' in mod: model='LFdpl_pl' elif 'LFpl_' in mod: model='LFpl_dpl' elif 'LFpl' in mod: model='LFpl' else: model = 'LFdpl' with open('chains_20%s%s/params.tex'%(pre_chain,chains[num -1])) as f: parameters=[line.split(None,1)[0] for line in f] #model='LFdpl_pl' print parameters print model print 'LSIGMA' in parameters if model in ['LFsch','LFdpl_pl','LFpl_dpl','LFdpl_dpl','LFlognorm_dpl']: Lnorm=params[parameters.index('LNORM')] Lstar=params[parameters.index('LSTAR')] Lslope=params[parameters.index('LSLOPE')] #Lzevol=params[parameters.index('LZEVOL')] if model in ['LFdpl_pl','LFpl_dpl','LFdpl_dpl','LFlognorm_dpl']: Lslope2=params[parameters.index('LSLOPE2')] if model in ['LFlognorm','LFpl', 'LFdpl', 'LFdpl_pl','LFpl_dpl', 'LFlognorm_dpl','LFdpl_dpl']: Lnorm_2=params[parameters.index('LNORM_2')] Lstar_2=params[parameters.index('LSTAR_2')] Lslope_2=params[parameters.index('LSLOPE_2')] if model in ['LFdpl_dpl','LFdpl']: Lslope2_2=params[parameters.index('LSLOPE2_2')] if model in ['LFlognorm','LFlognorm_dpl']: Lsigma = params[parameters.index('LSIGMA')] Lmin=params[parameters.index('LMIN')] Lmax=params[parameters.index('LMAX')] #Lmax2=params[parameters.index('LMAX2')] Lmax2=Lmax SMIN = get_sbins(numpy.power(10,Lmin),z_m,dl)*1e6 SMAX = get_sbins(numpy.power(10,Lmax),z_m,dl)*1e6 sigma,fsigma = numpy.log10(get_Lbins([SURVEY_NOISE,SURVEY_NOISE*5],z_m,dl,'muJy')*(1.4/3)**(-.7)) sigma2,fsigma2 = numpy.log10(get_Lbins([450,2400],z_m,dl,'muJy')) print z_m,dl, sigma,fsigma print SURVEY_NOISE,SURVEY_NOISE*5,SURVEY_AREA s=numpy.loadtxt('chains_20%s%s/recon_stats.txt'%(pre_chain,chains[num -1])) xrecon=s[:-1,0]; yrecon=s[:-1,1] yrecon_d=s[:-1,2]; yrecon_u=s[:-1,3] yrecon_rms = s[:-1,4] yrecon_avr = s[:-1,5] yrecon_rms_down = yrecon_rms yrec_u = yrecon_u - yrecon yrec_d = yrecon - yrecon_d #print yrecon_d #print yrecon #print yrecon_u #sys.exit() #y_err_u = sqrt(yrec) xreco = get_Lbins(xrecon,z_m,dl,'muJy')#*(1.4/3)**(-.7) xreco2 = get_Lbins(xrecon,z_m,dl,'muJy') yreco = yrecon lin_yrecon = numpy.log10(yreco) lin_xrecon = numpy.log10(xreco) lin_xrecon2 = numpy.log10(xreco2) q_l,q,q_h = get_q(z_m) #print z_nov[num -1] try: yrecon_nov = lumfuncUtils.lognormpl(get_Lbins(xrecon,z_m,dl,'muJy')/(1 + z_nov[num-1])**(3.16-z_nov[num-1]*0.32), numpy.log10(1.85e21),1.22,0.63, numpy.log10(3.55e-3)) except: print '' str_q_l = get_sfr_q(1.,q_l,xreco2) str_q_h = get_sfr_q(1.,q_h,xreco2) str_q = get_sfr_q(1.,q,xreco2) #sys.exit() lmin = 21.5#. 21.5 Lmax=26. sfrd_z_l=get_sfrd_z(yrecon,lin_xrecon2,str_q_l,params,parameters,model,q_l ,Lmax2,lmin,z_m)[0] #lower limit sfrd_z_h=get_sfrd_z(yrecon,lin_xrecon2,str_q_h,params,parameters,model,q_h ,Lmax2,lmin,z_m)[0] #upper limit sfrd_z =get_sfrd_z(yrecon,lin_xrecon2,str_q ,params,parameters,model,q ,Lmax2,lmin,z_m)[0] #26, 21.5 sfrd_2_z =get_sfrd_z(yrecon,lin_xrecon2,str_q ,params2,parameters2,'LFevol_logn_mat',q ,Lmax2,lmin,z_m)[0] sfrd_3_z =get_sfrd_z(yrecon,lin_xrecon2,str_q ,params3,parameters3,'LFevol_logn_L',q ,Lmax2,lmin,z_m)[0] #sfrd_4_z =get_sfrd_z(yrecon,lin_xrecon2,str_q ,params4,parameters4,'LFdpl_dpl',q ,Lmax2,lmin,z_m)[0] sfrd_2_z_l =get_sfrd_z(yrecon,lin_xrecon2,str_q_l ,params2,parameters2,'LFevol_logn_mat',q_l ,Lmax2,lmin,z_m)[0] sfrd_3_z_l =get_sfrd_z(yrecon,lin_xrecon2,str_q_l ,params3,parameters3,'LFevol_logn_L',q_l ,Lmax2,lmin,z_m)[0] sfrd_2_z_h =get_sfrd_z(yrecon,lin_xrecon2,str_q_h ,params2,parameters2,'LFevol_logn_mat',q_h ,Lmax2,lmin,z_m)[0] sfrd_3_z_h =get_sfrd_z(yrecon,lin_xrecon2,str_q_h ,params3,parameters3,'LFevol_logn_L',q_h ,Lmax2,lmin,z_m)[0] #sfrd_z_l=get_sfrd_z(yrecon,lin_xrecon2,str_q_l,params,parameters,model,q_l ,Lmax2,Lmin)[0] #lower limit #sfrd_z_h=get_sfrd_z(yrecon,lin_xrecon2,str_q_h,params,parameters,model,q_h ,Lmax2,Lmin)[0] #upper limit #sfrd_z =get_sfrd_z(yrecon,lin_xrecon2,str_q ,params,parameters,model,q ,Lmax2,Lmin)[0] #26, 21.5 #sys.exit() #sfrd_nov_z =get_sfrd_z(yrecon_nov,lin_xrecon,str_q ,params,parameters,'novak',get_q(z_nov[num-1])[1] ,26,lmin, z=z_nov[num-1])[0] #print 'This is nov z ', z_nov[num-1] #sys.exit() #sfrd_z =get_sfrd_z(yrecon,lin_xrecon,str_q ,params,parameters,model,q ,Lmax2,Lmin)[0] #sfrd_z,sfrd_zerr= get_sfrd_z(yrecon,lin_xrecon,str_q,numpy.inf,0.) sfrd[num-1] = sfrd_z sfrd_l[num-1] = sfrd_z_l sfrd_h[num-1] = sfrd_z_h z_med[num-1] = z_m #sfrd_nov[num-1] =sfrd_nov_z sfrd_2[num-1] = sfrd_2_z sfrd_3[num-1] = sfrd_3_z #sfrd_4[num-1] = sfrd_4_z sfrd_2_l[num-1] = sfrd_2_z_l sfrd_3_l[num-1] = sfrd_3_z_l sfrd_2_h[num-1] = sfrd_2_z_h sfrd_3_h[num-1] = sfrd_3_z_h #plt.plot(lin_xrecon,numpy.log10(str_q),'*',markersize=8) try: zrecon, srecon, srecon_l, srecon_h =numpy.loadtxt('sfrd_chains_2012%s_Lmin_%s'%(chains[0],'21_5'),unpack=True) except: print 'Please note that the 95 percent region has to be run for chains_2001%s ... python reconstruct_lf_plot.py'%chains[0] print 'Ensure that chains in reconstruct_lf_plot.py cooresponds to chains in this file!' zrecon, srecon, srecon_l, srecon_h=0,0,0,0 try: zrecon, srecon2, srecon_l2, srecon_h2 =numpy.loadtxt('sfrd_chains_2012%s_Lmin_%s'%(chains[0],'19'),unpack=True) except: print 'Please note that the 95 percent region has to be run for chains_2001%s ... python reconstruct_lf_plot.py'%chains[0] print 'Ensure that chains in reconstruct_lf_plot.py cooresponds to chains in this file!' zrecon2, srecon2, srecon_l2, srecon_h2=0,0,0,0 try: zrecon_2, srecon_2, srecon_l_2, srecon_h_2 =numpy.loadtxt('sfrd_chains_2011%s_Lmin_%s'%(chains4[0],'21_5'),unpack=True) except: print 'Please note that the 95 percent region has to be run for chains_2002%s ... python reconstruct_lf_plot.py'%(chains2[0]) print 'Ensure that chains in reconstruct_lf_plot.py cooresponds to chains in this file!' zrecon_2, srecon_2, srecon_l_2, srecon_h_2=0,0,0,0 try: zrecon_3, srecon_3, srecon_l_3, srecon_h_3 =numpy.loadtxt('sfrd_chains_2012%s_Lmin_%s'%(chains3,'21_5'),unpack=True) except: print 'Please note that the 95 percent region has to be run for chains_2002%s ... python reconstruct_lf_plot.py'%chains3[0] print 'Ensure that chains in reconstruct_lf_plot.py cooresponds to chains in this file!' zrecon_3, srecon_3, srecon_l_3, srecon_h_3=0,0,0,0 try: zrecon_3_2, srecon_3_2, srecon_l_3_2, srecon_h_3_2 =numpy.loadtxt('sfrd_chains_2012%s_Lmin_%s'%(chains3,'21_5'),unpack=True) except: print 'Please note that the 95 percent region has to be run for chains_2002%s ... python reconstruct_lf_plot.py'%chains3[0] print 'Ensure that chains in reconstruct_lf_plot.py cooresponds to chains in this file!' zrecon_3_2, srecon_3_2, srecon_l_3_2, srecon_h_3_2=0,0,0,0 #plt.rc('lines', linewidth=2) #plt.xlabel(r'$\rm{log_{10}[L_{1.4}/(W}$ $\rm{Hz^{-1})]}$',fontsize = 30) #plt.ylabel(r'$\rm{log_{10}[SFR_{IR}(M_\odot yr^{-1})]}$',fontsize = 30) #plt.tick_params(axis='both',which = 'major', labelsize=20,width =3) #plt.tick_params(axis='both',which = 'minor', labelsize=10, width=2) #plt.show() #fig = plt.figure() #print z_med #print sfrd_l #print sfrd #print sfrd_h #print len(z),len(sfrd) #Salpeter to Chabrier * 0.63 print zrecon_2,srecon_2, srecon_l_2, srecon_h_2 srecon_2_err=2*0.434*(srecon_h_2)/numpy.log10(srecon_2) z_b=numpy.arange(0,60)/10. Ilbert_h = sfrd_Behroozi(z_b,z0=0.95-0.410,A=-1.,B=0.194-0.082,C=0.111+0.04) Ilbert_l = sfrd_Behroozi(z_b,z0=0.95+0.343,A=-1.,B=0.194+0.128,C=0.111-0.029) parasa = parsa_z(z_b,a=0.11,b=1.48,c=2.75) Koprowski= parsa_z(z_b,a=0.18,b=1.04,c=1.77) #plt.errorbar(z_med,numpy.log10(sfrd),fmt='h',fillstyle='none',markeredgewidth=3,markersize=18, label=r'$\rm{Model}$ $\rm{C}$') #plt.errorbar(z_med,numpy.log10(sfrd_3),fmt='h',fillstyle='none',markeredgewidth=3,markersize=18, label=r'$\rm{Model}$ $\rm{C}$ $\rm{PLE}$') plt.errorbar(zrecon_2,numpy.log10(srecon_2),yerr=srecon_2_err,fmt='h',fillstyle='none',markeredgewidth=3,markersize=18, label=r'$\rm{Model}$ $\rm{B}$') #plt.errorbar(z_med,numpy.log10(sfrd),fmt='h',fillstyle='none',markeredgewidth=3,markersize=18, label=r'$\rm{Model}$ $\rm{C}$') #plt.errorbar(z_med,numpy.log10(sfrd_2),fmt='h',fillstyle='none',markeredgewidth=3,markersize=15, label=r'$\rm{Model}$ $\rm{C}$') #plt.errorbar(z_med,numpy.log10(sfrd_3),fmt='-k',linewidth=5, label=r'$\rm{Model}$ $\rm{C}$ $\rm{PLE}$') #plt.errorbar(zrecon_3_2,numpy.log10(srecon_3_2),fmt='-m',linewidth=5, label=r'$\rm{Model}$ $\rm{C}$ $\rm{PLE}$ $\rm{q(z=0)}$') #plt.errorbar(zrecon_2,numpy.log10(srecon_2),fmt='.-k',linewidth=5, label=r'$\rm{Model}$ $\rm{B}$') G_x , Gruppioni = numpy.loadtxt('Gruppioni_2013',unpack=True,delimiter=',') G_x1, Gruppioni_yup = numpy.loadtxt('Gruppioni_2013_y_up',unpack=True,delimiter=',') G_x2, Gruppioni_ydown = numpy.loadtxt('Gruppioni_2013_y_down',unpack=True,delimiter=',') Burg_z, Burg_FIR, Burg_FIR_er, Burg_tot, Burg_tot_er = numpy.loadtxt('Burgarella_2013',unpack=True) Lzl,Lzh,Lphi_tot,Lphi_ir,Ler = numpy.loadtxt('Liu_2018',unpack=True) print Lzl,Lzh Lz = numpy.mean(numpy.array([Lzl,Lzh]),axis=0) print Lz #plt.errorbar(z_med,numpy.log10(sfrd_4),fmt='--k',linewidth=7, label='No mass-limit') plt.errorbar(Lz,Lphi_tot,yerr=Ler,fmt='*g',markeredgewidth=1.8,markersize=16, fillstyle='none', label=r'$\rm{Liu+2018}$ $\rm{FIR+UV}$') try: plt.errorbar(numpy.array(nov_z),numpy.array(nov_sfrd),xerr=[nov_z_l,nov_z_u],yerr=[nov_sfrd_l,nov_sfrd_u], fmt='sr',fillstyle='none',ecolor='k',markeredgewidth=1.5, markersize=10, label=r'$\rm{Novak+2017}$ $\rm{PLE}$ $\rm{radio}$') except: print '' plt.errorbar(z_b,numpy.log10(Koprowski),fmt='--k',linewidth=3, label=r'$\rm{Koprowski+2017}$ $\rm{IR}$') #plt.errorbar(z_b,numpy.log10(parasa),fmt='.g',linewidth=3, label=r'$\rm{Parsa}$ + $\rm{2016}$ $\rm{UV}$') plt.errorbar(z_b,numpy.log10(sfrd_Madau(z_b)),fmt='o-c',linewidth=3,fillstyle='none', label=r'$\rm{Madau&Dickinson}$ $\rm{2014}$') #plt.errorbar(z_med,numpy.log10(sfrd_l)+0.4,fmt='--',markersize=8,label='low') #plt.errorbar(z_med,numpy.log10(sfrd_h)+0.4,fmt='--',markersize=8,label='high') #plt.errorbar(numpy.array(nov_z),numpy.array(Lower),xerr=[nov_z_l,nov_z_u],yerr=[lw_up, lw_lw], fmt='*g', label='lower limit SFRD Novak et al 2017') #plt.yscale('log') #plt.fill_between(z_med,numpy.log10((sfrd_l)),numpy.log10(sfrd_h), color='b',alpha=0.5) #plt.fill_between(z_med,numpy.log10((sfrd_2_l)),numpy.log10(sfrd_2_h), color='c',alpha=0.7) #plt.fill_between(z_med,numpy.log10((sfrd_3_l)),numpy.log10(sfrd_3_h), color='g',alpha=0.5) #plt.fill_between(zrecon,numpy.log10((srecon_l)),numpy.log10(srecon_h), label='95% Free Model',color='b',alpha=0.3) #plt.fill_between(z_b,numpy.log10((Ilbert_l)),numpy.log10(Ilbert_h), color='orange',alpha=0.2) #plt.fill_between(zrecon,numpy.log10((srecon_l_2)),numpy.log10(srecon_h_2), label='95% Model B',color='g',alpha=0.6) #plt.fill_between(zrecon,numpy.log10(srecon_l_3_2),numpy.log10(srecon_h_3_2),edgecolor="k",linewidth=5, label=r'$\rm{95\%}$ $\rm{Model}$ $\rm{C}$ $\rm{PLE}$ $\rm{q_{TIR}(z=0)}$',color='m',alpha=0.6) plt.fill_between(zrecon,numpy.log10((srecon_l_3)),numpy.log10(srecon_h_3), label=r'$\rm{95\%}$ $\rm{Model}$ $\rm{C}$ $\rm{PLE}$',color='m',alpha=0.6) plt.fill_between(zrecon,numpy.log10((srecon_l)),numpy.log10(srecon_h), label=r'$\rm{95\%}$ $\rm{Model}$ $\rm{C}$ $\rm{Individual}$',color='b',alpha=0.4) plt.fill_between(zrecon,numpy.log10((srecon_l2)),numpy.log10(srecon_h2), edgecolor="k", linewidth=4, label=r'$\rm{95\%}$ $\rm{Model}$ $\rm{C}$ $\rm{Individual}$ $\rm{q_{TIR}(z=0)}$',color='b',alpha=0.4) plt.fill_between(G_x,numpy.log10(Gruppioni_ydown),numpy.log10(Gruppioni_yup), color='k',alpha=0.3,label=r'$\rm{Gruppioni+2013}$ $\rm{IR}$') #plt.fill_between(nov_z,nov_phi_L, nov_phi_L2, color='r',alpha=0.4,label='Novak+2017 $\Phi$ and L Evolution') #plt.fill_between(Burg_z,numpy.log10(0.63*0.01*(Burg_FIR - Burg_FIR_er)),numpy.log10(0.63*0.01*(Burg_FIR + Burg_FIR_er)), color='r',alpha=0.2,label='Burgarella-2013 FIR') #plt.fill_between(Burg_z,numpy.log10(0.63*0.01*(Burg_tot - Burg_tot_er)),numpy.log10(0.63*0.01*(Burg_tot + Burg_tot_er)), color='g',alpha=0.2,label='Burgarella-2013 Total') plt.ylabel(r'$\rm{\log10(SFRD[M_\odot yr^{-1} Mpc^{-3}])}$',fontsize=32) plt.xlabel(r'$\rm{z} $',fontsize = 35) #plt.text(23.9,-9.7,'%s'%outdir,fontsize = 16 ) # \n $M_i$ < -22 plt.tick_params(axis='both',which = 'major', labelsize=20,width =1) plt.tick_params(axis='both',which = 'minor', labelsize=10, width=1) plt.subplots_adjust(hspace=0,wspace=0) #plt.xtick(fontsize=15) #plt.ytick(fontsize=15) #plt.ylim(-10.2,-5.8) ##plt.ylim(-2.7,0) plt.ylim(-2.2,-0.5) plt.xlim(0,3.8) #plt.ylim(-2.3,-0.3) #ax.xaxis.set_minor_locator(AutoMinorLocator()) #ax.yaxis.set_minor_locator(AutoMinorLocator()) #print truth['LMIN'] plotf='%s/LF_recon_s1.pdf' % (outdir) handles,labels=plt.gca().get_legend_handles_labels() print labels print len(labels) order=[4, 1,2, 0,3,5, 6, 7,8] plt.legend([handles[idx] for idx in order],[labels[idx] for idx in order],frameon=False,ncol=2, prop={'size':24}).draggable() plt.show() return 0
def main(): """ """ # Import the settings variables print 'Settings file is %s' % param_file # Import the settings variables set_module = importlib.import_module(settingsf) globals().update(set_module.__dict__) # Set up the experiment #bins=[12.679592, 31.84969509, 80.00281696, 200.9579904, 504.78364938, 1010, 3267.95919972]# 0.4 bins bins = numpy.logspace(0, 3.01, 10) bins = list(bins) bins.append(2e3) bins2 = numpy.arange(18., 27., 0.2) bins1 = numpy.arange(18.2, 27.2, 0.2) print redshifts nbins = len(bins) z_m = redshifts[0] dl = get_dl(z_m) sbin1 = get_sbins(10**bins1, z_m, dl) * 1e6 sbin2 = get_sbins(10**bins2, z_m, dl) * 1e6 #L = 10**bins1*(1.4/3.)**(.7) #L =get_Lbins(sbin1,z_m,dl)*(1.4/3.)**(-.7) expt = countModel(modelFamily, nlaws, settingsf, [dataset], floatNoise, doRedshiftSlices=True, mybins=sbin2) f = '%spost_equal_weights.dat' % outstem f = os.path.join(outdir, f) print 'os.pathf', f chain = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'] # Load equally-weighted posterior samples x = numpy.genfromtxt(f) nsamp = x.shape[0] ncols = x.shape[1] # The fifth [seventh] column is the posterior value # There must be a better way, but: #ncols = 14 z = numpy.zeros((nsamp, ncols - 1 + expt.nbins)) z[:, :-(expt.nbins - 1)] = x # Shift posterior values to end z[:, -1] = z[:, ncols - 1] # Copy... z[:, ncols - 1] = 0.0 # ...and blank print 'outstem', outstem # Fetch best-fit parameters and calculate best-fit line ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap = ana.get_best_fit()['parameters'] if True: print '--> Calculating *ML* reconstruction' drawmap = drawmap ymap = expt.evaluate(drawmap) #,expt.binsMedian) #print ymap evaluations = [] evaluate = True for num in range(1, 12): print num z_min, z_max, z_m = get_z(num, False) # for k in range(len(phi_sf)): # print sbin1[k],bins1[k],numpy.power(10,bins1[k]),numpy.log10(L_1[k]),numpy.log10(L_2[k]), numpy.log10(phi_sf[k]), numpy.log10(phi_agn[k]),numpy.log10(ymap[k]),numpy.log10(ymap2[k]),numpy.log10(ymap_ev[num-1][k]) #sys.ek #print ymap for isamp in xrange(nsamp): if evaluate: evaluations.append(expt.evaluate(z[isamp, :])) z[isamp, ncols - 1:] = evaluations[isamp][num - 1] #[LF(S,z_m,0,0,dl,z[isamp,:],\ #expt.parameters,area=expt.survey.SURVEY_AREA,\ #family=modelFamily) for S in expt.binsMedian/1.0e6] #print [LF(S,z_m,0,0,dl,z[isamp,:],\ # expt.parameters,area=expt.survey.SURVEY_AREA,\ # family=modelFamily) for S in expt.binsMedian/1.0e6] #sys.exit() #sys.exit() evaluate = False z[numpy.where(z == 0.0)] = 'NaN' s = numpy.zeros((len(expt.binsMedian), 8)) s[:, 0] = expt.binsMedian recons = z[:, ncols - 1:] #print '# ibin flux fit low high dlower dupper skew kurtosis' print '%6s %12s %12s %12s %12s %12s %12s %12s %12s' % ( 'bin', 'lower phi_rms', 'lower phi', 'l_err', 'ymap', 'u_err', 'upper phi', 'u_phi_rms', '2*rms') for ibin in xrange(len(expt.binsMedian)): x = recons[:, ibin] # Remove NaNs from stats vectors # http://stackoverflow.com/questions/11620914/removing-nan-values-from-an-array x = x[~numpy.isnan(x)] #ss=stats.bayes_mvs(x,alpha=0.68)[0] #x*=numpy.power(s[ibin,0]/1.0e6,2.5) #print bins1[ibin] #plt.hist(numpy.log10(x),bins=15) #plt.xlabel(r'$\rm{log_{10}[\rho_m(Mpc^{-3} mag^{-1})]}$',fontsize = 20) #plt.show() tt = peak_confidence(x, bins=10) try: ss = numpy.zeros(3) ss[0], dlow, dhigh, ss[1], ss[2] = calculate_confidence( x, alpha=0.95, ret_all=True) #ss[0],dlow,dhigh,ss[1],ss[2]=calculate_confidence2(x,alpha=0.68,ret_all=True,\ # value_central=ymap[ibin],\ # truncate_edges=True) except: ss = numpy.nan * numpy.ones(3) print "didn't work for ", x continue #sys.exit() #tt=peak_confidence(x,bins=10) #ss*=numpy.power(s[ibin,0]/1.0e6,2.5) #print ss[0],tt # s[ibin,1]=ss[0] # median # s[ibin,1]=tt # peak s[ibin, 1] = ymap[num - 1][ibin] # MAP #print ymap s[ibin, 2] = ss[1] # lower s[ibin, 3] = ss[2] # upper s[ibin, 4] = 2 * numpy.std( x) # (s[ibin,3]- s[ibin,2])/(2*numpy.std(x))# skewness s[ibin, 5] = ss[0] #print '%6.1f %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f'%(bins1[ibin], numpy.log10((ymap[ibin] - s[ibin,4])), numpy.log10(ss[1]),numpy.log10(s[ibin,2]),numpy.log10(ymap[ibin]),numpy.log10(s[ibin,3]) ,numpy.log10(ss[2]), numpy.log10(s[ibin,4]+ ymap[ibin]), numpy.log10(s[ibin,4]) ) #print ibin,s[ibin,0],s[ibin,1],dlow,dhigh,ss[1],ss[2],s[ibin,4],s[ibin,5]#,stats.skewtest(x) #sys.exit() # ...and output to file #sys.exit() rstatsf = 'recon_stats_%s.txt' % (chain[num - 1]) rstatsf = os.path.join(outdir, rstatsf) hdr = '# median_flux_uJy dnds_2p5_Jy1p5srm1 delta_dnds_2p5_lower_Jy1p5srm1 delta_dnds_2p5_upper_Jy1p5srm1 skewness kurtosis' fid = open(rstatsf, 'w') print hdr print s print '-> Writing stats (i.e. dnds2p5+/- v. S/uJy) to %s' % rstatsf fid.write('%s\n' % hdr) numpy.savetxt(fid, s) fid.close() print 'Finished.' return 0
def main(): """ """ print 'Settings file is %s' % setf # Import the settings variables set_module = importlib.import_module(setf) globals().update(set_module.__dict__) expt = countModel(modelFamily, nlaws, setf, [dataset], floatNoise, doRedshiftSlices=True) recon_expt = countModel(modelFamily, nlaws, setf, [dataset], floatNoise) #print expt.data #print expt.bins # Get MAP parameters print '\n' * 5 print len(expt.parameters) ncols = len(expt.parameters) summf = os.path.join(outdir, '1-summary.txt') summary = numpy.genfromtxt(summf)[-1, :] drawmap = summary[-(ncols + 2):-2] ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap = ana.get_best_fit()['parameters'] if dataset == 'sdss': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 20: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][4:])) print datafiles[0][4:] elif dataset == 'cosmos': #print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 24: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][8:])) #print '%s%s'%(outdir,datafiles[0][8:]) print datafiles[0][8:] elif 'sim' in dataset: d = numpy.genfromtxt(os.path.join(outdir, 'sim.txt')) ssbin = d[:, 2] Nbin = d[:, 3] dnds = d[:, 4] sbin2 = ssbin dnds2 = dnds #bins2 = numpy.arange(21.4,29.2,0.4) bins2 = numpy.arange(18.0, 29.2, 0.4) bins3 = numpy.arange(18., 29.2, 0.01) print len(expt.parameters) print 'this is 1st num ', num #sys.exit() params = drawmap # [0] #for i in drawmap: # params.append(i) print params print expt.parameters if modelFamily in [ 'LFsch', 'LFdpl_pl', 'LFpl_dpl', 'LFdpl_dpl', 'LFdpl_dpl_z', 'LFlognorm_dpl', 'LFpl_lognorm' ]: Lnorm = params[expt.parameters.index('LNORM')] Lstar = params[expt.parameters.index('LSTAR')] Lslope = params[expt.parameters.index('LSLOPE')] #Lzevol=params[expt.parameters.index('LZEVOL')] if modelFamily in ['LFdpl_pl', 'LFpl_dpl', 'LFdpl_dpl', 'LFlognorm_dpl']: Lslope2 = params[expt.parameters.index('LSLOPE2')] if modelFamily in [ 'LFlognorm', 'LFpl', 'LFdpl', 'LFdpl_pl', 'LFpl_dpl', 'LFlognorm_dpl', 'LFdpl_dpl', 'LFdpl_dpl_z', 'LFpl_lognorm' ]: Lnorm_2 = params[expt.parameters.index('LNORM_2')] Lstar_2 = params[expt.parameters.index('LSTAR_2')] Lslope_2 = params[expt.parameters.index('LSLOPE_2')] if modelFamily in ['LFdpl_dpl', 'LFdpl', 'LFdpl_dpl_z']: Lslope2_2 = params[expt.parameters.index('LSLOPE2_2')] if modelFamily in [ 'LFlognorm', 'LFlognorm_dpl', 'LFpl_lognorm', 'LFevol_logn_sigma' ]: Lsigma = params[expt.parameters.index('LSIGMA')] if modelFamily in [ 'LFdpl_dpl_z', 'LFevol_dpl', 'LFevol_logn', 'LFevol_logn_all', 'LFevol_logn_all_L' ]: alpha_agn = params[expt.parameters.index('A_agn')] alpha_SF = params[expt.parameters.index('A_SF')] beta_agn = params[expt.parameters.index('B_agn')] beta_SF = params[expt.parameters.index('B_SF')] if modelFamily in ['LFevol_dpl_s', 'LFevol_logn_s']: alpha_SF = params[expt.parameters.index('A_SF')] beta_SF = params[expt.parameters.index('B_SF')] if modelFamily in [ 'LFevol_logn_lnorm', 'LFevol_logn_all', 'LFevol_logn_all_L' ]: Lnorm = params[expt.parameters.index('LNORM')] Lstar = params[expt.parameters.index('LSTAR')] if modelFamily in [ 'LFevol_logn_mat', 'LFevol_phi_logn_mat', 'LFevol_logn_el', 'LFevol_logn_sigma', 'LFevol_logn_lmin', 'LFevol_logn_lnorm' ]: alpha_SF = params[expt.parameters.index('A_SF')] alpha_agn = params[expt.parameters.index('A_agn')] if modelFamily in [ 'LFevol_logn_slope', 'LFevol_logn_all', 'LFevol_logn_all_L' ]: alpha_SF = params[expt.parameters.index('A_SF')] alpha_agn = params[expt.parameters.index('A_agn')] Lslope2_2 = params[expt.parameters.index('LSLOPE2_2')] Lmin = params[expt.parameters.index('LMIN')] Lmax = params[expt.parameters.index('LMAX')] truth = { 'noise': 150, 'LMIN': 22., 'LMAX': 24.5, 'LNORM': numpy.log10(1e-7), 'LSTAR': 23.3, 'LSLOPE': 3., 'LSLOPE2': 1. } #z = [0, 0.5, 1 , 1.5, 2, 2.3, 2.6, 3, 3.5, 4] #old #z = [ 0.7, 1 , 1.35, 1.7, 2, 2.3, 2.6, 3, 3.5, 4]# older print expt.parameters s = pylab.loadtxt('%s/recon_stats.txt' % outdir) xrecon = s[:-1, 0] yrecon = s[:-1, 1] yrecon_d = s[:-1, 2] yrecon_u = s[:-1, 3] yrecon_rms = s[:-1, 4] yrecon_avr = s[:-1, 5] yrecon_rms_down = yrecon_rms #novak 2018 L_n2 =[[21.77,22.24,22.68,23.16,23.69,24.34, 24.74,25.56],\ [22.30,22.61,22.96,23.38,23.80,24.10, 24.55,25.14],\ [22.61,22.86,23.14,23.45,23.82,24.14, 24.40,24.71],\ [22.85,23.16,23.69,24.24,24.80,25.31, 25.96,26.69],\ [23.10,23.38,23.86,24.36,24.86,25.35, 25.94,26.36],\ [23.32,23.57,23.94,24.32,24.67,25.06, 25.47,25.96],\ [23.54,23.75,24.13,24.45,24.90,25.27, 25.74,26.10],\ [23.73,23.99,24.57,25.10,25.68,26.18, 26.83,27.51],\ [24.01,24.26,24.76,25.26,25.91,26.19, 27.45],\ [24.30,24.56,24.80,25.13,25.37,25.80, 25.97,26.49]] L_ner_u2 =[[0.23,0.27, 0.34, 0.37, 0.35, 0.21, 0.31, 0.03],\ [0.11,0.20, 0.26, 0.25, 0.24, 0.35, 0.31, 0.15],\ [0.08,0.15, 0.20, 0.22, 0.17, 0.18, 0.24, 0.28],\ [0.072,0.33,0.38, 0.40, 0.48, 0.42, 0.41, 0.28],\ [0.080,0.30,0.32, 0.32, 0.32, 0.33, 0.24, 0.34],\ [0.068,0.22,0.24, 0.25, 0.29, 0.30, 0.28, 0.21],\ [0.067,0.22,0.21, 0.26, 0.18, 0.17,0.075, 0.11],\ [0.093,0.36,0.31, 0.30, 0.25, 0.28, 0.16,0.028],\ [0.076,0.34,0.36, 0.38, 0.24, 0.47, 0.27],\ [0.097,0.14,0.20, 0.16, 0.23, 0.092,0.22,0.026]] L_ner_d2 =[[1.0, 0.24, 0.17, 0.14, 0.16, 0.30, 0.20, 0.50],\ [0.29, 0.21, 0.15, 0.16, 0.17, 0.06, 0.099,0.29],\ [0.24, 0.17, 0.12, 0.10, 0.15, 0.15, 0.08,0.074],\ [0.16, 0.24, 0.19, 0.17, 0.15, 0.09, 0.16, 0.33],\ [0.30, 0.19, 0.18, 0.18, 0.18, 0.17, 0.26, 0.18],\ [0.14, 0.18, 0.15, 0.14, 0.10, 0.095,0.11, 0.21],\ [0.19, 0.14, 0.15, 0.11, 0.19, 0.19, 0.29, 0.28],\ [0.40, 0.17, 0.21, 0.23, 0.27, 0.25, 0.37, 0.53],\ [0.20, 0.17, 0.16, 0.14, 0.27, 0.042, 0.27],\ [0.22, 0.16, 0.10, 0.14,0.072, 0.21, 0.08, 0.30]] rho_n2 =[[-2.84,-2.90,-3.34,-4.00,-4.92,-4.92, -5.22,-5.07],\ [-2.95,-3.17,-3.46,-4.24,-4.76,-5.41, -5.23,-5.44],\ [-2.95,-3.11,-3.44,-3.81,-4.37,-4.48, -4.90,-5.14],\ [-2.99,-3.24,-3.89,-4.54,-5.27,-5.33, -5.69,-5.89],\ [-3.32,-3.51,-4.06,-4.74,-5.28,-5.43, -6.08,-5.70],\ [-3.29,-3.54,-4.02,-4.45,-5.11,-5.56, -5.37,-6.07],\ [-3.43,-3.61,-4.19,-4.56,-5.09,-5.34, -5.70,-5.75],\ [-3.88,-3.98,-4.64,-5.33,-5.73,-6.27, -6.14,-6.77],\ [-3.85,-4.28,-5.05,-5.60,-5.68,-6.44, -6.59],\ [-4.43,-4.91,-5.46,-5.58,-5.89,-6.23, -6.26,-6.91]] rho_ner_u2=[[0.08,0.024,0.038,0.083,0.28,0.28 , 0.45, 0.34],\ [0.048,0.027,0.036,0.089,0.17,0.45, 0.34, 0.45],\ [0.062,0.024,0.032,0.048,0.096, 0.11,0.18,0.25],\ [0.042,0.018,0.035,0.073,0.180, 0.20,0.34,0.45],\ [0.045,0.019,0.033,0.072,0.15, 0.17,0.45,0.25],\ [0.040,0.022,0.033,0.055,0.13, 0.22,0.17,0.45],\ [0.061,0.020,0.035,0.055,0.099, 0.14,0.22,0.25],\ [0.044,0.022,0.044,0.11, 0.16, 0.34, 0.28,0.76],\ [0.048,0.025,0.058,0.13, 0.24, 0.34, 0.45],\ [0.084,0.058,0.11 ,0.24, 0.20, 0.28, 0.28,0.76]] rho_ner_d2=[[0.07,0.023,0.035,0.070,0.25,0.25 , 0.37, 0.30],\ [0.043,0.026,0.033,0.074,0.16,0.37, 0.30, 0.37],\ [0.054,0.023,0.030,0.043,0.079,0.086,0.17,0.22],\ [0.038,0.017,0.032,0.062,0.17,0.19, 0.30, 0.37],\ [0.041,0.019,0.031,0.062,0.11,0.16, 0.37, 0.22],\ [0.037,0.021,0.031,0.049,0.098,0.20,0.16, 0.37],\ [0.054,0.019,0.032,0.049,0.081,0.11,0.20, 0.22],\ [0.040,0.021,0.040,0.085,0.15, 0.30, 0.25,0.52],\ [0.043,0.024,0.051,0.10, 0.15, 0.30, 0.37],\ [0.070,0.051,0.087,0.16,0.19, 0.25, 0.25, 0.52]] #print xrecon #print yrecon #sys.exit() z_new = True Replot = False loglike = 0. loglike_nov = 0. lmin3 = [19.2, 19.8, 20.5, 20.8, 21.6, 22.2, 22.5, 23., 22.9, 23.] lmin3 = [19.7, 20.3, 21., 21.3, 22.1, 22.7, 23., 23.5, 23.4, 23.5] lmin3 = [20.2, 20.8, 21.5, 21.8, 22.6, 23.2, 23.5, 24., 23.9, 24.] lmin3 = [20.7, 21.3, 22., 22.3, 23.1, 23.7, 24., 24.5, 24.4, 24.5] lmin3 = [21.7, 22.3, 23., 23.3, 24.1, 24.7, 25., 25.5, 25.4, 25.5] lmin3 = [21.2, 21.8, 22.5, 22.8, 23.6, 24.2, 24.5, 25., 24.9, 25.] sm = [ 0.05162624, 0.0651364, 0.17144366, 0.19570955, 0.73934002, 1.58958387 ] sm = [ 0.16325651, 0.20597938, 0.54215247, 0.61888793, 2.33799844, 5.02670556 ] sm = [ 0.51626243, 0.651364, 1.71443663, 1.95709547, 7.39340024, 15.89583871 ] sm = [ 1.63256513, 2.05979383, 5.42152466, 6.18887928, 23.37998442, 50.26705564 ] sm = [ 16.32565134, 20.5979383, 54.21524659, 61.88879277, 233.79984425, 502.67055637 ] sm = [5.16, 6.51, 17.14, 19.57, 73.93, 158.95, 206.55] if not z_new: z = [0.1, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 2.0, 2.5, 3.2, 4.0] else: z = [0.1, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 2.0, 2.5, 3.2, 4.0] #oldest ;) num = int(num) #num = 1. print num z_min, z_max, z_m = get_z(num, z_new=False) dl = get_dl(z_m) Vmax = get_Vmax(z_min, z_max) dsdl = get_dsdl(z_m, dl) #z_m = (z_min + z_max)/2 dl = get_dl(z_m) print z_min, z_max print expt.kind area = SURVEY_AREA * sqDeg2sr area1 = SURVEY_AREA * sqDeg2sr print SURVEY_AREA SMIN = get_sbins(numpy.power(10, Lmin), z_m, dl) * 1e6 SMAX = get_sbins(numpy.power(10, Lmax), z_m, dl) * 1e6 sigma, fsigma = numpy.log10( get_Lbins([SURVEY_NOISE, SURVEY_NOISE * 5], z_m, dl, 'muJy') * (1.4 / 3)**(-.7)) print z_m, dl, sigma, fsigma print SURVEY_NOISE, SURVEY_NOISE * 5, SURVEY_AREA #area = 6672*sqDeg2sr #143165.15 49996.49 59876.8861135 sbin3 = get_sbins(10**bins2, z_m, dl) * 1e6 sbin4 = get_sbins(10**bins3, z_m, dl) * 1e6 #L_s = numpy.log10(get_Lbins(ssbin,z_m,dl,'muJy')) #print expt.binsMedian #sys.exit() xreco = get_Lbins(xrecon, z_m, dl, 'muJy') #*(1.4/3)**(-.7) yreco = yrecon print SMIN, SMAX #sys.exit() lin_yrecon = numpy.log10(yreco) lin_xrecon = numpy.log10(xreco) bins2 = numpy.arange(15., 25., 0.4) bins = numpy.arange(fsigma - 0.2, 29.2, 0.4) #bin +0.2 #bins =[23.6,23.9,24.1,24.3,24.9,25.6,26.,26.7,28] #2< z<3.2 #bins =[23.6, 23.9,24.1,24.4,24.6,24.9,25.2,25.6,26.,26.4,27.,27.5,28] #3.2< z<4 bins = numpy.array(bins) if not os.path.isfile( 'cos_data/cos_s%s_LF.el' % num) and z_new or not os.path.isfile( 'cos_data/cos_s%s_LF_old.el' % num) and not z_new or Replot: print 'Reploting the RLF and storing them for next time.' #l,z_l = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,21), F='uJy',L=True,getz=True) #l2,z_l2 = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,24), F='uJy',L=True,getz=True) if z_new: L, z_L = open_anytype('cos_data/cos_s%s.txt' % num, (2, 3), F='uJy', L=True, getz=True, band='S') print 'this is the new z bins (please check if lumfuncUtils and cos_manifest are using the right z)' else: L, z_L = open_anytype('cos_data/cos_s%s.txt' % num, (2, 3), F='uJy', L=True, getz=True, band='S') print 'this is the old z binning style. (please check if lumfuncUtils and cos_manifest are using the right z)' L_c, z_c = open_anytype('cosmos_counter_parts_II.txt', (3, 4), [z_min, z_max], F='uJy', L=True, getz=True, band='S') L_c2, z_c2 = open_anytype('cosmos_comp_vla.el', (2, 3), [z_min, z_max], F='uJy', L=True, getz=True, band='S') L_c3, z_c3 = open_anytype('cosmos_vla.el', (2, 3), [z_min, z_max], F='uJy', L=True, getz=True, band='S') L_c4, z_c4 = open_anytype( '/home/eliab/Documents/OC/Project/cosmos/Cosmos/dr4_cos2015_vla.tx', (-4, -1), [z_min, z_max], F='uJy', L=True, getz=True, band='S') L_c5, z_c5 = open_anytype( '/home/eliab/Documents/OC/Project/cosmos/Cosmos/dr4_cos2015_vla.tx', (3, -1), [z_min, z_max], F='uJy', L=True, getz=True, band='S') #z_c2,S_c2,L_c2 =numpy.loadtxt('cosmos_counter_parts_II.txt',unpack=True, usecols=(3,4,5)) #L_c2=L_c2[(z_c2<z_max)&(z_c2 >z_min)] #S_c2=S_c2[(z_c2<z_max)&(z_c2 >z_min)] #z_c2=z_c2[(z_c2<z_max)&(z_c2 >z_min)] #rho_1,er1 = calc_Vmax(calcu_zeff(z_l,l,11.5e-32),l,bins,z_max,z_min,area) #rho_2,er2 = calc_Vmax(calcu_zeff(z_l2,l2,11.5e-32),l2,bins,z_max,z_min,area) #print numpy.log10(L) #print (1.4/3)**(-.7) #print numpy.log10(L*(1.4/3)**(-.7)) #sys.exit() rho_3, er3, b3, n3 = calc_Vmax(calcu_zeff(z_L, L, 1.15e-31), L, bins, z_max, z_min, area, table=True) #rho_4,er4 = calc_Vmax(99.,L,bins,z_max,z_min,area) print 'COS15 VLA' rho_5, er5, b5, n5 = calc_Vmax(calcu_zeff(z_c, L_c, 1.15e-31), L_c, bins, z_max, z_min, 1.77 * sqDeg2sr, table=True) print 'mass lim DR4-vla' rho_6, er6, b6, n6 = calc_Vmax(calcu_zeff(z_c2, L_c2, 1.15e-31), L_c2, bins, z_max, z_min, 1.5 * sqDeg2sr, table=True) print 'DR4-vla' rho_7, er7, b7, n7 = calc_Vmax(calcu_zeff(z_c3, L_c3, 1.15e-31), L_c3, bins, z_max, z_min, 1.5 * sqDeg2sr, table=True) print 'cos-DR4-vla DR4 photo-z' rho_8, er8, b8, n8 = calc_Vmax(calcu_zeff(z_c4, L_c4, 1.15e-31), L_c4, bins, z_max, z_min, 1.5 * sqDeg2sr, table=True) print 'cos-DR4-vla COS15 photo-z' rho_9, er9, b9, n9 = calc_Vmax(calcu_zeff(z_c5, L_c5, 1.15e-31), L_c5, bins, z_max, z_min, 1.5 * sqDeg2sr, table=True) for i in range(len(b3)): print '%5.2f %7d %10d %13d %17d %11d' % (b3[i], n3[i], n7[i], n8[i], n9[i], n5[i]) if z_new: f = open('cos_data/cos_s%s_LF_5.el' % num, 'w') #_2 paper _5 stellar mass 10.2 print 'saving data for future use in cos_data/cos_s%s_LF_5.el' % num else: f = open('cos_data/cos_s%s_LF_old.el' % num, 'w') print 'saving data for future use in cos_data/cos_s%s_LF_old.el' % num for i in range(len(bins)): f.write( '%5.1f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f\n' % (bins[i], rho_3[i], er3[i], rho_5[i], er5[i], rho_6[i], er6[i], rho_7[i], er7[i], rho_8[i], er8[i], rho_9[i], er9[i])) f.close() else: if z_new: bins, rho_3, er3, rho_5, er5, rho_6, er6, rho_7, er7, rho_8, er8, rho_9, er9 = numpy.loadtxt( 'cos_data/cos_s%s_LF_2.el' % num, unpack=True) print 'Using stored RLF for the new z (The one with more z bins ) from cos_data/cos_s%s_LF.el. If you want to calculate the plot the set "Replot=True"' % num else: bins, rho_3, er3, rho_5, er5, rho_6, er6, rho_7, er7, rho_8, er8, rho_9, er9 = numpy.loadtxt( 'cos_data/cos_s%s_LF_old.el' % num, unpack=True) print 'Using stored RLF for the is old z bins in fr cos_data/cos_s%s_LF.el. If you want to calculate the plot the set "Replot=True"' % num #novak 2017 ''' L_n =[21.77,22.15,22.46,22.77,23.09,23.34] rho_n =[-2.85,-2.88,-3.12,-3.55,-4.05,-4.63] L_ner_u =[0.23,0.18,0.19, 0.2, 0.21, 0.28] L_ner_d =[1.1, 0.15, 0.14, 0.12, 0.12, 0.048] rho_ner=[0.09, 0.03,0.0355,0.059,0.1,0.234] #novak 2018 L_n2 =[21.77,22.24,22.68,23.16,23.69,24.34, 24.74,25.56] rho_n2 =[-2.84,-2.90,-3.34,-4.00,-4.92,-4.92, -5.22,-5.07] L_ner_u2 =[0.23,0.27, 0.34, 0.37, 0.35, 0.21, 0.31, 0.03] L_ner_d2 =[1.0, 0.24, 0.17, 0.14, 0.16, 0.30, 0.20, 0.50] rho_ner_u2=[0.08,0.024,0.038,0.083,0.28,0.28 , 0.45, 0.34] rho_ner_d2=[0.07,0.023,0.035,0.070,0.25,0.25 , 0.37, 0.30] #l*= (1.4/3)**(-.7) #l2*= (1.4/3)**(-.7) #L*= (1.4/3)**(-.7) ''' #Lbins2 = numpy.log10(lf.get_Lbins(sbin2[sbin2>0],z_m,dl)) print z_min, z_max #bins = numpy.arange(fsigma -4.2,30,0.4) #bin #s,s_z = numpy.loadtxt('sdss/dr12s_s1_vol.txt', unpack=True, usecols=(-1,2)) s, s_z = numpy.loadtxt('cos_data/cos_s%s.txt' % (num), unpack=True, usecols=(-1, 2)) #s=s*1e6 print fsigma L_s = (get_Lbins(ssbin, z_m, dl, 'muJy')) * (1.4 / 3.)**(-.7) L_s = numpy.log10(L_s) rho_1 = lumfuncs( Nbin, L_s, calc_Vmax(calcu_zeff(z_m, 10**L_s), L_s, L_s, z_max, z_min, area, getLF=False)) #L_s = numpy.log10(10**L_s*(1.4/3.)**(-.7)) #sys.exit() rho_11 = dntoLF(L_s, Nbin, dsdl, Vmax) #dn = expt.realise(params) #nov_real=expt.realise([2.3,2.95,2.86,-0.29,-0.7,19.5,26.0]) fig, ax = plt.subplots() plt.rc('lines', linewidth=2) if modelFamily in ['LFdpl', 'LFdpl_dpl', 'LFdpl_dpl_z']: faint = lumfuncUtils.doublepowerlaw(numpy.power(10, bins3), Lstar_2, Lslope_2, Lslope2_2, Lnorm_2) elif modelFamily in ['LFpl', 'LFdpl_pl']: faint = lumfuncUtils.powerlaw(numpy.power(10, bins3), Lstar_2, Lslope_2, Lnorm_2) elif modelFamily in ['LFpl_dpl', 'LFdpl_dpl_z']: faint = lumfuncUtils.doublepowerlaw(numpy.power(10, bins3), Lstar, Lslope, Lslope2, Lnorm) elif modelFamily == 'LFevol_logn_mat': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_mat',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_phi_logn_mat': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_phi_logn_mat',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_el': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_el',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_phi_logn': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_phi_logn',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_slope': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_slope',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_sigma': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_sigma',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_lstar': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_lstar',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_lmin': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_lmin',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_lnorm': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_lnorm',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_all': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_all',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] elif modelFamily == 'LFevol_logn_all_L': faint =[lumfuncUtils.LF(L=numpy.power(10,lL),params=params,paramsList=expt.parameters,\ family='LFevol_logn_all_L',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True,SF=True) for lL in bins3] else: faint = lumfuncUtils.lognormpl(numpy.power(10, bins3), Lstar_2, Lslope_2, Lsigma, Lnorm_2) #phi_dpl =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar ,Lslope,Lslope2,Lnorm) L_1 = numpy.power(10, bins3) / (1 + z_m)**(2.86 - z_m * 0.7) L_2 = numpy.power(10, bins3) / (1 + z_m)**(2.95 - z_m * 0.29) #L_4 = numpy.power(10,bins3)/(1 + z_m)**(alpha_SF) #L_3 = numpy.power(10,bins3)/(1 + z_m)**(alpha_agn) #L_4 = numpy.power(10,bins3)/(10)**(alpha_SF) #L_3 = numpy.power(10,bins3)/(10)**(1)#alpha_agn) #for i in range(len(L_3)): #print bins3[i],numpy.log10(L_3[i]) #L_4 = numpy.power(10,bins3)/(1 + z_m)**(alpha_SF+z_m*beta_SF) #L_3 = numpy.power(10,bins3)/(1 + z_m)**(alpha_agn+z_m*beta_agn) phi_agn_n = lumfuncUtils.doublepowerlaw(L_1, 24.59, 1.27, 0.49, numpy.log10(10**(-5.5))) phi_sf_n = lumfuncUtils.lognormpl(L_2, numpy.log10(1.85e21), 1.22, 0.63, numpy.log10(3.55e-3 / 2.5)) #0.33 2.97 #phi_sf =lumfuncUtils.lognormpl(L_4, 20.56,1.22,0.63,-2.26)#numpy.log10(3.55e-3/2.5))#0.33 2.97 phi_sf2 = lumfuncUtils.lognormpl(L_2, numpy.log10(1.85e21), 1.22, 0.63, numpy.log10(3.55e-3 / 2.5)) #0.33 2.97 #phi_sf =lumfuncUtils.lognormpl(L_4, Lstar,1.22,0.63,Lnorm)#numpy.log10(3.55e-3/2.5))#0.33 2.97 #phi_sf =lumfuncUtils.lognormpl(L_4, numpy.log10(1.85e21),1.22,0.63,numpy.log10(3.55e-3/2.5))#0.33 2.97 nov_Tot_n = phi_agn_n + phi_sf_n #phi_agn=lumfuncUtils.doublepowerlaw(L_3,24.59,1.27,0.49,numpy.log10(10**(-5.5))) #print 'this is Lminz', numpy.log10(10**18/(1 + z_m)**(alpha_SF+z_m*beta_SF)) #phi_agn=lumfuncUtils.doublepowerlaw(L_3,24.59,1.27,0.49,numpy.log10(10**(-5.5))) phi_1 = lumfuncUtils.doublepowerlaw(numpy.power(10, bins3), 23.68, 3.68, 0.8, -3.36) #0.33 2.97 phi_2 = lumfuncUtils.doublepowerlaw(numpy.power(10, bins3), 24.5, 1.37, 0.5, -4.) #tot = phi_1+phi_2 dm = 0.4 #02 hm = 0. #Map =expt.evaluate(params)[0] bins_map = get_Lbins(expt.binsMedian, z_m, dl, 'muJy') bins1_4 = numpy.log10(10**bins * (1.4 / 3.)**(-.7)) #fix=[lumfuncUtils.LF(L=numpy.power(10,lL),params=[3.75,2.55,4.74,0,0,20.3,26.65],paramsList=expt.parameters,\ # family='LFevol_logn',inta=None,area=0,S=0, z=z_m, dlds=0,Vmax=0,dl=0,bypassLim=True) for lL in bins3] #plt.plot(numpy.log10(10**bins3 *(1.4/3)**(-.7)),numpy.log10(faint)-dm,'--b' ,label='faint-end') #plt.plot(numpy.log10(bins_map),numpy.log10(Map), label='my MAP') #plt.plot(bins3,numpy.log10(fix)-dm,'--c', label='Fix') #plt.plot(bins3,numpy.log10(phi_agn),'-.c', label='local agn') #plt.plot(bins3,numpy.log10(phi_sf),'--r', label='local sf') #plt.plot(bins3,numpy.log10(phi_sf2),'--c', label='local sf2') #plt.plot(numpy.log10(10**bins3),numpy.log10(phi_dpl)-dm,'--c', label='agn') #plt.plot(numpy.log10(10**bins3*(1.4/3.)**(.7)),numpy.log10(tot)-0.4,'-.g',linewidth=5, label='Tot') #plt.plot(bins3,numpy.log10(phi_agn),'--r', label='local agn nov') plt.errorbar(lin_xrecon + hm, lin_yrecon - dm, fmt='-b', label='This work Total', linewidth=2) plt.plot(numpy.log10(10**bins3), numpy.log10(faint) - dm, '--b', label='This work SFG') #plt.errorbar(lin_xrecon+hm,numpy.log10(yrecon_avr)-dm,fmt='-g', label = 'Average') #plt.plot(L_s2+.2, numpy.log10(rho_10), '*c',label='average LF',markersize=13)#bin + 0.2 plt.errorbar(bins, rho_3, yerr=er3, fmt='ob', label='This work 1/Vmax', markersize=8) #bin #plt.errorbar(bins2[17:],rho_3[17:] ,yerr=er3[17:],fmt='ob',label='extracted',markersize=8) #bin #plt.errorbar(bins,rho_5 ,yerr=er5,fmt='^k',label='VLA-COSMOS2015',markersize=10) #bin #plt.errorbar(bins,rho_8 ,yerr=er8,fmt='sc',label='VLA-COSMOS2015 in DR4 using DR4 z',markersize=10) #bin #plt.errorbar(bins,rho_9 ,yerr=er9,fmt='*m',label='VLA-COSMOS2015 in DR4 using COS15z',markersize=14) #bin #plt.errorbar(bins,rho_6 ,yerr=er6,fmt='ok',label='DR4 detected',fillstyle='none',markersize=14) #bin #plt.errorbar(bins,rho_7 ,yerr=er6,fmt='dg',label='DR4 detected - Full NIR sample',markersize=12) #bin #plt.plot(L_s, numpy.log10(rho_1), '*m',label='low LF',markersize=10) #plt.plot(L_s, numpy.log10(rho_11), 'sc',label='reconstruct LF',markersize=10) #plt.errorbar(numpy.array(L_n2[num-1]),numpy.array(rho_n2[num-1]) -0.4,xerr=[L_ner_d2[num-1],L_ner_u2[num-1]],yerr=[rho_ner_d2[num-1],rho_ner_u2[num-1]], fmt='sr',fillstyle='none',ecolor='r',markeredgewidth=1.5, label='Total RLF Novak+2018') plt.errorbar(numpy.log10(10**bins3), numpy.log10(nov_Tot_n), fmt='-r', label='Total Novak + 2018') plt.plot(bins3, numpy.log10(phi_sf_n), '-.r', label='SFG Novak + 2017') ''' print 'This is the dn' print dn for key in dn.keys(): if round(key,2)==round(z_m,2):z_m=key dn=dn[z_m] nov_real=nov_real[z_m] for i in range(len(L_s)): loglike_i= Nbin[i]*numpy.log(dn[i]) + Nbin[i] - (Nbin[i] + 0.5)*numpy.log(Nbin[i]) - 0.5*numpy.log(2*numpy.pi) - dn[i] loglike_nov_i= Nbin[i]*numpy.log(nov_real[i]) + Nbin[i] - (Nbin[i] + 0.5)*numpy.log(Nbin[i]) - 0.5*numpy.log(2*numpy.pi) - nov_real[i] if nov_real[i]>0:loglike_nov+=loglike_nov_i if dn[i]>0:loglike+=loglike_i print '%10.5f %8.2d %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f'%(ssbin[i], Nbin[i], dn[i],nov_real[i],loglike_i,loglike_nov_i,loglike, loglike_nov) ''' #plt.errorbar(bins[1:],rho_2[1:] ,yerr=er2[1:],fmt='ok',label='dectected catalog',markersize=10) #bin #plt.errorbar(bins2[1:]-0.2,rho_3[1:],yerr=er3[1:],fmt='sr',label='noisy',markersize=10) #bin #plt.errorbar(bins2[1:]-0.2,rho_4[1:],yerr=er4[1:],fmt='vm',label='noisy lim',markersize=10) #bin #plt.errorbar(numpy.array(L_n),numpy.array(rho_n) -0.4,xerr=[L_ner_d,L_ner_u],yerr=rho_ner, fmt='^c', label='Novak et al 2017') #plt.errorbar(numpy.array(L_n2),numpy.array(rho_n2) -0.4,xerr=[L_ner_d2,L_ner_u2],yerr=[rho_ner_d2,rho_ner_u2], fmt='sk', label='Total RLF Novak et al 2018') #plt.plot(bins3+0.4,numpy.log10(logn)-0.4 ,'--k', label='faint-end') #plt.plot(bins3,numpy.log10(logn) ,'--', label='lognorm') #plt.plot(bins3,numpy.log10(logn2)-dm,'--r', label='lognorm2') # #plt.plot(bins3,numpy.log10(phi_dpl2), label='dpl bright-end2') #plt.plot(Lbins4[(Lbins4<23.6) &(Lbins4>22.12)],numpy.log10(phi_dpl)[(Lbins4<23.6) &(Lbins4>22.12)], '-c',linewidth=5 ,label = r'$\rm{ MAP dpl < 5\sigma}$') #plt.plot(bins2,numpy.log10(logn_2),label='starforming_2') #plt.plot(bins2,numpy.log10(logn_3),label='starforming_3') #plt.plot(bins2,numpy.log10(logn_4),label='starforming_4') #plt.fill_between(xrecon,numpy.log10(yrecon - yrecon_down2 ) ,numpy.log10(yrecon+yrecon_up2), color='c',alpha=0.2) #plt.errorbar(lin_xrecon+0.4,lin_yrecon -0.4,fmt='-b', label='MAP',linewidth=2) #plt.errorbar(lin_xrecon+0.4,lin_yrecon- 0.4,yerr=numpy.log10(yrecon_rms),fmt='r',label='rms') #plt.plot(L_s, numpy.log10(rho_1), '*c',label='average LF',markersize=10) #plt.plot(L_s5, numpy.log10(rho_14)-0.2, '*r',label='average LF',markersize=13) #plt.plot(L_s6+0.0, numpy.log10(rho_16)-0.2, '*b',label='average LF(bin)',markersize=13) #plt.plot(bins2[:-1], numpy.log10(rho_15), '*g',label='LF average',markersize=13) #print len(rho_11),len(rho_10),len(rho_12) #plt.fill_betweenx(numpy.log10(rho_10) ,L_s3,L_s4, color='red',alpha=0.2) #plt.plot(L_s6, numpy.log10(rho_13), '*b',label='average LF(bin+0.2)',markersize=13)#bin + 0.2 #plt.plot(L_s1, numpy.log10(rho_1), 'oc',label='average LF(bin)',markersize=13)#bin #plt.plot(Lbins4,lin_phi ,'--b',label='MAP') #plt.fill_between(lin_xrecon+.0,numpy.log10((yrecon_avr -yrecon_rms))-dm,numpy.log10(yrecon_avr +yrecon_rms)-dm , color='r',alpha=0.3) #plt.fill_between(lin_xrecon[1:-1]+0.2,numpy.log10(yreco[1:-1] - yrecon_down[1:-1] )-dm,numpy.log10(yreco[1:-1]+yrecon_up[1:-1])-dm , color='b',alpha=0.2) plt.fill_between(lin_xrecon + hm, numpy.log10((yrecon_d)) - dm, numpy.log10(yrecon_u) - dm, color='k', alpha=0.2) #plt.errorbar(bins[2:],rho_1[2:],yerr=er1[2:],fmt = 'ob',label='Detected') #plt.errorbar(bins2,rho_6-0.2,yerr=er6,fmt='ob',label='Detected') #working one #plt.plot(Lbins2,rho,'ob',label='simulation') #plt.plot(Lbins3,rho_,label='Noisy fluxes') #rho_2 #plt.errorbar(bins,rho_2 -0.2,yerr=er2,fmt='ok',label='data',markersize=10) #bin +0.2 #plt.errorbar(bins2,rho_6-0.2,yerr=er6,fmt='vm',label='Noisy NVSS') #plt.errorbar(bins2,rho_7-0.2,yerr=er6,fmt='xc',label='NVSS Detected') #for i in range(len(bins)): # print bins[i], rho_2[i] #sys.exit() #plt.errorbar(Lbins2,rho, err,fmt = 'ob',label='simulation') #plt.errorbar(Lbins2,rho_1,err_1,fmt = 'or',label='simulation_noisy') #plt.errorbar(L2,rho2,color='g',label='Analytic') #plt.errorbar(L3,rho3,color='g',label='Analytic II') #plt.axvspan(22.55 ,23.51,color='r',alpha=0.2) #plt.axvline(Lmin,color='r',linestyle='dashed') plt.axvline(fsigma, color='k', linestyle='dashed') #plt.axvline(sigma,color='g') #plt.axvline(Llmin,color='r',linewidth=5) #plt.axvline(sigma2,color='m') #plt.axvline(fsigma2,color='m') #plt.axvline(23.89,color='b') #plt.axvline(23.71,color='c') #plt.axvline(23.52,color='r') #plt.axvline(truth['LMIN'],color='r', linestyle='dashed', label = 'True params') #plt.axvline(truth['LMAX'],color='r', linestyle='dashed') #plt.axvline(truth['LSTAR'],color='b') #plt.text(truth['LSTAR']-0.2,-9., '$L_*$',fontsize=18) #plt.axvline(Lmax,color='r', label= 'MAP params') #plt.axvline(Lmin,color='b') #plt.axvline(Lmax, color='r',linestyle='dashed') #plt.text(21,-1, '$L_*$',fontsize=18) #plt.text(fsigma+0.1,-6.7, '$5\sigma$',fontsize=25) #plt.text(sigma+0.1,-6.7, '$\sigma$',fontsize=25) plt.xlabel(r'$\rm{log_{10}[L_{1.4 GHz}/(W}$ $\rm{Hz^{-1})]}$', fontsize=30) plt.ylabel(r'$\rm{log_{10}[\rho_m(Mpc^{-3} mag^{-1})]}$', fontsize=30) lmin3_14 = 10**lmin3[num - 1] * (1.4 / 3.)**(-.7) #plt.text(22,-7.7,'%.1f < z < %.1f %s Lmin=%6.2f %s Lmin_cut=%6.2f %s Smin_cut=%6.2f $\mu$Jy'%(z_min,z_max,'\n',Lmin,'\n',numpy.log10(lmin3_14),'\n',sm[num-1]),fontsize = 30,alpha=0.6 ) # \n $M_i$ < -22 #plt.text(22,-7.7,'%.1f < z < %.1f %s Lmin=%6.2f'%(z_min,z_max,'\n',Lmin),fontsize = 30,alpha=0.6 ) # \n $M_i$ < -22 plt.text(22, -7.7, '%.1f < z < %.1f' % (z_min, z_max), fontsize=30, alpha=0.6) # \n $M_i$ < -22 #plt.text(22.9,-8.7,'%s'%outdir,fontsize = 16 ) # \n $M_i$ < -22 plt.tick_params(axis='both', which='major', labelsize=20, width=3) plt.tick_params(axis='both', which='minor', labelsize=10, width=2) #plt.tight_layout() #plt.xtick(fontsize=15) #plt.ytick(fontsize=15) plt.xlim(20, 28.) plt.ylim(-9, -2) #plt.ylim(-11,-5.5) ax.xaxis.set_minor_locator(AutoMinorLocator()) ax.yaxis.set_minor_locator(AutoMinorLocator()) #print truth['LMIN'] plt.legend(frameon=False).draggable() plotf = '%s/LF_recon_s1.pdf' % (outdir) plt.show() return 0
def main(): """ """ print 'Settings file is %s' % setf # Import the settings variables set_module = importlib.import_module(setf) globals().update(set_module.__dict__) expt = countModel(modelFamily, nlaws, setf, [dataset], floatNoise, doRedshiftSlices=True) recon_expt = countModel(modelFamily, nlaws, setf, [dataset], floatNoise) #print expt.data #print expt.bins # Get MAP parameters print '\n' * 5 print len(expt.parameters) ncols = len(expt.parameters) summf = os.path.join(outdir, '1-summary.txt') summary = numpy.genfromtxt(summf)[-1, :] drawmap = summary[-(ncols + 2):-2] ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap = ana.get_best_fit()['parameters'] chains = ['a', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] if dataset == 'sdss': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 20: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][4:])) print datafiles[0][4:] elif dataset == 'cosmos': #print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 24: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][8:])) #print '%s%s'%(outdir,datafiles[0][8:]) print datafiles[0][8:] elif 'sim' in dataset: d = numpy.genfromtxt(os.path.join(outdir, 'sim.txt')) ssbin = d[:, 2] Nbin = d[:, 3] dnds = d[:, 4] sbin2 = ssbin dnds2 = dnds #bins2 = numpy.arange(21.4,29.2,0.4) bins2 = numpy.arange(18.0, 29.2, 0.4) bins3 = numpy.arange(18., 29.2, 0.01) print len(expt.parameters) num = 5 print 'this is 1st num ', num #sys.exit() params = drawmap # [0] #for i in drawmap: # params.append(i) print params print expt.parameters if modelFamily in [ 'LFsch', 'LFdpl_pl', 'LFpl_dpl', 'LFdpl_dpl', 'LFdpl_dpl_z', 'LFlognorm_dpl', 'LFpl_lognorm' ]: Lnorm = params[expt.parameters.index('LNORM')] Lstar = params[expt.parameters.index('LSTAR')] Lslope = params[expt.parameters.index('LSLOPE')] #Lzevol=params[expt.parameters.index('LZEVOL')] if modelFamily in [ 'LFdpl_pl', 'LFpl_dpl', 'LFdpl_dpl', 'LFdpl_dpl_z', 'LFlognorm_dpl' ]: Lslope2 = params[expt.parameters.index('LSLOPE2')] if modelFamily in [ 'LFlognorm', 'LFpl', 'LFdpl', 'LFdpl_pl', 'LFpl_dpl', 'LFlognorm_dpl', 'LFdpl_dpl', 'LFdpl_dpl_z', 'LFpl_lognorm' ]: Lnorm_2 = params[expt.parameters.index('LNORM_2')] Lstar_2 = params[expt.parameters.index('LSTAR_2')] Lslope_2 = params[expt.parameters.index('LSLOPE_2')] if modelFamily in ['LFdpl_dpl', 'LFdpl_dpl_z', 'LFdpl']: Lslope2_2 = params[expt.parameters.index('LSLOPE2_2')] if modelFamily in ['LFlognorm', 'LFlognorm_dpl', 'LFpl_lognorm']: Lsigma = params[expt.parameters.index('LSIGMA')] if modelFamily in ['LFdpl_dpl_z', 'LFevol']: alpha_agn = params[expt.parameters.index('A_agn')] alpha_SF = params[expt.parameters.index('A_SF')] beta_agn = params[expt.parameters.index('B_agn')] beta_SF = params[expt.parameters.index('B_SF')] if modelFamily in ['LFevol_dpl_s', 'LFevol_logn_s']: alpha_SF = params[expt.parameters.index('A_SF')] beta_SF = params[expt.parameters.index('B_SF')] Lmin = params[expt.parameters.index('LMIN')] Lmax = params[expt.parameters.index('LMAX')] truth = { 'noise': 150, 'LMIN': 22., 'LMAX': 24.5, 'LNORM': numpy.log10(1e-7), 'LSTAR': 23.3, 'LSLOPE': 3., 'LSLOPE2': 1. } #z = [0, 0.5, 1 , 1.5, 2, 2.3, 2.6, 3, 3.5, 4] #old #z = [ 0.7, 1 , 1.35, 1.7, 2, 2.3, 2.6, 3, 3.5, 4]# older print expt.parameters s = pylab.loadtxt('%s/recon_stats_%s.txt' % (outdir, chains[num - 1])) xrecon = s[:-1, 0] yrecon = s[:-1, 1] yrecon_d = s[:-1, 2] yrecon_u = s[:-1, 3] yrecon_rms = s[:-1, 4] yrecon_avr = s[:-1, 5] yrecon_rms_down = yrecon_rms for i in range(len(yrecon_rms)): if yrecon_avr[i] < yrecon_rms[i]: yrecon_rms_down[i] = 10**(numpy.log10(yrecon_avr[i]) - 0.01) #print xrecon #print yrecon #sys.exit() z_new = False Replot = False if z_new: z = [ 0.1, 0.3, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.2, 3.6, 4.0 ] else: z = [0.1, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 2.0, 2.5, 3.2, 4.0] #oldest ;) num = int(num) #num = 1. print num z_min, z_max, z_m = get_z(num, z_new=z_new) dl = get_dl(z_m) Vmax = get_Vmax(z_min, z_max) dsdl = get_dsdl(z_m, dl) z_m = (z_min + z_max) / 2 dl = get_dl(z_m) print z_min, z_max print expt.kind area = SURVEY_AREA * sqDeg2sr area1 = SURVEY_AREA * sqDeg2sr print SURVEY_AREA SMIN = get_sbins(numpy.power(10, Lmin), z_m, dl) * 1e6 SMAX = get_sbins(numpy.power(10, Lmax), z_m, dl) * 1e6 sigma, fsigma = numpy.log10( get_Lbins([SURVEY_NOISE, SURVEY_NOISE * 5], z_m, dl, 'muJy') * (1.4 / 3)**(-.7)) print z_m, dl, sigma, fsigma print SURVEY_NOISE, SURVEY_NOISE * 5, SURVEY_AREA #area = 6672*sqDeg2sr #143165.15 49996.49 59876.8861135 sbin3 = get_sbins(10**bins2, z_m, dl) * 1e6 sbin4 = get_sbins(10**bins3, z_m, dl) * 1e6 #L_s = numpy.log10(get_Lbins(ssbin,z_m,dl,'muJy')) #print expt.binsMedian #sys.exit() xreco = get_Lbins(xrecon, z_m, dl, 'muJy') #*(1.4/3)**(-.7) yreco = yrecon print SMIN, SMAX #sys.exit() lin_yrecon = numpy.log10(yreco) lin_xrecon = numpy.log10(xreco) bins2 = numpy.arange(15., 25., 0.4) bins = numpy.arange(fsigma, 26.2, 0.4) #bin +0.2 if not os.path.isfile( 'cos_data/cos_s%s_LF.el' % num) and z_new or not os.path.isfile( 'cos_data/cos_s%s_LF_old.el' % num) and not z_new or Replot: print 'Reploting the RLF and storing them for next time.' #l,z_l = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,21), F='uJy',L=True,getz=True) #l2,z_l2 = open_anytype('cos_data/cosmos_d1_0_8arc.txt',(12,24), F='uJy',L=True,getz=True) if z_new: L, z_L = open_anytype('cos_data/cos_s%s.txt' % num, (2, 3), F='uJy', L=True, getz=True, band='S') print 'this is the new z bins (please check if lumfuncUtils and cos_manifest are using the right z)' else: L, z_L = open_anytype('cos_data/cos_s%s_old.txt' % num, (2, 3), F='uJy', L=True, getz=True, band='S') print 'this is the old z binning style. (please check if lumfuncUtils and cos_manifest are using the right z)' L_c, z_c = open_anytype('cosmos_counter_parts_II.txt', (3, 4), [z_min, z_max], F='uJy', L=True, getz=True, band='S') z_c2, S_c2, L_c2 = numpy.loadtxt('cosmos_counter_parts_II.txt', unpack=True, usecols=(3, 4, 5)) L_c2 = L_c2[(z_c2 < z_max) & (z_c2 > z_min)] S_c2 = S_c2[(z_c2 < z_max) & (z_c2 > z_min)] z_c2 = z_c2[(z_c2 < z_max) & (z_c2 > z_min)] #rho_1,er1 = calc_Vmax(calcu_zeff(z_l,l,11.5e-32),l,bins,z_max,z_min,area) #rho_2,er2 = calc_Vmax(calcu_zeff(z_l2,l2,11.5e-32),l2,bins,z_max,z_min,area) #print numpy.log10(L) #print (1.4/3)**(-.7) #print numpy.log10(L*(1.4/3)**(-.7)) #sys.exit() rho_3, er3 = calc_Vmax(calcu_zeff(z_L, L, 1.15e-31), L, bins, z_max, z_min, area) rho_4, er4 = calc_Vmax(99., L, bins, z_max, z_min, area) rho_5, er5 = calc_Vmax(calcu_zeff(z_c, L_c, 1.15e-31), L_c, bins, z_max, z_min, area) rho_6, er6 = calc_Vmax(calcu_zeff(z_c2, 10**L_c2, 1.15e-31), 10**L_c2, bins, z_max, z_min, area) if z_new: f = open('cos_data/cos_s%s_LF.el' % num, 'w') else: f = open('cos_data/cos_s%s_LF_old.el' % num, 'w') for i in range(len(bins)): f.write('%5.1f %5.3f %5.3f %5.3f %5.3f %5.3f %5.3f\n' % (bins[i], rho_3[i], er3[i], rho_5[i], er5[i], rho_6[i], er6[i])) f.close() dl_c = get_dl(z_c2) L_c3 = numpy.log10( get_Lbins(S_c2, z_c2, numpy.array(dl_c), 'muJy') * (1.4 / 3.)**(-.7)) else: if z_new: bins, rho_3, er3, rho_5, er5, rho_6, er6 = numpy.loadtxt( 'cos_data/cos_s%s_LF.el' % num, unpack=True) print 'Using stored RLF for the new z (The one with more z bins). If you want to calculate the plot the set "Replot=True"' else: bins, rho_3, er3, rho_5, er5, rho_6, er6 = numpy.loadtxt( 'cos_data/cos_s%s_LF_old.el' % num, unpack=True) print 'Using stored RLF for the is old z bins. If you want to calculate the plot the set "Replot=True"' #novak 2017 L_n = [21.77, 22.15, 22.46, 22.77, 23.09, 23.34] rho_n = [-2.85, -2.88, -3.12, -3.55, -4.05, -4.63] L_ner_u = [0.23, 0.18, 0.19, 0.2, 0.21, 0.28] L_ner_d = [1.1, 0.15, 0.14, 0.12, 0.12, 0.048] rho_ner = [0.09, 0.03, 0.0355, 0.059, 0.1, 0.234] #novak 2018 L_n2 = [21.77, 22.24, 22.68, 23.16, 23.69, 24.34, 24.74, 25.56] rho_n2 = [-2.84, -2.90, -3.34, -4.00, -4.92, -4.92, -5.22, -5.07] L_ner_u2 = [0.23, 0.27, 0.34, 0.37, 0.35, 0.21, 0.31, 0.03] L_ner_d2 = [1.0, 0.24, 0.17, 0.14, 0.16, 0.30, 0.20, 0.50] rho_ner_u2 = [0.08, 0.024, 0.038, 0.083, 0.28, 0.28, 0.45, 0.34] rho_ner_d2 = [0.07, 0.023, 0.035, 0.070, 0.25, 0.25, 0.37, 0.30] #l*= (1.4/3)**(-.7) #l2*= (1.4/3)**(-.7) #L*= (1.4/3)**(-.7) #Lbins2 = numpy.log10(lf.get_Lbins(sbin2[sbin2>0],z_m,dl)) print z_min, z_max #bins = numpy.arange(fsigma -4.2,30,0.4) #bin #s,s_z = numpy.loadtxt('sdss/dr12s_s1_vol.txt', unpack=True, usecols=(-1,2)) s, s_z = numpy.loadtxt('cos_data/cos_s%s.txt' % (num), unpack=True, usecols=(-1, 2)) #s=s*1e6 print fsigma #sys.exit() Ncount = sum(Nbin[fsigma > ssbin]) Llmin = numpy.log10( get_Lbins([fsigma / numpy.sqrt(Ncount)], z_min, get_dl(z_min), 'muJy'))[0] Llmin *= (1.4 / 3.)**(-.7) print Llmin L_s = (get_Lbins(ssbin, z_m, dl, 'muJy')) L_s *= (1.4 / 3.)**(-.7) L_s = numpy.log10(L_s) rho_1 = lumfuncs( Nbin, L_s, calc_Vmax(calcu_zeff(z_m, 10**L_s), L_s, L_s, z_max, z_min, area, getLF=False)) #sys.exit() fig, ax = plt.subplots() plt.rc('lines', linewidth=2) ''' if modelFamily in ['LFdpl','LFdpl_dpl']: faint =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3), Lstar_2,Lslope_2,Lslope2_2,Lnorm_2) elif modelFamily in ['LFpl','LFdpl_pl']: faint =lumfuncUtils.powerlaw(numpy.power(10,bins3), Lstar_2,Lslope_2,Lnorm_2) elif modelFamily in ['LFpl_dpl','LFdpl_dpl_z']: faint =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar,Lslope,Lslope2,Lnorm) else: faint = lumfuncUtils.lognormpl(numpy.power(10,bins3), Lstar_2,Lslope_2,Lsigma,Lnorm_2) ''' #phi_dpl =lumfuncUtils.doublepowerlaw(numpy.power(10,bins3),Lstar ,Lslope,Lslope2,Lnorm) #L_2 = numpy.power(10,bins3)/(1 + z_m)**(alpha_SF+z_m*beta_SF) L_2 = numpy.power( 10, bins3) * (1.4 / 3.)**(-.7) / (1 + z_m)**(2.95 - z_m * 0.29) L_1 = numpy.power( 10, bins3) * (1.4 / 3.)**(-.7) / (1 + z_m)**(2.86 - z_m * 0.7) phi_agn = lumfuncUtils.doublepowerlaw(L_1, 24.29, 1.27, 0.49, numpy.log10(2.5 * 10**(-5.5))) phi_sf = lumfuncUtils.doublepowerlaw(L_2, 22.11, 2.4, 0.43, -3.10) #0.33 2.97 phi_logn = lumfuncUtils.lognormpl(L_2, numpy.log10(1.85e21), 1.22, 0.63, numpy.log10(3.55e-3)) #phi_pl =lumfuncUtils.powerlaw(numpy.power(10,bins3),Lstar ,Lslope,Lnorm) dm = 0. #05 hm = 0. Map = expt.evaluate(params)[0] bins_map = get_Lbins(expt.binsMedian, z_m, dl, 'muJy') #plt.plot(numpy.log10(10**bins3 *(1.4/3)**(-.7)),numpy.log10(faint)-dm,'--b' ,label='faint-end') plt.plot(bins3, numpy.log10(phi_sf) - dm, '--c', label='local sf') plt.plot(bins3, numpy.log10(phi_agn) - dm, '--c', label='local agn') plt.plot(bins3, numpy.log10(phi_logn) - dm, '--r', label='local lognorm') #plt.plot(numpy.log10(bins_map),numpy.log10(Map), label='my MAP') plt.errorbar(lin_xrecon + hm, lin_yrecon - dm, fmt='-k', label='MAP', linewidth=2) plt.errorbar(lin_xrecon + hm, numpy.log10(yrecon_avr) - dm, fmt='-g', label='Average') #plt.plot(L_s2+.2, numpy.log10(rho_10), '*c',label='average LF',markersize=13)#bin + 0.2 plt.errorbar(bins, rho_3, yerr=er3, fmt='ob', label='extracted', markersize=8) #bin #plt.errorbar(bins2[17:],rho_3[17:] ,yerr=er3[17:],fmt='ob',label='extracted',markersize=8) #bin #plt.errorbar(bins,rho_5 ,yerr=er5,fmt='*r',label='Total',markersize=8) #bin #plt.errorbar(bins,rho_6 ,yerr=er6,fmt='>g',label='Total LF',markersize=10) #bin plt.plot(L_s, numpy.log10(rho_1), '*m', label='low LF', markersize=10) #plt.errorbar(bins[1:],rho_2[1:] ,yerr=er2[1:],fmt='ok',label='dectected catalog',markersize=10) #bin #plt.errorbar(bins2[1:]-0.2,rho_3[1:],yerr=er3[1:],fmt='sr',label='noisy',markersize=10) #bin #plt.errorbar(bins2[1:]-0.2,rho_4[1:],yerr=er4[1:],fmt='vm',label='noisy lim',markersize=10) #bin #plt.errorbar(numpy.array(L_n),numpy.array(rho_n) -0.4,xerr=[L_ner_d,L_ner_u],yerr=rho_ner, fmt='^c', label='Novak et al 2017') #plt.errorbar(numpy.array(L_n2),numpy.array(rho_n2) -0.4,xerr=[L_ner_d2,L_ner_u2],yerr=[rho_ner_d2,rho_ner_u2], fmt='sk', label='Total RLF Novak et al 2018') #plt.plot(bins3+0.4,numpy.log10(logn)-0.4 ,'--k', label='faint-end') #plt.plot(bins3,numpy.log10(logn) ,'--', label='lognorm') #plt.plot(bins3,numpy.log10(logn2)-dm,'--r', label='lognorm2') # #plt.plot(bins3,numpy.log10(phi_dpl2), label='dpl bright-end2') #plt.plot(Lbins4[(Lbins4<23.6) &(Lbins4>22.12)],numpy.log10(phi_dpl)[(Lbins4<23.6) &(Lbins4>22.12)], '-c',linewidth=5 ,label = r'$\rm{ MAP dpl < 5\sigma}$') #plt.plot(bins2,numpy.log10(logn_2),label='starforming_2') #plt.plot(bins2,numpy.log10(logn_3),label='starforming_3') #plt.plot(bins2,numpy.log10(logn_4),label='starforming_4') #plt.fill_between(xrecon,numpy.log10(yrecon - yrecon_down2 ) ,numpy.log10(yrecon+yrecon_up2), color='c',alpha=0.2) #plt.errorbar(lin_xrecon+0.4,lin_yrecon -0.4,fmt='-b', label='MAP',linewidth=2) #plt.errorbar(lin_xrecon+0.4,lin_yrecon- 0.4,yerr=numpy.log10(yrecon_rms),fmt='r',label='rms') #plt.plot(L_s, numpy.log10(rho_1), '*c',label='average LF',markersize=10) #plt.plot(L_s5, numpy.log10(rho_14)-0.2, '*r',label='average LF',markersize=13) #plt.plot(L_s6+0.0, numpy.log10(rho_16)-0.2, '*b',label='average LF(bin)',markersize=13) #plt.plot(bins2[:-1], numpy.log10(rho_15), '*g',label='LF average',markersize=13) #print len(rho_11),len(rho_10),len(rho_12) #plt.fill_betweenx(numpy.log10(rho_10) ,L_s3,L_s4, color='red',alpha=0.2) #plt.plot(L_s6, numpy.log10(rho_13), '*b',label='average LF(bin+0.2)',markersize=13)#bin + 0.2 #plt.plot(L_s1, numpy.log10(rho_1), 'oc',label='average LF(bin)',markersize=13)#bin #plt.plot(Lbins4,lin_phi ,'--b',label='MAP') #plt.fill_between(lin_xrecon+.0,numpy.log10((yrecon_avr -yrecon_rms))-dm,numpy.log10(yrecon_avr +yrecon_rms)-dm , color='r',alpha=0.3) #plt.fill_between(lin_xrecon[1:-1]+0.2,numpy.log10(yreco[1:-1] - yrecon_down[1:-1] )-dm,numpy.log10(yreco[1:-1]+yrecon_up[1:-1])-dm , color='b',alpha=0.2) plt.fill_between(lin_xrecon + hm, numpy.log10((yrecon_d)), numpy.log10(yrecon_u) - dm, color='k', alpha=0.2) #plt.errorbar(bins[2:],rho_1[2:],yerr=er1[2:],fmt = 'ob',label='Detected') #plt.errorbar(bins2,rho_6-0.2,yerr=er6,fmt='ob',label='Detected') #working one #plt.plot(Lbins2,rho,'ob',label='simulation') #plt.plot(Lbins3,rho_,label='Noisy fluxes') #rho_2 #plt.errorbar(bins,rho_2 -0.2,yerr=er2,fmt='ok',label='data',markersize=10) #bin +0.2 #plt.errorbar(bins2,rho_6-0.2,yerr=er6,fmt='vm',label='Noisy NVSS') #plt.errorbar(bins2,rho_7-0.2,yerr=er6,fmt='xc',label='NVSS Detected') #for i in range(len(bins)): # print bins[i], rho_2[i] #sys.exit() #plt.errorbar(Lbins2,rho, err,fmt = 'ob',label='simulation') #plt.errorbar(Lbins2,rho_1,err_1,fmt = 'or',label='simulation_noisy') #plt.errorbar(L2,rho2,color='g',label='Analytic') #plt.errorbar(L3,rho3,color='g',label='Analytic II') #plt.axvspan(22.55 ,23.51,color='r',alpha=0.2) #plt.axvline(Lmin,color='r',linestyle='dashed') plt.axvline(fsigma, color='k', linestyle='dashed') #plt.axvline(sigma,color='g') plt.axvline(Llmin, color='r', linewidth=5) #plt.axvline(sigma2,color='m') #plt.axvline(fsigma2,color='m') #plt.axvline(23.89,color='b') #plt.axvline(23.71,color='c') #plt.axvline(23.52,color='r') #plt.axvline(truth['LMIN'],color='r', linestyle='dashed', label = 'True params') #plt.axvline(truth['LMAX'],color='r', linestyle='dashed') #plt.axvline(truth['LSTAR'],color='b') #plt.text(truth['LSTAR']-0.2,-9., '$L_*$',fontsize=18) #plt.axvline(Lmax,color='r', label= 'MAP params') #plt.axvline(Lstar,color='b',linestyle='dashed') #plt.axvline(Lmax, color='r',linestyle='dashed') #plt.text(Lstar-0.12,-10.5, '$L_*$',fontsize=18) #plt.text(fsigma+0.1,-6.7, '$5\sigma$',fontsize=25) #plt.text(sigma+0.1,-6.7, '$\sigma$',fontsize=25) plt.xlabel(r'$\rm{log_{10}[L_{1.4 GHz}/(W}$ $\rm{Hz^{-1})]}$', fontsize=30) plt.ylabel(r'$\rm{log_{10}[\rho_m(Mpc^{-3} mag^{-1})]}$', fontsize=30) plt.text(19.9, -7.7, '%.1f < z < %.1f' % (z_min, z_max), fontsize=30, alpha=0.6) # \n $M_i$ < -22 #plt.text(23.9,-9.7,'%s'%outdir,fontsize = 16 ) # \n $M_i$ < -22 plt.tick_params(axis='both', which='major', labelsize=20, width=3) plt.tick_params(axis='both', which='minor', labelsize=10, width=2) #plt.tight_layout() #plt.xtick(fontsize=15) #plt.ytick(fontsize=15) plt.xlim(18, 27.) plt.ylim(-11.2, 0.) #plt.ylim(-11,-5.5) ax.xaxis.set_minor_locator(AutoMinorLocator()) ax.yaxis.set_minor_locator(AutoMinorLocator()) #print truth['LMIN'] plt.legend(frameon=False).draggable() plotf = '%s/LF_recon_s1.pdf' % (outdir) plt.show() return 0
def main(): """ """ print 'Settings file is %s' % setf # Import the settings variables set_module = importlib.import_module(setf) globals().update(set_module.__dict__) expt = countModel(modelFamily, nlaws, setf, [dataset], floatNoise) recon_expt = countModel(modelFamily, nlaws, setf, [dataset], floatNoise) #print expt.data #print expt.bins # Get MAP parameters print '\n' * 5 print len(expt.parameters) ncols = len(expt.parameters) summf = os.path.join(outdir, '1-summary.txt') summary = numpy.genfromtxt(summf)[-1, :] drawmap = summary[-(ncols + 2):-2] ana=pymultinest.analyse.Analyzer(ncols-1,\ outputfiles_basename=os.path.join(outdir,outstem)) drawmap = ana.get_best_fit()['parameters'] if dataset == 'sdss': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 20: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][4:])) print datafiles[0][4:] elif dataset == 'cosmos': print datafiles, len(datafiles[0]) dataf = datafiles[0] if len(dataf) == 24: num = dataf[-5] print num else: num = dataf[-6:-4] d = numpy.genfromtxt('%s/%s' % (outdir, datafiles[0][8:])) print datafiles[0][8:] elif 'sim' in dataset: d = numpy.genfromtxt(os.path.join(outdir, 'sim.txt')) ssbin = d[:, 2] Nbin = d[:, 3] dnds = d[:, 4] sbin2 = ssbin dnds2 = dnds #bins2 = numpy.arange(21.4,29.2,0.4) bins2 = numpy.arange(18.0, 29.2, 0.4) bins3 = numpy.arange(18., 29.2, 0.01) print len(expt.parameters) print 'this is 1st num ', num #sys.exit() params = drawmap # [0] #for i in drawmap: # params.append(i) print params print expt.parameters if modelFamily in ['LFsch', 'LFdpl_pl', 'LFdpl_dpl', 'LFlognorm_dpl']: Lnorm = params[expt.parameters.index('LNORM')] Lstar = params[expt.parameters.index('LSTAR')] Lslope = params[expt.parameters.index('LSLOPE')] #Lzevol=params[expt.parameters.index('LZEVOL')] if modelFamily in ['LFdpl_pl', 'LFdpl_dpl', 'LFlognorm_dpl']: Lslope2 = params[expt.parameters.index('LSLOPE2')] if modelFamily in [ 'LFlognorm', 'LFpl', 'LFdpl', 'LFdpl_pl', 'LFlognorm_dpl', 'LFdpl_dpl' ]: Lnorm_2 = params[expt.parameters.index('LNORM_2')] Lstar_2 = params[expt.parameters.index('LSTAR_2')] Lslope_2 = params[expt.parameters.index('LSLOPE_2')] if modelFamily in ['LFdpl_dpl', 'LFdpl']: Lslope2_2 = params[expt.parameters.index('LSLOPE2_2')] if modelFamily in ['LFlognorm', 'LFlognorm_dpl']: Lsigma = params[expt.parameters.index('LSIGMA')] Lmin = params[expt.parameters.index('LMIN')] Lmax = params[expt.parameters.index('LMAX')] truth = { 'noise': 150, 'LMIN': 22., 'LMAX': 24.5, 'LNORM': numpy.log10(1e-7), 'LSTAR': 23.3, 'LSLOPE': 3., 'LSLOPE2': 1. } #z = [0, 0.5, 1 , 1.5, 2, 2.3, 2.6, 3, 3.5, 4] #old #z = [ 0.7, 1 , 1.35, 1.7, 2, 2.3, 2.6, 3, 3.5, 4]# older print expt.parameters s = pylab.loadtxt('%s/recon_stats.txt' % outdir) xrecon = s[:-1, 0] yrecon = s[:-1, 1] yrecon_d = s[:-1, 2] yrecon_u = s[:-1, 3] yrecon_rms = s[:-1, 4] yrecon_avr = s[:-1, 5] yrecon_rms_down = yrecon_rms for i in range(len(yrecon_rms)): if yrecon_avr[i] < yrecon_rms[i]: yrecon_rms_down[i] = 10**(numpy.log10(yrecon_avr[i]) - 0.01) #print xrecon #print yrecon #sys.exit() z = [ 0.1, 0.4, 0.6, 0.8, 1.0, 1.3, 1.6, 2.0, 2.15, 2.35, 2.55, 2.85, 3.15, 3.5 ] #oldest ;) num = int(num) #num = 1. print num z_min, z_max, z_m = get_z(num) dl = get_dl(z_m) Vmax = get_Vmax(z_min, z_max) dsdl = get_dsdl(z_m, dl) z_m = (z_min + z_max) / 2 dl = get_dl(z_m) print z_min, z_max print expt.kind area = SURVEY_AREA * sqDeg2sr area1 = SURVEY_AREA * sqDeg2sr print SURVEY_AREA SMIN = get_sbins(numpy.power(10, Lmin), z_m, dl) * 1e6 SMAX = get_sbins(numpy.power(10, Lmax), z_m, dl) * 1e6 sigma, fsigma = numpy.log10( get_Lbins([SURVEY_NOISE, SURVEY_NOISE * 5], z_m, dl, 'muJy')) #*(1.4/3)**(-.7)) sigma2, fsigma2 = numpy.log10(get_Lbins([450, 2400], z_m, dl, 'muJy')) print z_m, dl, sigma, fsigma print SURVEY_NOISE, SURVEY_NOISE * 5, SURVEY_AREA #area = 6672*sqDeg2sr #143165.15 49996.49 59876.8861135 sbin3 = get_sbins(10**bins2, z_m, dl) * 1e6 sbin4 = get_sbins(10**bins3, z_m, dl) * 1e6 L_s = numpy.log10(get_Lbins(ssbin, z_m, dl, 'muJy')) #print expt.binsMedian #sys.exit() xreco = get_Lbins(xrecon, z_m, dl, 'muJy') #*(1.4/3)**(-.7) yreco = yrecon print SMIN, SMAX #sys.exit() lin_yrecon = numpy.log10(yreco) print xrecon lin_xrecon = numpy.log10(xreco) bins2 = numpy.arange(15., 25., 0.4) bins5, rho_5, er5, rho_6, er6 = numpy.loadtxt('cos_data/skads_s1_3_LF.el', unpack=True) #novak 2017 L_n = [21.77, 22.15, 22.46, 22.77, 23.09, 23.34] rho_n = [-2.85, -2.88, -3.12, -3.55, -4.05, -4.63] L_ner_u = [0.23, 0.18, 0.19, 0.2, 0.21, 0.28] L_ner_d = [1.1, 0.15, 0.14, 0.12, 0.12, 0.048] rho_ner = [0.09, 0.03, 0.0355, 0.059, 0.1, 0.234] #novak 2018 L_n2 = [21.77, 22.24, 22.68, 23.16, 23.69, 24.34, 24.74, 25.56] rho_n2 = [-2.84, -2.90, -3.34, -4.00, -4.92, -4.92, -5.22, -5.07] L_ner_u2 = [0.23, 0.27, 0.34, 0.37, 0.35, 0.21, 0.31, 0.03] L_ner_d2 = [1.0, 0.24, 0.17, 0.14, 0.16, 0.30, 0.20, 0.50] rho_ner_u2 = [0.08, 0.024, 0.038, 0.083, 0.28, 0.28, 0.45, 0.34] rho_ner_d2 = [0.07, 0.023, 0.035, 0.070, 0.25, 0.25, 0.37, 0.30] #l*= (1.4/3)**(-.7) #l2*= (1.4/3)**(-.7) #L*= (1.4/3)**(-.7) #Lbins2 = numpy.log10(lf.get_Lbins(sbin2[sbin2>0],z_m,dl)) print z_min, z_max bins = numpy.arange(fsigma - 0., 26.2, 0.4) #bin +0.2 #bins = numpy.arange(fsigma -4.2,30,0.4) #bin #s,s_z = numpy.loadtxt('sdss/dr12s_s1_vol.txt', unpack=True, usecols=(-1,2)) fig, ax = plt.subplots() plt.rc('lines', linewidth=2) if modelFamily in ['LFdpl', 'LFdpl_dpl']: faint = lumfuncUtils.doublepowerlaw(numpy.power(10, bins3), Lstar_2, Lslope_2, Lslope2_2, Lnorm_2) elif modelFamily in ['LFpl', 'LFdpl_pl']: faint = lumfuncUtils.powerlaw(numpy.power(10, bins3), Lstar_2, Lslope_2, Lnorm_2) else: faint = lumfuncUtils.lognormpl(numpy.power(10, bins3), Lstar_2, Lslope_2, Lsigma, Lnorm_2) dm = 0. #05 hm = 0. plt.errorbar(bins5, rho_6, yerr=er6, fmt='sr', label=r'$\rm{25 >\log_{10}(L) > %s}$' % (20.8), markersize=10) plt.errorbar(bins5, rho_5, yerr=er5, fmt='*b', label=r'$\rm{25 >\log_{10}(L) > %s}$' % (20.8), markersize=10) plt.plot(bins3 + hm, numpy.log10(faint) - dm, '--b', label='faint-end') plt.errorbar(lin_xrecon + hm, lin_yrecon - dm, fmt='-k', label='MAP', linewidth=2) plt.errorbar(lin_xrecon + hm, numpy.log10(yrecon_avr) - dm, fmt='-g', label='Average') #plt.errorbar(numpy.array(L_n),numpy.array(rho_n) -0.4,xerr=[L_ner_d,L_ner_u],yerr=rho_ner, fmt='^c', label='Novak et al 2017') #plt.errorbar(numpy.array(L_n2),numpy.array(rho_n2) -0.4,xerr=[L_ner_d2,L_ner_u2],yerr=[rho_ner_d2,rho_ner_u2], fmt='sk', label='Total RLF Novak et al 2018') plt.fill_between(lin_xrecon + hm, numpy.log10((yrecon_d)), numpy.log10(yrecon_u) - dm, color='k', alpha=0.2) plt.axvline(fsigma, color='k', linestyle='dashed') #plt.axvline(sigma,color='g') #plt.axvline(Llmin,color='r',linewidth=5) plt.xlabel(r'$\rm{log_{10}[L_{3 GHz}/(W}$ $\rm{Hz^{-1})]}$', fontsize=30) plt.ylabel(r'$\rm{log_{10}[\rho_m(Mpc^{-3} mag^{-1})]}$', fontsize=30) plt.text(19.9, -7.7, '%.1f < z < %.1f' % (0.1, 0.4), fontsize=30, alpha=0.6) # \n $M_i$ < -22 #plt.text(23.9,-9.7,'%s'%outdir,fontsize = 16 ) # \n $M_i$ < -22 plt.tick_params(axis='both', which='major', labelsize=20, width=3) plt.tick_params(axis='both', which='minor', labelsize=10, width=2) plt.xlim(18, 26.) plt.ylim(-7, -1) ax.xaxis.set_minor_locator(AutoMinorLocator()) ax.yaxis.set_minor_locator(AutoMinorLocator()) #print truth['LMIN'] plt.legend(frameon=False).draggable() plotf = '%s/LF_recon_s1.pdf' % (outdir) plt.show() return 0