def read_z(snap): num5=str(snap).zfill(5) filename=mys.d(snap)+"/info_"+num5+".txt" if(not os.path.exists(filename)): exit(1) file = open(filename) i=0; z=100.0 for line in file: i=i+1 if(i==10): val = line.split() a = float(val[2]) break file.close() return 1.0/a-1.0
def read_z(snap): num5 = str(snap).zfill(5) filename = mys.d(snap) + "/info_" + num5 + ".txt" if (not os.path.exists(filename)): exit(1) file = open(filename) i = 0 z = 100.0 for line in file: i = i + 1 if (i == 10): val = line.split() a = float(val[2]) break file.close() return 1.0 / a - 1.0
import sys import os import initialize as my import mys from numpy import * if (len(sys.argv) != 3): print "usage: merger_tree.py snap1 snap2" print "assumption: output_00snap1,2 contain particles_dm in AHF format" exit(1) snap1 = int(sys.argv[1]) snap2 = int(sys.argv[2]) # read in halos repeatedly fname = mys.d(snap1) + "particles_dm" print fname in1 = my.open_file(fname, "r") alm1 = int(in1.readline()) size1 = [] split1 = [] for i in range(alm1): size = int(in1.readline()) size1.append(size) part = [] for c in range(size): part.append(int(in1.readline())) split1.append(part) in1.close() in2 = my.open_file(mys.d(snap2) + "particles_dm", "r")
i = len(sys.argv) if i != 3: print "find_rhalf_star.py snap hid" exit(0) snap = int(sys.argv[1]) hid = int(sys.argv[2]) # print "missing file" if not mys.exists_snap(snap): print "snapshot " + str(snap) + " missing" exit(0) xc, yc, zc, rvir = mys.getxyzrstars_hid(snap, hid) file_name = mys.d(snap) + "stars/stars_" + str(hid) + ".dat" if os.path.getsize(file_name) == 0: print "empty file" exit() halo = my.open_file(file_name, "r") x = [] y = [] z = [] N = 0 for line in halo: N = N + 1 val = line.split() x.append(float(val[1])) y.append(float(val[2])) z.append(float(val[3]))
exit(0) snap=int(sys.argv[1]) hid=int(sys.argv[2]) eps=1e-5 frad = 0.9 # shrinked sphere has radius frad*maxr, # i.e. frad = 0.90 means 10% smaller #print "missing file" if(not mys.exists_snap(snap)): print "snapshot "+str(snap)+" missing" exit(0) xc,yc,zc,mvir,rvir=mys.getxyzmr(snap,1) halo = my.open_file(mys.d(snap)+"stars/stars_"+str(hid)+".dat","r") x=[];y=[];z=[];m=[] for line in halo: val=line.split() m.append(float(val[0])) x.append(float(val[1])) y.append(float(val[2])) z.append(float(val[3])) x = array(x); y = array(y); z = array(z); m = array(m) #print x def converged(xc,yc,zc,xc2,yc2,zc2): return abs(xc-xc2)/abs(xc) < eps \ and abs(yc-yc2)/abs(yc) < eps \ and abs(zc-zc2)/abs(zc) < eps #\
exit(0) snap = int(sys.argv[1]) hid = int(sys.argv[2]) eps = 1e-5 frad = 0.9 # shrinked sphere has radius frad*maxr, # i.e. frad = 0.90 means 10% smaller # print "missing file" if not mys.exists_snap(snap): print "snapshot " + str(snap) + " missing" exit(0) xc, yc, zc, mvir, rvir = mys.getxyzmr(snap, 1) halo = my.open_file(mys.d(snap) + "stars/stars_" + str(hid) + ".dat", "r") x = [] y = [] z = [] m = [] for line in halo: val = line.split() m.append(float(val[0])) x.append(float(val[1])) y.append(float(val[2])) z.append(float(val[3])) x = array(x) y = array(y) z = array(z) m = array(m)
import os import initialize as my import mys os.nice(10) show = True run = True loop = True i = len(sys.argv) if (i != 2): print "usage: gen_particles_dm.py snap" exit(1) snap = int(sys.argv[1]) d = mys.d(snap) pdm = d + "particles_dm" nhalo = mys.get_nhalo(snap) os.system("rm " + d + "particles_dm") os.system("echo '" + str(nhalo) + "' >> " + pdm) for c in range(nhalo): tmpdat = d + "tmp_" + str(c + 1) + ".dat" cmd = "echo $(wc -l " + tmpdat + "|cut -d' ' -f1) >> " + pdm + ";" cmd = cmd + "cat " + tmpdat + ">>" + pdm + ";" cmd = cmd + "rm " + tmpdat if (show): print(cmd) if (run): os.system(cmd) if (not loop): break # TODO: stars only
show = True run = True gsd = "get_sphere_dm" gss = "get_sphere_stars" i = len(sys.argv) if(i!=3): print "usage: gen_spheres.py snap typ" exit(1) facr = 1 # * rvir from AHF for maximal radial distance to include particles snap = sys.argv[1] typ = int(sys.argv[2]) sim = mys.d(snap) # get xc,yc,zc,mvir,rvir xcl,ycl,zcl,mvirl,rvirl = mys.getxyzmr(snap,typ) xsl,ysl,zsl,rsl = mys.getxyzrstars(snap,typ) #print 'select ',xcl[0] #print len(xcl) for i in range(len(xcl)): xc=str(xcl[i]); xs=str(xsl[i]); yc=str(ycl[i]); ys=str(ysl[i]); zc=str(zcl[i]); zs=str(zsl[i]); r=str(rvirl[i]*facr); rs=str(rsl[i]*facr*0.9); sj=str(i+1)
i=len(sys.argv) if(i!=3): print "find_rhalf_star.py snap hid" exit(0) snap=int(sys.argv[1]) hid=int(sys.argv[2]) #print "missing file" if(not mys.exists_snap(snap)): print "snapshot "+str(snap)+" missing" exit(0) xc,yc,zc,rvir=mys.getxyzrstars_hid(snap,hid) file_name=mys.d(snap)+"stars/stars_"+str(hid)+".dat" if(os.path.getsize(file_name)==0): print "empty file" exit() halo = my.open_file(file_name,"r") x=[];y=[];z=[]; N=0 for line in halo: N=N+1 val=line.split() x.append(float(val[1])) y.append(float(val[2])) z.append(float(val[3])) x = array(x); y = array(y); z = array(z) r = np.sqrt((x-xc)**2+(y-yc)**2+(z-zc)**2)
import sys import os from numpy import * import initialize as my import mys if (len(sys.argv) != 2): print "usage: substructure.py snap" print "assumption: output_snap contains particles_dm in AHF format" print "wrong number of arguments" exit(1) snap = int(sys.argv[1]) # read in halos repeatedly inf = my.open_file(mys.d(snap) + "particles_dm", "r") alm = int(inf.readline()) size = [] split = [] for i in range(alm): siz = int(inf.readline()) size.append(siz) part = [] for c in range(siz): part.append(int(inf.readline())) split.append(part) inf.close() print "read in successful"
if (i == 1): for k in range(18): my.run("master.py " + str(k)) sys.exit(0) action = int(sys.argv[1]) if (action == -1): mys.clear() if (action == 0): print "prepare output folder structure, MySQL structure" # mys.setup() # mys.fill_sim(simdir,num,nstart,nstop) for ncounter in range(nstop - nstart + 1): d = mys.d(nstart + ncounter) # d=simdir+"/output_"+str(ncounter+nstart).zfill(5)+"/"; my.mkdir(d + 'amr') my.mkdir(d + 'grav') my.mkdir(d + 'hydro') my.mkdir(d + 'part') my.mv(d + "amr_*", d + "amr") my.mv(d + "grav_*", d + '/grav') my.mv(d + "hydro_*", d + '/hydro') my.mv(d + 'part_*', d + '/part') # convert to Gadget file format if (action == 1): for ncounter in range(nstop - nstart + 1): nc = ncounter + nstart num5 = str(nc).zfill(5)
exit(0) snap=int(sys.argv[1]) hid=int(sys.argv[2]) eps=1e-5 frad = 0.9 # shrinked sphere has radius frad*maxr, # i.e. frad = 0.90 means 10% smaller #print "missing file" if(not mys.exists_snap(snap)): print "snapshot "+str(snap)+" missing" exit(0) xc,yc,zc,mvir,rvir=mys.getxyzmr(snap,1) halo = my.open_file(mys.d(snap)+"dm/dm_"+str(hid)+".dat","r") x=[];y=[];z=[];m=[] for line in halo: val=line.split() m.append(float(val[0])) x.append(float(val[1])) y.append(float(val[2])) z.append(float(val[3])) x = array(x); y = array(y); z = array(z); m = array(m) #print x def converged(xc,yc,zc,xc2,yc2,zc2): return abs(xc-xc2)/abs(xc) < eps \ and abs(yc-yc2)/abs(yc) < eps \ and abs(zc-zc2)/abs(zc) < eps #\
import sys import os from numpy import * import initialize as my import mys if(len(sys.argv)!=2): print "usage: substructure.py snap" print "assumption: output_snap contains particles_dm in AHF format" print "wrong number of arguments" exit(1) snap = int(sys.argv[1]) # read in halos repeatedly inf = my.open_file(mys.d(snap)+"particles_dm","r") alm = int(inf.readline()) size = []; split = [] for i in range(alm): siz = int(inf.readline()) size.append(siz) part = [] for c in range(siz): part.append(int(inf.readline())) split.append(part) inf.close() print "read in successful" def count_shared(m1,m2): cc = 0
os.nice(10) show= True; run = True; loop=True # choose: get_particles for all particles # get_particles_dm for dm particles only gps = "get_particles" i = len(sys.argv) if(i!=2): print "usage: gen_particles_list.py snap" exit(1) facr = 1 # * rvir from AHF for maximal radial distance to include particles snap = int(sys.argv[1]) d = mys.d(snap) pdm=d+"particles_dm" xl,yl,zl,ml,rl = mys.getxyzmr(snap,2) nhalo= mys.get_nhalo(snap) os.system("rm "+d+"particles_dm") os.system("echo '"+str(nhalo)+"' >> "+pdm) for i in range(len(xl)): xc=str(xl[i]); yc=str(yl[i]); zc=str(zl[i]); r=str(facr*rl[i]) tmpdat = d+"tmp_"+str(i+1)+".dat" # all particles (DM/stars mixed) cmd1 = gps+" -inp "+d cmd1 +=" -xc "+xc+" -yc "+yc+" -zc "+zc+" -r "+r cmd1 +=">"+tmpdat
if(i==1): for k in range(18): my.run("master.py "+str(k)) sys.exit(0) action = int(sys.argv[1]) if(action==-1): mys.clear() if(action==0): print "prepare output folder structure, MySQL structure" # mys.setup() # mys.fill_sim(simdir,num,nstart,nstop) for ncounter in range(nstop-nstart+1): d=mys.d(nstart+ncounter) # d=simdir+"/output_"+str(ncounter+nstart).zfill(5)+"/"; my.mkdir(d+'amr') my.mkdir(d+'grav') my.mkdir(d+'hydro') my.mkdir(d+'part') my.mv(d+"amr_*",d+"amr") my.mv(d+"grav_*",d+'/grav') my.mv(d+"hydro_*",d+'/hydro') my.mv(d+'part_*',d+'/part') # convert to Gadget file format if(action==1): for ncounter in range(nstop-nstart+1): nc = ncounter + nstart num5 = str(nc).zfill(5)
show = True run = True gsd = "get_sphere_dm" gss = "get_sphere_stars" i = len(sys.argv) if (i != 3): print "usage: gen_spheres.py snap typ" exit(1) facr = 1 # * rvir from AHF for maximal radial distance to include particles snap = sys.argv[1] typ = int(sys.argv[2]) sim = mys.d(snap) # get xc,yc,zc,mvir,rvir xcl, ycl, zcl, mvirl, rvirl = mys.getxyzmr(snap, typ) xsl, ysl, zsl, rsl = mys.getxyzrstars(snap, typ) #print 'select ',xcl[0] #print len(xcl) for i in range(len(xcl)): xc = str(xcl[i]) xs = str(xsl[i]) yc = str(ycl[i]) ys = str(ysl[i]) zc = str(zcl[i])
# can be used with twice the same snapshot to get subhalo tree import sys import os import initialize as my import mys from numpy import * if(len(sys.argv)!=3): print "usage: merger_tree.py snap1 snap2" print "assumption: output_00snap1,2 contain particles_dm in AHF format" exit(1) snap1 = int(sys.argv[1]); snap2 = int(sys.argv[2]) # read in halos repeatedly fname=mys.d(snap1)+"particles_dm" print fname in1 = my.open_file(fname,"r") alm1 = int(in1.readline()) size1 = []; split1 = [] for i in range(alm1): size = int(in1.readline()) size1.append(size) part = [] for c in range(size): part.append(int(in1.readline())) split1.append(part) in1.close() in2 = my.open_file(mys.d(snap2)+"particles_dm","r") alm2 = int(in2.readline())