Skip to content

leanderthiele/tSZ_DeepSet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tSZ DeepSet

Learn electron pressure in clusters from a gravity-only simulation. The network architecture consists mostly of DeepSets and MLPs, enabling a modular, interpretable design that operates directly on the simulation representation as a set of dark matter (DM) particles.

Dependencies

Use guide

  1. Code that needs to be compiled:

    • collect_particles.cpp: compile into both collect_particles_DM and collect_particles_TNG executables, depending on whether preprocessor macros DM or TNG are defined. This script finds the simulation particles in the vicinity of halos.
    • sort_particles.cpp into sort_particles executable.
    • prtfinder.cpp into libprtfinder.so.
  2. WORKFLOW describes the steps that need to be taken for pre-processing of the simulation data. The required scripts are:

  3. Optional: run create_normalization.py and analyse_normalization.py, if used on a different simulation than IllustrisTNG 300-1. The output can be used to tweak the hardcoded numbers in normalization.py to bring inputs to zero mean, unit variance.

  4. Internal data handling is defined in

  5. The cluster-scale scalars and vectors are defined in

  6. Runtime configuration is defined in cfg.py. The idea is that this module is populated from either command line settings or the environment variable TSZ_DEEP_SET_CFG by init_proc.py. For later reference, archive_cfg.py is used. Quite often we set default arguments to something from cfg.py, this is implemented in default_from_cfg.py.

  7. There is some basic support for distributed training, although more work would be required to get this to work. Currently training is fast enough on a single GPU and the required RAM per training process is about 60G. Some possibly buggy definitions to set up the distributed environment are in mpi_env_types.py.

  8. The network architecture is defined in

    Initialization of the network in init_model.py.

  9. Driver code is in

  10. The files generate_cl_*.py are used for Optuna hyperparameter searches.

  11. Auxiliary files for training:

  12. Auxiliary files for testing:

  13. Files paper_plot_*.py were used to generate publication figures.

  14. Various other files are there, most are buggy and not for use. In particular, anything with FOF in the name was for our initial attempt to work with friends-of-friends instead of Rockstar halos.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published