{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Fast LISA Response Tutorial" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2025-09-20T02:01:17.442713Z", "iopub.status.busy": "2025-09-20T02:01:17.442353Z", "iopub.status.idle": "2025-09-20T02:01:18.305145Z", "shell.execute_reply": "2025-09-20T02:01:18.304813Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/mlkatz/Research/envs/lisatools_env/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", " warnings.warn(\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline \n", "\n", "import h5py\n", "from fastlisaresponse import pyResponseTDI, ResponseWrapper\n", "from astropy import units as un\n", "\n", "from lisatools.detector import EqualArmlengthOrbits, ESAOrbits\n", "\n", "YRSID_SI = 31558149.763545603" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial provides information on using `fastlisaresponse`: a generic time-domain LISA response function, including both projection on to constellation arms and TDI combinations. It is also GPU/CPU agnostic. The GPU capability is helpful for use in Bayesian inference algorithms. For more information and a detailed API, please see the [documentation](https://mikekatz04.github.io/lisa-on-gpu/).\n", "\n", "If you use this code, please cite [arXiv:2204.06633](https://arxiv.org/abs/2204.06633) and the code's [Zenodo](https://zenodo.org/records/17162632). \n", "\n", "**Warning**: newest version (1.0.9) of code with `lisatools` orbits needs detailed testing before deployed for a paper." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gravitational wave signal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " `fastlisaresponse` takes any time domain signal in the form $h(t) = h_+ + ih_\\times$. We are going to use a Galactic binary waveform given by\n", " \n", "$$\n", " h_{+,\\text{src}} = -A(1+\\cos^2{\\iota})\\cos{\\Phi(t)}\\qquad \\text{ and} \n", "$$\n", "\n", "$$\n", " h_{\\times,\\text{src}} = -2A\\cos{\\iota}\\sin{\\Phi(t)} \\text{ ,}\n", "$$\n", "\n", "where $A$ is the amplitude; $\\iota$ is the inclination; and\n", "$$\\Phi(t) \\approx -\\phi_0 + 2\\pi \\left(f_0t + \\frac{1}{2}\\dot{f}_0t^2 + \\frac{1}{6}\\ddot{f}_0t^3 \\right).$$\n", "\n", "$f$ is the initial gravitational wave frequency, and the over-dots are its time derivatives. The initial phase is $\\phi_0$. \n", "\n", "This waveform is then transformed to the solar-system barycenter (SSB) frame with the polarization angle, $\\psi$:\n", "\n", "$$\n", " \\begin{bmatrix}\n", " h_{+,\\text{SSB}} \\\\\n", " h_{\\times,\\text{SSB}} \n", " \\end{bmatrix} = \n", " \\begin{bmatrix}\n", " \\cos{2\\psi} & -\\sin{2\\psi}\\\\\n", " \\sin{2\\psi} & \\cos{2\\psi}\n", " \\end{bmatrix}\n", " \\begin{bmatrix}\n", " h_{+,\\text{src}} \\\\\n", " h_{\\times,\\text{src}} \n", " \\end{bmatrix}\\ .\n", "$$\n", "\n", "The waveform here is called with a class to allow for GPU usage. Equivalently, you can just use a function. However, please **note** that the function must take the keyword arguments `T` and `dt` which are the total observation time in in years and the sampling rate in seconds (inverse of the sampling frequency). " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2025-09-20T02:01:18.306809Z", "iopub.status.busy": "2025-09-20T02:01:18.306694Z", "iopub.status.idle": "2025-09-20T02:01:18.310259Z", "shell.execute_reply": "2025-09-20T02:01:18.309986Z" } }, "outputs": [], "source": [ "from fastlisaresponse.utils.parallelbase import ParallelModuleBase\n", "\n", "# Parallel module base can help to facilitate customized gpu use. \n", "class GBWave(ParallelModuleBase):\n", " def __init__(self, force_backend=None):\n", " super().__init__(force_backend=force_backend) \n", "\n", " @classmethod\n", " def supported_backends(cls):\n", " return [\"fastlisaresponse_\" + _tmp for _tmp in cls.GPU_RECOMMENDED()]\n", "\n", " def __call__(self, A, f, fdot, iota, phi0, psi, T=1.0, dt=10.0):\n", "\n", " # get the t array \n", " t = self.xp.arange(0.0, T * YRSID_SI, dt)\n", " cos2psi = self.xp.cos(2.0 * psi)\n", " sin2psi = self.xp.sin(2.0 * psi)\n", " cosiota = self.xp.cos(iota)\n", "\n", " fddot = 11.0 / 3.0 * fdot ** 2 / f\n", "\n", " # phi0 is phi(t = 0) not phi(t = t0)\n", " phase = (\n", " 2 * np.pi * (f * t + 1.0 / 2.0 * fdot * t ** 2 + 1.0 / 6.0 * fddot * t ** 3)\n", " - phi0\n", " )\n", "\n", " hSp = -self.xp.cos(phase) * A * (1.0 + cosiota * cosiota)\n", " hSc = -self.xp.sin(phase) * 2.0 * A * cosiota\n", "\n", " hp = hSp * cos2psi - hSc * sin2psi\n", " hc = hSp * sin2psi + hSc * cos2psi\n", "\n", " return hp + 1j * hc" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2025-09-20T02:01:18.311447Z", "iopub.status.busy": "2025-09-20T02:01:18.311362Z", "iopub.status.idle": "2025-09-20T02:01:18.315900Z", "shell.execute_reply": "2025-09-20T02:01:18.315628Z" } }, "outputs": [], "source": [ "gb = GBWave(force_backend=None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build waveforms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now move on to the response. The method and specific maths used to determine the response function can be found in our paper: [arXiv:2204.06633](https://arxiv.org/abs/2204.06633). We recommend accessing the response through the [fastlisaresponse.ResponseWrapper](https://mikekatz04.github.io/lisa-on-gpu/user/main.html#fastlisaresponse.response.ResponseWrapper). You can access the response function itself through [fastlisaresponse.pyTDIResponse](https://mikekatz04.github.io/lisa-on-gpu/user/main.html#fastlisaresponse.response.pyResponseTDI). See the [documentation](https://mikekatz04.github.io/lisa-on-gpu/) for using this class directly as it is a bit more complicated. If you only need to use the projection portion or the TDI part, then you should access the response class itself. Otherwise, the wrapper should be fine. You can access the projections from the wrapper if need. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setup classes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we will setup everything to properly compute the response function for Galactic binary waveforms. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2025-09-20T02:01:18.317215Z", "iopub.status.busy": "2025-09-20T02:01:18.317129Z", "iopub.status.idle": "2025-09-20T02:01:18.441258Z", "shell.execute_reply": "2025-09-20T02:01:18.440930Z" } }, "outputs": [], "source": [ "force_backend = None\n", "\n", "T = 2.0 # years\n", "t0 = 10000.0 # time at which signal starts (chops off data at start of waveform where information is not correct)\n", "\n", "sampling_frequency = 0.1\n", "dt = 1 / sampling_frequency\n", "\n", "# order of the langrangian interpolation\n", "order = 25\n", "\n", "# 1st or 2nd or custom (see docs for custom)\n", "tdi_gen = \"2nd generation\"\n", "\n", "index_lambda = 6\n", "index_beta = 7\n", "\n", "tdi_kwargs_esa = dict(\n", " order=order, tdi=tdi_gen, tdi_chan=\"AET\",\n", ")\n", "\n", "gb_lisa_esa = ResponseWrapper(\n", " gb,\n", " T,\n", " dt,\n", " index_lambda,\n", " index_beta,\n", " t0=t0,\n", " flip_hx=False, # set to True if waveform is h+ - ihx\n", " force_backend=force_backend,\n", " remove_sky_coords=True, # True if the waveform generator does not take sky coordinates\n", " is_ecliptic_latitude=True, # False if using polar angle (theta)\n", " remove_garbage=True, # removes the beginning of the signal that has bad information\n", " orbits=EqualArmlengthOrbits(),\n", " **tdi_kwargs_esa,\n", ")\n", "\n", "# define GB parameters\n", "A = 1.084702251e-22\n", "f = 2.35962078e-3\n", "fdot = 1.47197271e-17\n", "iota = 1.11820901\n", "phi0 = 4.91128699\n", "psi = 2.3290324\n", "\n", "beta = 0.9805742971871619\n", "lam = 5.22979888\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Run generator" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2025-09-20T02:01:18.442843Z", "iopub.status.busy": "2025-09-20T02:01:18.442751Z", "iopub.status.idle": "2025-09-20T02:01:29.057438Z", "shell.execute_reply": "2025-09-20T02:01:29.057100Z" } }, "outputs": [], "source": [ "chans = gb_lisa_esa(A, f, fdot, iota, phi0, psi, lam, beta)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot results" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2025-09-20T02:01:29.059040Z", "iopub.status.busy": "2025-09-20T02:01:29.058947Z", "iopub.status.idle": "2025-09-20T02:01:30.465662Z", "shell.execute_reply": "2025-09-20T02:01:30.465255Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "fig, ax = plt.subplots(3, 1, sharex=True)\n", "\n", "for i, lab in enumerate([\"A\", \"E\", \"T\"]):\n", " ax[i].plot(np.arange(len(chans[0])) * dt / YRSID_SI, chans[i])\n", " ax[i].set_ylabel(lab)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Custom TDI setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is an example of the 2nd Generation TDI implementation within the code." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2025-09-20T02:01:30.467615Z", "iopub.status.busy": "2025-09-20T02:01:30.467471Z", "iopub.status.idle": "2025-09-20T02:01:42.510495Z", "shell.execute_reply": "2025-09-20T02:01:42.510185Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X1 = [\n", " {\"link\": 13, \"links_for_delay\": [], \"sign\": +1},\n", " {\"link\": 31, \"links_for_delay\": [13], \"sign\": +1},\n", " {\"link\": 12, \"links_for_delay\": [13, 31], \"sign\": +1},\n", " {\"link\": 21, \"links_for_delay\": [13, 31, 12], \"sign\": +1},\n", " {\"link\": 12, \"links_for_delay\": [], \"sign\": -1},\n", " {\"link\": 21, \"links_for_delay\": [12], \"sign\": -1},\n", " {\"link\": 13, \"links_for_delay\": [12, 21], \"sign\": -1},\n", " {\"link\": 31, \"links_for_delay\": [12, 21, 13], \"sign\": -1},\n", "]\n", "\n", "X2 = X1 + [\n", " {\"link\": 12, \"links_for_delay\": [13, 31, 12, 21], \"sign\": +1},\n", " {\"link\": 21, \"links_for_delay\": [13, 31, 12, 21, 12], \"sign\": +1},\n", " {\n", " \"link\": 13,\n", " \"links_for_delay\": [13, 31, 12, 21, 12, 21],\n", " \"sign\": +1,\n", " },\n", " {\n", " \"link\": 31,\n", " \"links_for_delay\": [13, 31, 12, 21, 12, 21, 13],\n", " \"sign\": +1,\n", " },\n", " {\"link\": 13, \"links_for_delay\": [12, 21, 13, 31], \"sign\": -1},\n", " {\"link\": 13, \"links_for_delay\": [12, 21, 13, 31, 13], \"sign\": -1},\n", " {\n", " \"link\": 13,\n", " \"links_for_delay\": [12, 21, 13, 31, 13, 31],\n", " \"sign\": -1,\n", " },\n", " {\n", " \"link\": 13,\n", " \"links_for_delay\": [12, 21, 13, 31, 13, 31, 12],\n", " \"sign\": -1,\n", " },\n", " ]\n", "\n", "tdi_kwargs_custom = dict(\n", " order=order, tdi=X2, tdi_chan=\"AET\",\n", ")\n", "\n", "gb_lisa_custom = ResponseWrapper(\n", " gb,\n", " T,\n", " t0,\n", " dt,\n", " index_lambda,\n", " index_beta,\n", " flip_hx=False, # set to True if waveform is h+ - ihx\n", " force_backend=force_backend,\n", " remove_sky_coords=True, # True if the waveform generator does not take sky coordinates\n", " is_ecliptic_latitude=True, # False if using polar angle (theta)\n", " remove_garbage=True, # removes the beginning of the signal that has bad information\n", " orbits=EqualArmlengthOrbits(),\n", " **tdi_kwargs_custom,\n", ")\n", "\n", "chans = gb_lisa_esa(A, f, fdot, iota, phi0, psi, lam, beta)\n", "\n", "fig, ax = plt.subplots(3, 1, sharex=True)\n", "\n", "for i, lab in enumerate([\"A\", \"E\", \"T\"]):\n", " ax[i].plot(np.arange(len(chans[0])) * dt / YRSID_SI, chans[i])\n", " ax[i].set_ylabel(lab)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 4 }