Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. import struct
  2. import matplotlib.cm as cm
  3. import numpy as np
  4. import os
  5. import sys
  6. import yt
  7. import yt.analysis_modules.sphgr.api as sphgr
  8. import yt.analysis_modules.sphgr.group_funcs as gf
  9. from readgadget import *
  10.  
  11. SCALE = 5.
  12. Npoints = 100000
  13.  
  14. snap = sys.argv[1]
  15. output = sys.argv[2]
  16.  
  17. basedir = os.path.dirname(os.path.abspath(snap))
  18. snapname = os.path.basename(snap)
  19.  
  20. # load data
  21. ds = yt.load(snap)
  22. obj = sphgr.load_sphgr_data('%s/sphgr_%s' % (basedir,snapname), ds)
  23.  
  24. #glist = obj.global_particle_lists.halo_glist[::100]
  25. glist = obj.global_particle_lists.halo_glist
  26. indexes = np.where(glist > -1)[0]
  27.  
  28. #if len(indexes) > Npoints:
  29. # indexes = indexes[::int(float(len(indexes))/float(Npoints))]
  30.  
  31. # center and rotate galaxy
  32. pos = obj.particle_data['gpos']/obj.boxsize - 0.5 #- (obj.boxsize/2.)
  33. hsml= obj.particle_data['ghsml']/obj.boxsize
  34. rho = np.log10(obj.particle_data['grho'].to('g/cm**3')/1.67e-24)
  35.  
  36. pos *= SCALE
  37. hsml*= SCALE
  38.  
  39. pos = pos[indexes]
  40. hsml= hsml[indexes]
  41. rho = rho[indexes]
  42. print len(indexes)
  43.  
  44.  
  45. #indexes = np.where(rho > -4)[0]
  46. #pos = pos[indexes]
  47. #hsml = hsml[indexes]
  48. #rho = rho[indexes]
  49.  
  50. # map densities onto a color map (rgb)
  51. rgb = cm.ScalarMappable(cmap=cm.viridis).to_rgba(rho)
  52. rgb = rgb[:,0:3]
  53.  
  54. starpos = obj.particle_data['spos']/obj.boxsize - 0.5
  55. sage = obj.particle_data['sage']
  56.  
  57. starrgb = cm.ScalarMappable(cmap=cm.autumn).to_rgba(sage)
  58. starrgb = starrgb[:,0:3]
  59. starhsml = np.full(len(sage),np.median(hsml))
  60.  
  61. starpos *= SCALE
  62. starhsml*= SCALE
  63.  
  64. pos = np.concatenate((pos,starpos))
  65. hsml = np.concatenate((hsml, starhsml))
  66. rgb = np.concatenate((rgb,starrgb))
  67.  
  68. print len(hsml)
  69.  
  70. #from pylab import *
  71. #plot(pos[:,0],pos[:,1],'o',ms=1)
  72. #plot(rho,t,'o',ms=1)
  73. #show()
  74.  
  75. #"""
  76. # write binary data
  77. f = open(output,'wb')
  78. f.write(struct.pack('<I',len(pos)))
  79. for data in [pos,rgb,hsml]:
  80. f.write(data.astype('f').tostring())
  81. f.write(struct.pack('<I',len(pos)))
  82. f.close()
  83. #"""
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement