def make_sfr_radius_mass_plots(msF,merF,rfiter=3): for sk,fk in zip(snap_keys,fil_keys): parameters, pcd, pc, pcd = make_pc_dict(msF,sk,fk) pc1 = pc.X[:,0].flatten() pc2 = pc.X[:,1].flatten() pc3 = pc.X[:,2].flatten() pc4 = pc.X[:,3].flatten() pc5 = pc.X[:,4].flatten() pc6 = pc.X[:,5].flatten() pc7 = pc.X[:,6].flatten() PCs=pandas.DataFrame(pc.X) asym = get_all_morph_val(msF,sk,fk,'ASYM') gini = get_all_morph_val(msF,sk,fk,'GINI') m20 = get_all_morph_val(msF,sk,fk,'M20') cc = get_all_morph_val(msF,sk,fk,'CC') Mstat = get_all_morph_val(msF,sk,fk,'MID1_MPRIME') Istat = get_all_morph_val(msF,sk,fk,'MID1_ISTAT') Dstat = get_all_morph_val(msF,sk,fk,'MID1_DSTAT') sfid = get_all_snap_val(msF,sk,'SubfindID') S_GM20 = SGM20(gini,m20) F_GM20 = FGM20(gini,m20) latest_NumMajorMergersLastGyr = get_mergerinfo_val(merF,sk,'latest_NumMajorMergersLastGyr') boolean_merger1 = latest_NumMajorMergersLastGyr >= 1.0 this_NumMajorMergersLastGyr = get_mergerinfo_val(merF,sk,'this_NumMajorMergersLastGyr') boolean_merger2 = this_NumMajorMergersLastGyr >= 1.0 mhalo = get_all_snap_val(msF,sk,'Mhalo_Msun') mstar = get_all_snap_val(msF,sk,'Mstar_Msun') log_mstar_mhalo = np.log10( mstar/mhalo ) redshift = msF['nonparmorphs'][sk][fk]['CAMERA0']['REDSHIFT'].value[0] #set up RF data frame above, run or save input/output for each loop iteration rf_dict = {} PARAMS_MOD=True PARAMS_ONLY=False PCS_ONLY=False RUN_RF=True RF_ITER=rfiter rf_masscut = 10.0**(10.5) if PCS_ONLY is True: gi = np.where(np.isfinite(pc1)*np.isfinite(pc2)*np.isfinite(pc3)*np.isfinite(pc4)*np.isfinite(pc5)*np.isfinite(pc6)*np.isfinite(pc7)*(mstar >= rf_masscut) != 0)[0] print(gi.shape, pc1.shape) rf_dict['pc1']=pc1[gi] rf_dict['pc2']=pc2[gi] rf_dict['pc3']=pc3[gi] rf_dict['pc4']=pc4[gi] rf_dict['pc5']=pc5[gi] rf_dict['pc6']=pc6[gi] rf_dict['pc7']=pc7[gi] rf_dict['mergerFlag']=boolean_merger1[gi] rf_dict['SubfindID']=sfid[gi] cols=['pc1','pc2','pc3','pc4','pc5','pc6','pc7'] rflabel='pcs' if PARAMS_ONLY is True: gi = np.where(np.isfinite(gini)*np.isfinite(m20)*np.isfinite(asym)*np.isfinite(Mstat)*np.isfinite(Istat)*np.isfinite(Dstat)*np.isfinite(cc)*(mstar >= rf_masscut) != 0)[0] print(gi.shape, pc1.shape) rf_dict['gini']=gini[gi] rf_dict['m20']=m20[gi] rf_dict['asym']=asym[gi] rf_dict['Mstat']=Mstat[gi] rf_dict['Istat']=Istat[gi] rf_dict['Dstat']=Dstat[gi] rf_dict['cc']=cc[gi] rf_dict['mergerFlag']=boolean_merger1[gi] rf_dict['SubfindID']=sfid[gi] cols=['gini','m20','asym','Mstat','Istat','Dstat','cc'] rflabel='params' if PARAMS_MOD is True: gi = np.where(np.isfinite(S_GM20)*np.isfinite(F_GM20)*np.isfinite(asym)*np.isfinite(Mstat)*np.isfinite(Istat)*np.isfinite(Dstat)*np.isfinite(cc)*(mstar >= rf_masscut) != 0)[0] print(gi.shape, pc1.shape) rf_dict['dGM20']=S_GM20[gi] rf_dict['fGM20']=F_GM20[gi] rf_dict['asym']=asym[gi] rf_dict['Mstat']=Mstat[gi] rf_dict['Istat']=Istat[gi] rf_dict['Dstat']=Dstat[gi] rf_dict['cc']=cc[gi] rf_dict['mergerFlag']=boolean_merger1[gi] rf_dict['SubfindID']=sfid[gi] cols=['dGM20','fGM20','asym','Mstat','Istat','Dstat','cc'] rflabel='paramsmod' if RUN_RF is True: if redshift < 4.2: df=pandas.DataFrame(rf_dict) print("Running Random Forest... ", sk, fk) result, labels, label_probability = PyML.randomForestMC(df,iterations=RF_ITER,cols=cols) #result = summary statistics, feature importances (N iterations x N statistics/importances) #labels = labels following random forest (N galaxies x N iterations) #label_probability = probability of label following random forest (N galaxies x N iterations) #saves the output as a file if not os.path.lexists('rfoutput'): os.mkdir('rfoutput') labels['mergerFlag']=df['mergerFlag'] label_probability['mergerFlag']=df['mergerFlag'] labels['SubfindID']=df['SubfindID'] label_probability['SubfindID']=df['SubfindID'] df.to_pickle('rfoutput/'+rflabel+'_data_cut_{}_{}.pkl'.format(sk,fk)) result.to_pickle('rfoutput/'+rflabel+'_result_cut_{}_{}.pkl'.format(sk,fk)) labels.to_pickle('rfoutput/'+rflabel+'_labels_cut_{}_{}.pkl'.format(sk,fk)) label_probability.to_pickle('rfoutput/'+rflabel+'_label_probability_cut_{}_{}.pkl'.format(sk,fk)) PCs.to_pickle('rfoutput/'+rflabel+'_pc_cut_{}_{}.pkl'.format(sk,fk)) bins=18 xlim=[9.7,12.2] ylim=[-2.0,3.0] rlim=[0.1,1.7] plot_filen = 'pc1/sfr_radius_mass_'+sk+'_'+fk+'_pc1.pdf' if not os.path.lexists('pc1'): os.mkdir('pc1') f1 = pyplot.figure(figsize=(3.5,5.0), dpi=300) pyplot.subplots_adjust(left=0.15, right=0.98, bottom=0.08, top=0.88,wspace=0.0,hspace=0.0) colorobj = plot_sfr_radius_mass(msF,merF,sk,fk,f1,xlim=xlim,ylim=ylim,rlim=rlim,Cval=pc1,vmin=-2,vmax=3,bins=bins) gth.make_colorbar(colorobj,title='PC1 morphology',ticks=[-2,-1,0,1,2,3]) f1.savefig(plot_filen,dpi=300) pyplot.close(f1) plot_filen = 'pc3/sfr_radius_mass_'+sk+'_'+fk+'_pc3.pdf' if not os.path.lexists('pc3'): os.mkdir('pc3') f1 = pyplot.figure(figsize=(3.5,5.0), dpi=300) pyplot.subplots_adjust(left=0.15, right=0.98, bottom=0.08, top=0.88,wspace=0.0,hspace=0.0) colorobj = plot_sfr_radius_mass(msF,merF,sk,fk,f1,xlim=xlim,ylim=ylim,rlim=rlim,Cval=pc3,vmin=-1,vmax=3,bins=bins) gth.make_colorbar(colorobj,title='PC3 morphology',ticks=[-1,0,1,2,3]) f1.savefig(plot_filen,dpi=300) pyplot.close(f1) plot_filen = 'asym/sfr_radius_mass_'+sk+'_'+fk+'_asym.pdf' if not os.path.lexists('asym'): os.mkdir('asym') f1 = pyplot.figure(figsize=(3.5,5.0), dpi=300) pyplot.subplots_adjust(left=0.15, right=0.98, bottom=0.08, top=0.88,wspace=0.0,hspace=0.0) colorobj = plot_sfr_radius_mass(msF,merF,sk,fk,f1,xlim=xlim,ylim=ylim,rlim=rlim,Cval=asym,vmin=0.0,vmax=0.4,bins=bins) gth.make_colorbar(colorobj,title='Asymmetry',ticks=[0.0,0.20,0.40]) f1.savefig(plot_filen,dpi=300) pyplot.close(f1) plot_filen = 'merger1/sfr_radius_mass_'+sk+'_'+fk+'_merger1.pdf' if not os.path.lexists('merger1'): os.mkdir('merger1') f1 = pyplot.figure(figsize=(3.5,5.0), dpi=300) pyplot.subplots_adjust(left=0.15, right=0.98, bottom=0.08, top=0.88,wspace=0.0,hspace=0.0) colorobj = plot_sfr_radius_mass(msF,merF,sk,fk,f1,xlim=xlim,ylim=ylim,rlim=rlim,Cval=boolean_merger1,min_bin=3,gridf='fraction_grid',vmin=0.0,vmax=0.5,bins=bins) gth.make_colorbar(colorobj,title='fraction major merger',ticks=[0.0,0.25,0.50],format='%.2f') f1.savefig(plot_filen,dpi=300) pyplot.close(f1) plot_filen = 'merger3/sfr_radius_mass_'+sk+'_'+fk+'_merger3.pdf' if not os.path.lexists('merger3'): os.mkdir('merger3') f1 = pyplot.figure(figsize=(3.5,5.0), dpi=300) pyplot.subplots_adjust(left=0.15, right=0.98, bottom=0.08, top=0.88,wspace=0.0,hspace=0.0) colorobj = plot_sfr_radius_mass(msF,merF,sk,fk,f1,xlim=xlim,ylim=ylim,rlim=rlim,Cval=boolean_merger1,min_bin=3,gridf='normed_proportion_grid',vmin=0.0,vmax=1.0,bins=bins) gth.make_colorbar(colorobj,title='proportion of major mergers',ticks=[0.0,0.5,1.0],format='%.2f') f1.savefig(plot_filen,dpi=300) pyplot.close(f1) plot_filen = 'mstar_mhalo/sfr_radius_mass_'+sk+'_'+fk+'_mstar_mhalo.pdf' if not os.path.lexists('mstar_mhalo'): os.mkdir('mstar_mhalo') f1 = pyplot.figure(figsize=(3.5,5.0), dpi=300) pyplot.subplots_adjust(left=0.15, right=0.98, bottom=0.08, top=0.88,wspace=0.0,hspace=0.0) colorobj = plot_sfr_radius_mass(msF,merF,sk,fk,f1,xlim=xlim,ylim=ylim,rlim=rlim,Cval=log_mstar_mhalo,min_bin=3,gridf='median_grid',vmin=-2.0,vmax=-0.5,bins=bins) gth.make_colorbar(colorobj,title='median $log_{10} M_*/M_{h}$',ticks=[-2,-1.5,-1,-0.5]) f1.savefig(plot_filen,dpi=300) pyplot.close(f1) plot_filen = 'mhalo/sfr_radius_mass_'+sk+'_'+fk+'_mhalo.pdf' if not os.path.lexists('mhalo'): os.mkdir('mhalo') f1 = pyplot.figure(figsize=(3.5,5.0), dpi=300) pyplot.subplots_adjust(left=0.15, right=0.98, bottom=0.08, top=0.88,wspace=0.0,hspace=0.0) colorobj = plot_sfr_radius_mass(msF,merF,sk,fk,f1,xlim=xlim,ylim=ylim,rlim=rlim,Cval=np.log10(mhalo),min_bin=3,gridf='median_grid',vmin=11.5,vmax=14.0,bins=bins) gth.make_colorbar(colorobj,title='median $log_{10} M_{h}$',ticks=[11.5,12.0,13.0,14.0]) f1.savefig(plot_filen,dpi=300) pyplot.close(f1) return locals()