{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. PyCBC Tutorial: Accessing the Catalog of Binary Mergers and LIGO/Virgo Open Data\n", "\n", "We will be using the [PyCBC](http://github.com/ligo-cbc/pycbc) library, which is used to study gravitational-wave data, find astrophysical sources due to compact binary mergers, and study their parameters. These are some of the same tools that the LIGO and Virgo collaborations use to find gravitational waves in LIGO/Virgo data \n", "\n", "In this tutorial we will walk through how to get information about the catalog of binary mergers programmatically, and also how to read in detector strain data around each event, or from the full open data set released for LIGO's first observing run.\n", "\n", "Additional [examples](http://pycbc.org/pycbc/latest/html/#library-examples-and-interactive-tutorials) and module level documentation are [here](http://pycbc.org/pycbc/latest/html/py-modindex.html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Getting the software environment setup\n", "\n", "PyCBC is installable through pip, but also relies on portions of the [LALSuite](https://git.ligo.org/lscsoft/lalsuite) c-library. A bundled version of this suitable for use with PyCBC is also available on Mac / Linux through pip. These can be installed as follows within the notebook." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mDEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.\u001b[0m\r\n", "Requirement already satisfied: pycbc in /home/ahnitz/projects/env/lib/python2.7/site-packages/PyCBC-50d4a7-py2.7-linux-x86_64.egg (50d4a7)\r\n", "Requirement already satisfied: lalsuite in /home/ahnitz/projects/env/lib/python2.7/site-packages (6.49)\r\n", "Requirement already satisfied: ligo-common in /home/ahnitz/projects/env/lib/python2.7/site-packages (1.0.3)\r\n", "Requirement already satisfied: numpy>=1.16.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (1.16.6)\r\n", "Requirement already satisfied: Mako>=1.0.1 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (1.0.7)\r\n", "Requirement already satisfied: cython>=0.29 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (0.29.14)\r\n", "Requirement already satisfied: decorator>=3.4.2 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (4.3.0)\r\n", "Requirement already satisfied: matplotlib>=1.5.1 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (2.2.4)\r\n", "Requirement already satisfied: pillow in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (5.2.0)\r\n", "Requirement already satisfied: h5py>=2.5 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (2.8.0)\r\n", "Requirement already satisfied: jinja2 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (2.8.1)\r\n", "Requirement already satisfied: mpld3>=0.3 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (0.3)\r\n", "Requirement already satisfied: lscsoft-glue>=1.59.3 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (1.59.3)\r\n", "Requirement already satisfied: emcee==2.2.1 in /home/ahnitz/projects/env/lib/python2.7/site-packages/emcee-2.2.1-py2.7.egg (from pycbc) (2.2.1)\r\n", "Requirement already satisfied: requests>=1.2.1 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (2.18.4)\r\n", "Requirement already satisfied: beautifulsoup4>=4.6.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (4.6.1)\r\n", "Requirement already satisfied: six>=1.10.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (1.11.0)\r\n", "Requirement already satisfied: ligo-segments in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (1.2.0)\r\n", "Requirement already satisfied: tqdm in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (4.31.1)\r\n", "Requirement already satisfied: astropy<3.0.0,>=2.0.3 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (2.0.8)\r\n", "Requirement already satisfied: scipy<1.3.0,>=0.16.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pycbc) (1.1.0)\r\n", "Requirement already satisfied: python-dateutil in /home/ahnitz/projects/env/lib/python2.7/site-packages (from lalsuite) (2.7.3)\r\n", "Requirement already satisfied: MarkupSafe>=0.9.2 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from Mako>=1.0.1->pycbc) (1.0)\r\n", "Requirement already satisfied: subprocess32 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from matplotlib>=1.5.1->pycbc) (3.5.2)\r\n", "Requirement already satisfied: cycler>=0.10 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from matplotlib>=1.5.1->pycbc) (0.10.0)\r\n", "Requirement already satisfied: backports.functools-lru-cache in /home/ahnitz/projects/env/lib/python2.7/site-packages (from matplotlib>=1.5.1->pycbc) (1.5)\r\n", "Requirement already satisfied: pytz in /home/ahnitz/projects/env/lib/python2.7/site-packages (from matplotlib>=1.5.1->pycbc) (2018.5)\r\n", "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from matplotlib>=1.5.1->pycbc) (2.2.0)\r\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from matplotlib>=1.5.1->pycbc) (1.0.1)\r\n", "Requirement already satisfied: pyOpenSSL in /home/ahnitz/projects/env/lib/python2.7/site-packages (from lscsoft-glue>=1.59.3->pycbc) (16.2.0)\r\n", "Requirement already satisfied: urllib3<1.23,>=1.21.1 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from requests>=1.2.1->pycbc) (1.22)\r\n", "Requirement already satisfied: idna<2.7,>=2.5 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from requests>=1.2.1->pycbc) (2.6)\r\n", "Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from requests>=1.2.1->pycbc) (3.0.4)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from requests>=1.2.1->pycbc) (2018.4.16)\r\n", "Requirement already satisfied: pytest>=2.8 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from astropy<3.0.0,>=2.0.3->pycbc) (3.7.1)\r\n", "Requirement already satisfied: setuptools in /home/ahnitz/projects/env/lib/python2.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=1.5.1->pycbc) (42.0.1)\r\n", "Requirement already satisfied: cryptography>=1.3.4 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pyOpenSSL->lscsoft-glue>=1.59.3->pycbc) (2.3)\r\n", "Requirement already satisfied: atomicwrites>=1.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (1.1.5)\r\n", "Requirement already satisfied: more-itertools>=4.0.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (4.3.0)\r\n", "Requirement already satisfied: pluggy>=0.7 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (0.7.1)\r\n", "Requirement already satisfied: attrs>=17.4.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (18.1.0)\r\n", "Requirement already satisfied: pathlib2>=2.2.0; python_version < \"3.6\" in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (2.3.2)\r\n", "Requirement already satisfied: py>=1.5.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (1.5.4)\r\n", "Requirement already satisfied: funcsigs; python_version < \"3.0\" in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (1.0.2)\r\n", "Requirement already satisfied: enum34; python_version < \"3\" in /home/ahnitz/projects/env/lib/python2.7/site-packages (from cryptography>=1.3.4->pyOpenSSL->lscsoft-glue>=1.59.3->pycbc) (1.1.6)\r\n", "Requirement already satisfied: cffi!=1.11.3,>=1.7 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from cryptography>=1.3.4->pyOpenSSL->lscsoft-glue>=1.59.3->pycbc) (1.11.5)\r\n", "Requirement already satisfied: asn1crypto>=0.21.0 in /home/ahnitz/projects/env/lib/python2.7/site-packages (from cryptography>=1.3.4->pyOpenSSL->lscsoft-glue>=1.59.3->pycbc) (0.24.0)\r\n", "Requirement already satisfied: ipaddress; python_version < \"3\" in /home/ahnitz/projects/env/lib/python2.7/site-packages (from cryptography>=1.3.4->pyOpenSSL->lscsoft-glue>=1.59.3->pycbc) (1.0.22)\r\n", "Requirement already satisfied: scandir; python_version < \"3.5\" in /home/ahnitz/projects/env/lib/python2.7/site-packages (from pathlib2>=2.2.0; python_version < \"3.6\"->pytest>=2.8->astropy<3.0.0,>=2.0.3->pycbc) (1.8)\r\n", "Requirement already satisfied: pycparser in /home/ahnitz/projects/env/lib/python2.7/site-packages (from cffi!=1.11.3,>=1.7->cryptography>=1.3.4->pyOpenSSL->lscsoft-glue>=1.59.3->pycbc) (2.18)\r\n", "\u001b[33mWARNING: You are using pip version 19.1, however version 20.0.2 is available.\r\n", "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\r\n" ] } ], "source": [ "import sys\n", "!{sys.executable} -m pip install pycbc ligo-common --no-cache-dir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.1 Catalog of Binary Mergers\n", "\n", "PyCBC provides an [API](http://pycbc.org/pycbc/latest/html/catalog.html) to look at the catalog of binary mergers a few examples below. Some key information, such as the 'chirp' mass of a binary merge can be retrieved." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### What binary mergers are in the catalog? ####" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GW151012\n", "GW170608\n", "GW170729\n", "GW150914\n", "GW151226\n", "GW170814\n", "GW170817\n", "GW170104\n", "GW170809\n", "GW170818\n", "GW170823\n" ] } ], "source": [ "from pycbc import catalog\n", "\n", "### List the mergers in the catalog\n", "for merger_name in catalog.Catalog():\n", " print(merger_name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### How can I get parameters? ####\n", "\n", "One can also retrieve some of the basic parameters of each source\n", "from the catalog directly as follows. Note that all parameters are given\n", "in the *source* frame. This means that they include the effect of redshift." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[15.2 7.9 35.7 28.6 8.9 24.2 1.186 21.5 25. 26.7\n", " 29.3 ]\n", "GW170817: 1.186\n", "[u'files', u'distance', u'a_final', u'mass1', u'tc', u'far_gstlal', u'far_pycbc', u'mass2', u'mchirp', u'snr_gstlal', u'redshift', u'far_cwb', u'utctime', u'L_peak', u'sky_size', u'mfinal', u'E_rad', u'chi_eff', u'snr_pycbc', u'snr_cwb']\n" ] } ], "source": [ "# Either from the catalog as a whole\n", "c = catalog.Catalog()\n", "mchirp = c.median1d('mchirp')\n", "print(mchirp)\n", "\n", "# or from a specific merger\n", "m = catalog.Merger(\"GW170817\")\n", "mchirp_gw170817 = m.median1d('mchirp')\n", "print('GW170817: {}'.format(mchirp_gw170817))\n", "\n", "# print parameters that can be read\n", "print(m.data.keys())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Transform Mass Parameters into the Detector Frame\n", "\n", "By default the above interface returns parameters in the *source* frame. Due to cosmological redshift, gravitational-waves are stretched as they travel. This causes the observed waveform to be different in the detector frame. This corresponds to an observed change in the mass parameters (for example). However, the relationship is fairly straighforward." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chirp Mass of GW150914\n", "Source Frame: 28.6 Solar Masses\n", "Detector Frame: 31.174 Solar Masses\n" ] } ], "source": [ "m = catalog.Merger('GW150914')\n", "source_mchirp = m.median1d('mchirp')\n", "redshift = m.median1d('redshift')\n", "det_mchirp = source_mchirp * (1 + redshift)\n", "\n", "print('Chirp Mass of GW150914')\n", "print('Source Frame: {} Solar Masses'.format(source_mchirp))\n", "print('Detector Frame: {} Solar Masses'.format(det_mchirp))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.2 Accessing LIGO/Virgo data\n", "\n", "In this section, we will look into how to read detector data from the LIGO and Virgo instruments using the PyCBC API. It is possible to both get data around specific events, and also from the full data sets which have been released which cover the S5/S6/O1 LIGO observing runs. Data will be returned as [pycbc TimeSeries objects.](http://pycbc.org/pycbc/latest/html/pycbc.types.html#pycbc.types.timeseries.TimeSeries)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Getting Data Around Specific Binary Merger in the Catalog\n", "\n", "One can directly retrieve data around a specific even. Typically this data is centered on the event, though restrictions may apply which have not allowed this. This method by default gets the smallest version of the dataset. If additional data or specific versions are required, please see the following two additional ways to access data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Duration: 32.0s Start: 1126259447 End: 1126259479\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import pylab\n", "\n", "m = catalog.Merger(\"GW150914\")\n", "\n", "# Get the time series data around GW150914 from Hanford\n", "# 'ts_han' is a pycbc.types.TimeSeries object which contains\n", "# gravitational-wave strain in this instance and has metadata\n", "# such as the start time, and sample rate.\n", "ts_han = m.strain('H1')\n", "\n", "# And now livingston\n", "ts_liv = m.strain('L1')\n", "\n", "# We can see how much data was returned and its boundaries\n", "# Note: All times are given in seconds since the GPS time epoch\n", "print(\"Duration: {}s Start: {} End: {}\".format(ts_han.duration, \n", " int(ts_han.start_time),\n", " int(ts_han.end_time)))\n", "\n", "# We can directly plot the time series as follows\n", "pylab.plot(ts_han.sample_times, ts_han)\n", "pylab.ylabel('Strain')\n", "pylab.xlabel('Time (s)')\n", "pylab.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Getting Data from S5 / S6 / O1\n", "\n", "In this section we show how to read data from the bulk data release by LIGO. This currently covers the periods of teh S5, S6, and O1 analyses." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Returned 64.0s of data at 4096Hz\n" ] } ], "source": [ "from pycbc.frame import query_and_read_frame\n", "\n", "# Retrieve the approximate time of the merger\n", "m = catalog.Merger(\"GW150914\")\n", "start = m.time - 32\n", "end = m.time + 32\n", "\n", "# Get 64 seconds of data roughly around GW150914\n", "# The start / end time may be any in the publicly available data sets.\n", "ts = query_and_read_frame('LOSC', 'H1:LOSC-STRAIN', start, end)\n", "\n", "# If we wanted to retreive data from the Livingston detector\n", "# we'd use the following command instead\n", "# ts = query_and_read_frame('LOSC', 'L1:LOSC-STRAIN', start, end)\n", "\n", "print(\"Returned {}s of data at {}Hz\".format(ts.duration, ts.sample_rate))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Directly Reading gravitational-wave Frame Files\n", "\n", "If you store LIGO data on your own computer then you can directly read in the data as follows." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " % Total % Received % Xferd Average Speed Time Time Time Current\r\n", " Dload Upload Total Spent Left Speed\r\n", "100 266 100 266 0 0 310 0 --:--:-- --:--:-- --:--:-- 309\r\n", "100 1004k 100 1004k 0 0 322k 0 0:00:03 0:00:03 --:--:-- 576k\r\n" ] } ], "source": [ "# We'll first download some data for this demonstration\n", "!curl -O -J -L https://losc.ligo.org/s/events/LVT151012/H-H1_LOSC_4_V2-1128678884-32.gwf" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from pycbc.frame import read_frame\n", "\n", "# Read the data directly from the Gravitational-Wave Frame (GWF) file.\n", "file_name = \"H-H1_LOSC_4_V2-1128678884-32.gwf\"\n", "\n", "# LOSC bulk data typically uses the same convention for internal channels names\n", "# Strain is typically IFO:LOSC-STRAIN, where IFO can be H1/L1/V1.\n", "channel_name = \"H1:LOSC-STRAIN\"\n", "\n", "start = 1128678884\n", "end = start + 32\n", "\n", "ts = read_frame(file_name, channel_name, start, end)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.6", "language": "python", "name": "python36" }, "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.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }