def snap(snapstop): print("find 3 most massive halos") # read in pos x, y, z, m, r = mys.getxyzmr(snapstop, 1) print('mass ', m) print('radius ', r) count = 0 for i in range(len(m)): print("halo ", i, m[i], r[i]) hassub = False for j in range(i + 1, len(m)): # if too low mass halo, continue if (m[j] < 0.5 * m[i]): continue # have massive halo, possibly subhalo if (dist_mod(x[i], y[i], z[i], x[j], y[j], z[j]) < 10. * r[i]): hassub = True print(" lies near ", j, m[j], r[j]) break if (count >= 3): break if (not hassub): count += 1 print(x[i], y[i], z[i], r[i], m[i])
def snap(snapstop): print("find 3 most massive halos") # read in pos x,y,z,m,r=mys.getxyzmr(snapstop, 1) print('mass ', m) print('radius ',r) count=0 for i in range(len(m)): print("halo ", i, m[i], r[i]) hassub = False for j in range(i+1,len(m)): # if too low mass halo, continue if(m[j]<0.5*m[i]): continue # have massive halo, possibly subhalo if(dist_mod(x[i],y[i],z[i],x[j],y[j],z[j])<10.*r[i]): hassub = True print(" lies near ", j, m[j], r[j]) break if(count>=3): break if(not hassub): count+=1 print(x[i],y[i],z[i],r[i],m[i])
i = len(sys.argv) if (i != 3): print("shrink_sphere.py snap hid") exit(0) snap = int(sys.argv[1]) hid = int(sys.argv[2]) eps = 1e-5 frad = 0.90 # shrinked sphere has radius frad*maxr, i.e. frad = 0.90 means 10% smaller 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)
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) pdb.set_trace() #print('select ',xcl[0]) #print(len(xcl)) for i in range(3): 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) # Dark Matter only cmd = gsd+" -inp "+sim cmd +=" -xc "+xc+" -yc "+yc+" -zc "+zc+" -rc "+r
if(i!=3): print("shrink_sphere.py snap hid") 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 \
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 cmd2 = "true" my.threadif(cmd1,cmd2,run,run,show,run)
data2 = np.zeros((ny, nx), 'float') for i in xrange(nx): for j in xrange(ny): if (abs(data[ny - j - 1, i]) < 1E-90): data2[j, i] = 0 else: data2[j, i] = log(abs(data[ny - j - 1, i])) print(np.min(data2), np.max(data2)) pylab.figure() pylab.xticks([]) pylab.yticks([]) pylab.imshow(data2, aspect=1, cmap='hot') xc, yc, zc, m, r = mys.getxyzmr(nsnap, 1) for i in range(len(xc)): xs = xc[i] * nx ys = ny - yc[i] * ny s = r[i] * nx print(xs, ys, s) cir = pylab.Circle((xs, ys), 3.0 * s, facecolor='none', edgecolor=(0.0, 0, 0.1), linewidth=1, alpha=0.5) pylab.gca().add_patch(cir) pylab.savefig(fname + ".png")
binvalues = ar.array(IMGSIZE) binvalues.read(f,nx*ny) data = np.array(binvalues,'float') data = np.reshape(data,(ny,nx)) data2=np.zeros((ny,nx),'float') for i in xrange(nx): for j in xrange(ny): if(abs(data[ny-j-1,i])<1E-90): data2[j,i]=0 else: data2[j,i]=log(abs(data[ny-j-1,i])) print(np.min(data2),np.max(data2)) pylab.figure() pylab.xticks([]) pylab.yticks([]) pylab.imshow(data2,aspect=1,cmap='hot') xc,yc,zc,m,r=mys.getxyzmr(nsnap,1) for i in range(len(xc)): xs=xc[i]*nx;ys=ny-yc[i]*ny;s=r[i]*nx print(xs, ys, s) cir = pylab.Circle((xs, ys), 3.0*s, facecolor='none', edgecolor=(0.0,0,0.1), linewidth=1, alpha=0.5) pylab.gca().add_patch(cir) pylab.savefig(fname+".png") print(fname + ".png")