Tools

Over the years, I have written a number of codes to do calculations for my work. Here is a compilation of these codes that you might find useful in your research.

Feel free to contact me if you have any question about them.

Data analysis tools

gravitational wave and gravitational lensing

  • hanabi is a suite of codes for analyzing lensed gravitational waves, which has been used in the LIGO-Virgo-KAGRA Collaboration
    • hanabi.lensing implements several lensing optical depth and magnification models
    • hanabi.inference uses bilby to jointly analyze multiple (not limited to only two) GW signals to look for features from lensing in those signals
    • hanabi.hierarchical performs a hierarchical Bayesian analysis on a set of GW signals to compute proper Bayes factor and posterior odds for a lensing scenario
  • skymap-overlap quantifies how much two transient localizations overlap with each other
    • implements a number of statistics quantifying the overlap described in 2112.05932
    • produces approximate joint localization as if the two transients come from the same sky location
  • phazap checks for (in-)consistency among GW events that are expected from strong lensing to rule out non-lensed GW signals rapidly
    • this code is jointly developed with Jose María Ezquiaga and Wayne Hu
  • lenscat compiles known strong gravitational lenses as a catalog for quick and easy access
    • the entire infrastructure is built on top of open-source & free services – e.g., edits to the catalog are done via a GitHub pull request
    • has a python interface for basic searching and crossmatching with a transient
    • these features are also available in the convenient and mobile friendly interactive web interface, without writing a single line of code
  • dingo-lensing builds on top of the state-of-the-art dingo framework to learn how to map raw GW strain data to posterior distributions for both the binary source parameters and the lensing observable parameters (time delay \( \Delta t \) and relative magnification \( \mu_{\rm rel}\))
    • performs simulation-based inference in only a matter of seconds
    • allows for practical construction of background and foreground distribution of log Bayes factor (as a detection statistic) from millions of injections
    • supports using the numerical relativity waveform surrogate model NRSur7dq4 as well
    • this code is jointly developed with Juno Chan and Jose María Ezquiaga

miscellaneous

  • denmarf performs probability density estimation from samples using state-of-the-art masked autoregressive normalizing flow architecture
    • this is particularly useful when a large and high-dimensional dataset is involved, and the probability density evaluation needs to be fast (everything that conventional Gaussian kernel density estimate kind of sucks at)
    • with an interface almost identical to scikit-learn for a seamless drop-in replacement
    • soon supports either jax or torch as the backend
  • duty-cycle simulates realistic duty cycles/availability of a GW detector
    • uses a Variable Length Markov Chain as the probabilistic model for the uptimes and downtimes of a detector
    • learns the model parameters from the actual data of a GW detector using simulation-based inference techniques, or
    • makes predictions/projections for future GW detectors with physically interpretable parameters
  • pdetclassifier is a neural-network based classifier by Davide Gerosa et al. (2020) for computing GW selection effects due to limited detector sensitivity
    • this re-implementation uses PyTorch instead of Tensorflow while maintaining the same neural network architecture

Numerical tools

black hole perturbation theory

  • GeneralizedSasakiNakamura.jl solves the radial Teukolsky equation in julia
    • utilizes the Generalized Sasaki-Nakamura formalism that transforms the long-range potential into a short-range potential
    • thus allowing for off-the-shelf ODE solvers (e.g., those in DifferentialEquations.jl) to be used
    • also available as Mathematica notebooks
    • it can also solve the inhomogeneous Teukolsky/GSN equation with a point particle source on a generic timelike bound orbit
  • SpinWeightedSpheroidalHarmonics.jl solves the angular Teukolsky equation in julia
    • deploys a spectral decomposition method that decomposes spin-weighted spheroidal harmonics with their corresponding spherical harmonics
    • computes also spherical-spheroidal mixing coefficients
    • partial derivatives with respect to \( \theta \) and \( \phi \) are computed exactly

Note: both codes are capable of handling complex frequencies and hence quasi-normal modes; as well as cases where \( \ell \) and \( \omega \) are large

gravitational-wave echoes from exotic compact objects

  • echoes_waveform_models implements several waveform models of GW echoes coming from exotic compact objects
    • as a plugin for gwsignal from the LIGO-Virgo-KAGRA Collaboration
    • works with the bilby parameter estimation ecosystem using bilby_tgr

catastrophe optics

  • pearcey computes the Pearcey integral that is relevant for studying cusp caustics