# Galaxy Ninja A efficient binning and computation tool for numerical simulations Galaxy ninja uses `numba` for fast processing of huge simulation dataset. ## Download The easiest way to get Galaxy Ninja is to clone this repository ``` git clone https://git.brucy.fr/noe/galaxy_ninja.git ``` ## Install Assuming `pip` is available on your system, just run ``` pip install . ``` in the downloaded folder. ## Getting started ### Load data The first step is to write a loader for your simulation dataset. A loader is a python function that for a given simulation snapshot returns a dictionnary with the following structure: ```python gas: position (Ngas, 3) [kpc], centered volume (Ngas) [pc^3] velocity (Ngas, 3) [km/s] mass (Ngas) [Msun] stars: position (Nstar, 3) [kpc], centered velocity (Nstar, 3) [km/s] mass (Nstar) [Msun] birth_time (Nstar) [Myr] dm: position (Ngas, 3) [kpc], centered velocity (Ngas, 3) [km/s] mass (Ngas) [Msun] maps: extent (xmin, xmax, ymin, ymax) Coordinates of the edges of the map, centered gas_coldens (Nx, Ny) [Msun/pc^2], map of column densityructure: ``` Example loaders for Ramses and Arepo are provided. ### Compute binned quantities 1. Instanciate a galsec object ```python from galaxy_ninja import Galsec data = your_loader(path) galsec = Galsec(data, copy=False) ``` 2. Choose your binning method. Pre-set binning methods includes radial rings, sectors and cartesian binning. ```python rings = galex.rings_analysis( delta_r=0.1 * u.kpc, rmax=30 * u.kpc, zmin=-4 * u.kpc, zmax=4 * u.kpc, ) ``` ### Access averaged binned quantities Example for a velocity curve: ```python import matplotlib.pyplot as plt plt.plot(rings["gas"]["r"], sectors["gas"]["velphi"]) ```