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.lensingimplements several lensing optical depth and magnification modelshanabi.inferenceusesbilbyto jointly analyze multiple (not limited to only two) GW signals to look for features from lensing in those signalshanabi.hierarchicalperforms 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
NRSur7dq4as 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-learnfor a seamless drop-in replacement - soon supports either
jaxortorchas 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
catastrophe optics
- pearcey computes the Pearcey integral that is relevant for studying cusp caustics
