def loaddata(sn = 37, en = 50, rep = './', base = 'snapshot', ext = '.hdf5', post = 'caesar', b = 0.2): for i in range(sn, en+1): ds = yt.load(rep+base+'_'+str(i).zfill(3)+ext) obj = caesar.CAESAR(ds) obj.member_search(b_halo=b, b_galaxy=b/10) obj.save(rep+post+'_'+str(i).zfill(3)+ext) return {'obj':obj, 'ds':ds}
def reduce(SNAPLIST, SIM, SNAPDIR, CAESARLOC='Groups', FOF6DLOC='Groups', NPROC=16): ''' SNAPLIST: list of the snapshot numbers SIM: Sim name, e.g. m50n512, used in snapshot name (assumes Simba naming convention) SNAPDIR = Directory where snapshots are located CAESARLOC = Subdirectory to write Caesar catalogs FOF6DLOC = Subdirectory to look for / write fof6d files ''' for j in SNAPLIST: # path to the file SNAP = '%s/snap_%s_%03d.hdf5' % (SNAPDIR, SIM, j) if not os.path.exists(SNAP): print(SNAP, "does not exist") continue CAESARFILE = '%s/%s/%s_%03d.hdf5' % (SNAPDIR, CAESARLOC, SIM, j) FOF6DFILE = '%s/%s/fof6d_%s_%03d.hdf5' % (SNAPDIR, FOF6DLOC, SIM, j) HALOID = 'snap' # options atm are 'snap' (Halo ID's from snapshot) or 'fof' (yt's 3DFOF) SELFSHIELD = False # True=compute self-shielded mass; False= use fHI,fH2 from snap if 'fh_qr' in SNAPDIR: # Mufasa snaps have no HaloId, need self-shielding correction HALOID = 'fof' SELFSHIELD = True ds = yt.load(SNAP) obj = caesar.CAESAR(ds) redshift = obj.simulation.redshift if USE_VERSION == 'v0.2b': obj.member_search(haloid=HALOID, fof6d_file=FOF6DFILE, nproc=NPROC) elif USE_VERSION == 'v0.1': if not os.path.exists( FOF6DFILE): # if no fof6d file, run fof6d and create file print('Using caesar v0.1, running fof6d') obj.member_search(blackholes=bhflag, fof_from_snap=1, fof6d=True, fof6d_outfile=FOF6DFILE, nproc=NPROC, compute_selfshielding=SELFSHIELD, v01_member_search=True) else: # use existing fof6d file print('Using caesar_v0.1, inputting fof6d file') obj.member_search(blackholes=bhflag, fof_from_snap=1, fof6d=True, fof6d_file=FOF6DFILE, nproc=NPROC, compute_selfshielding=SELFSHIELD, v01_member_search=True) else: obj.member_search() # just try it and see what happens! obj.save(CAESARFILE)
def member_search(self, skipran, **kwargs): """Perform the member_search() method on this snapshot.""" if not os.path.isfile(self.snap): mylog.warning('%s NOT found, skipping' % self.snap) return ds = yt.load(self.snap) self.set_output_information(ds) if os.path.isfile(self.outfile) and skipran: mylog.warning('%s FOUND, skipping' % self.outfile) return self._make_output_dir() obj = caesar.CAESAR(ds) obj.member_search(**kwargs) obj.save(self.outfile) obj = None ds = None
import caesar import yt import numpy as np #MODIFIABLE HEADER POINTING TO LOCATION OF TESTING SNAPSHOTS simba_snap = '/ufrc/narayanan/desika.narayanan/caesar_testing_files/m25n256_full_passive/snapshot_305.hdf5' small_snap = '/ufrc/narayanan/desika.narayanan/caesar_testing_files/yt_gizmo_64/output/snap_N64L16_135.hdf5' #---------------------------------------------------------- #1. Make sure that caesar.drive works for a simba snap #---------------------------------------------------------- ds = yt.load(simba_snap) obj = caesar.CAESAR(ds) obj.member_search() obj.save('caesar_simba.hdf5') obj2 = caesar.load('caesar_simba.hdf5') #get the galinfo print(obj.galinfo()) #get the masses, radii and metallicities masses = [gal.masses['total'] for gal in obj.galaxies] metallicity = [gal.metallicity for gal in obj.galaxies] radii = [gal.radii['total_half_mass'] for gal in obj.galaxies] #---------------------------------------------------------- #2. Now do it all over again for a generic snapshot #----------------------------------------------------------