Gravitationally Lensed Black Hole Emission Tomography using Neural Radiance Fields (NeRF).
Geodesics (photon trajectories) are computed using kgeo. This raytracing implementation of null geodesics in the Kerr metric uses the formalism of Gralla and Lupsasca 2019.
Start a conda virtual environment and add channels
conda config --add channels conda-forge
conda create -n jax python=3.9 numpy==1.23.1
conda activate jax
Install requirements
pip install numpy scipy matplotlib jupyterlab nodejs tqdm ipympl ipyvolume mpmath scikit-image ruamel.yaml
pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
pip install flax optax diffrax scikit-learn tensorboardX tensorboard
Install xarray
and its dependencies
conda install -c conda-forge xarray dask netCDF4 bottleneck
Clone and install bhnerf with the kgeo submodule
git clone --recurse-submodules https://github.com/aviadlevis/bhnerf.git
cd bhnerf/kgeo
pip install .
cd ../
pip install .
Install eht-imaging
conda install -c conda-forge pynfft requests scikit-image
git clone https://github.com/achael/eht-imaging.git
cd eht-imaging
pip install .
cd ../
The easiest way to get started is through the jupyter notebooks in the tutorials
directory.
These notebooks cover both the synthetic data generation (forward) and emission estimation (inverse) methods and procedures. Furthermore,
basic utility and visualization methods are introduced.
© Aviad Levis, California Institute of Technology, 2022.