Home

Awesome

bhnerf

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.

Installation

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 ../

Getting Started

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.