This is a code developed by Ippocratis D. Saltas and Roberto Oliveri to perfrom parameter inference for Extreme Mass Ratio Inspirals (EMRIs) including propagation effects. It is designed to run on GPUs. For more information we refer to:
On top of Python's usual numpy and scipy libraries, to run the code one needs the following modules:
-
cuda/cupy: https://nvidia.github.io/cuda-python/install.html
-
multiprocessing: https://pypi.org/project/multiprocessing/
-
corner or seaborn or anything similar: https://corner.readthedocs.io/en/latest/install/ https://seaborn.pydata.org/installing.html
The cuda/cupy library provides the GPU functionality, emcee is the library with the MCMC sampler, multiprocessing is needed for parallelisation, and the corner/seaborn for producing the corner plots.
global_parameters.py: This module defines the values of physical constants in cgs units, the parameters of the fiducial model, geometrical parameters and initial conditions of the binary system, parameters for the ODE solver (e.g., integration time window and grid resolution), and MCMC-related definitions. It also defines the maximum number of orbital overtones
waveform.py: This module defines the set of kludge ODE equations, the waveform generator, and some GPU-related functionality.
mcmc.py: This module defines the MCMC-related functions and the MCMC iterator.
propagation.py: This module defines the functions needed for the propagation of the GW wave through the cosmological background in the presence of any modified gravity effects.
main.ipynb: Assuming all parameters and fiducial values are properly defined as explained earlier,
this Jupyter notebook calls the main functions to initiate the MCMC run,
using the package
Running the code is particularly simple. Placing all files in the same folder, and setting up all parameters as explained above, one starts the notebook main.ipynb, and executes the cells. The first cell computes the fiducial model, and the second starts the MCMC run around the chosen fiducial. The MCMC results are stored in a text file - please make sure the path is defined appropriately.