Uchuu DR1 Merger Trees

We constructed merger trees using the consistent-trees code (Behroozi et al. 2013). Because the current version of the consistent-trees code can not run in parallel on distributed memory environment, we can not use as it is to construct merger trees for huge simulations such Uchuu. To overcome the most significant obstacle, we split the entire Uchuu box into smaller regularly spaced sub-volumes and run consistent-trees code for each sub-volume separately. See Ishiyama et al. 2020 for the details of the adopted algorithm.
The generated ascii catalogues were then converted using the custom uchuutools package. The halo catalogues were converted using the script convert_halocat_to_h5 while the tree catalogues were converted using the convert_ctrees_to_h5.

    • How to download the data

Mergertree Data Format

Most of the properties in the tree catalogues are already found in the halo catalogues. Please refer to the documentation in the 
halo catalogues page for details such columns. The new columns that have been added to the tree catalogues are FofID, FirstHaloInFOFgroup, NextHaloInFOFgroup, PrevHaloInFOFgroup, FirstProgenitor, NextProgenitor, PrevProgenitor, Descendant. With the exception of FofID, the remaining fields are indices that refer to another halo within the same forest. These indices are forest-local (i.e., range from [0, nforests-1] and follow the LHaloTree convention (see figure below; Credits). The FofID is the haloID for the host halo that contains the (sub-) subhalo. The PrevProgenitor and PrevHaloInFOFgroup have been added to allow more flexible tree-walking.

lhalotree-mergertree-structure


We have added two additional datasets that contain forest-level and tree-level information:

  • ForestInfo - This dataset has the shape of (nforests_in_file, ) and contains the following fields
(ForestID, np.int64), contains the ForestID (taken directly from Consistent-Trees) (ForestHalosOffset, np.int64), contains the offset at which the halos belonging to that forest start (ForestNhalos, np.int64), contains the total number of halos within this forest (ForestNtrees, np.int64), contains the total number of trees within this forest

  • TreeInfo - This dataset has the shape of (ntrees_in_file, ) and contains the following fields
(ForestID, np.int64), contains the ForestID (taken directly from Consistent-Trees) (TreeRootID, np.int64), contains the TreeRootID (taken directly from Consistent-Trees) (TreeHalosOffset, np.int64), contains the offset at which the halos belonging to that tree start (TreeNhalos, np.int64), contains the total number of halos within this tree

The other columns in the 
TreeInfo dataset are used for testing and are unlikely to be required in any user application.


Pasted Graphic


For details on the fields carried across from the Consistent-Trees catalogue, we have preserved the header information from the ascii Consistent-Trees catalogue. This information is available under the root dataset as the metadata attribute (i.e., hf.attrs['Consistent Trees_metadata'] from the example above). The cosmological parameters and the boxsize are available as attributes under the group hf['simulation_params'].

Reading and Analysing the trees

The halos within each forest are stored contiguously and can be easily accessed using the 
ForestInfo dataset in the hdf5 file.If you want to analyse and visualise the mergertrees, then we recommend installing the development version (in the branch h5ctrees ) of ytree. Installing the dev version of ytree will require first installing the development version of yt through the following steps:

1. git clone https://github.com/yt-project/yt
2. cd yt
3. python -m pip install -e . (--user)

After 
yt is installed, then install ytree with the following steps:

  1. git clone https://github.com/brittonsmith/ytree
  2. cd ytree
  3. git checkout h5ctrees
  4. python -m pip install -e . (--user)
Once ytree is installed, you can use ytree to load and visualise the hdf5 files Note that within ytree, you can either load single trees (default) or load single forests through the access='tree' or access='forest' keyword to ytree.load. Please refer to the documentation of ytree for further details about loading and visualising mergertrees.