示例#1
0
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}
示例#2
0
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)
示例#3
0
    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
示例#4
0
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
#----------------------------------------------------------