1) The document discusses the detection of gravitational waves using Python tools. It describes how gravitational waves are produced by accelerating masses and how detectors like LIGO use interferometers to detect the tiny signals.
2) It outlines several Python packages used at LIGO for tasks like automated detector control, low-latency calibration and analysis, binary merger searches, and data visualization.
3) Areas for future development include improving usability, documentation, and integrating packages like GWpy and PyCBC with open data releases to increase accessibility and outreach.
2. General Relativity
Einstein’s General theory of Relativity (GR) describes space and time as
connected, and flexible
Mass warps space time more mass -> more warp
Space time affects we call this gravity
how bodies move
T. Pyle, Caltech/MIT/LIGO Lab
2
3. Gravitational waves
Spacetime is elastic, accelerating
masses create ripples in space-time
We call these gravitational waves
Propagate at speed of light
Simple accelerating system: two
dense objects orbiting each other
Spacetime is 1021 less elastic than diamond
We need extremely massive objects to create even a
tiny gravitational wave amplitude
4
9. Gravitational waves
If we filter the detector noise, we can extract the signal
11
https://git.io/gwpy-animate-gw150914
10. Uses of Python in LIGO and Virgo
Historic uses of C and Matlab (and Perl…) for core interferometer
control and signal detection workflows
Python being used increasingly in the Advanced Detector Era:
Guardian
Automated
Interferometer control
GstLAL-Calibration
Real-time
PD readout -> GW strain
GraceDB
Electromagnetic partner notifications
(Incoming and Outgoing)
GstLAL-Inspiral
Searches for binary mergers
(Low-latency and offline)
PyCBC
Searches for binary mergers
(Low-latency and offline)
LALInference
Parameter Estimation
and Signal Localisation
GWpy
General I/O, Signal Processing,
and Visualisation
GWSumm
Daily Detector Performance
and Analysis Summaries
GWDetChar
Detector Characterisation
and Data Quality Studies
GStreamer
Django
Pure-Python
C | SWIG
This is an
incomplete
list!
12
11. Automated Detector Control
Both LIGO and Virgo use Python state machine called
Guardian to define operating
• Each hardware system defined by ‘node’
• Collection of states with defined transition conditions
• ~80 connected nodes per detector (at LIGO)
• Main ‘locking’ node has 91 states
• Fully automated operation in ~20 minutes
13
13. Low-latency measurement calibration
Prompt detection of gravitational-wave signals enables follow-up with
telescopes to search for electromagnetic counterparts
Requires low-latency calibration and analysis of GW detector data
Detector measurement is displacement [L], need to calibrate to strain [1]
GstLAL-Calibration outputs strain within 5 seconds of acquisition
GStreamer elements with FIR filters
15
14. Low-latency binary merger searches
Two low-latency data analysis workflows with Python front-ends (at least)
• GstLAL-Inspiral - Gstreamer elements with time-domain filters
• PyCBC-Live - FFT(W) based matched-filtering
Both can post candidates to GraceDB within 1 minute of data acquisition
• Enabled EM follow-up of GW170817
Also run in batch mode, processing weeks of data
• #1 computation code for LIGO/Virgo
16
15. Same old problems…
The major problem with most code in LIGO is usability, documentation
• Most large code bases are only really usable by insiders
LIGO has single output data stream for analysis
• Searching full parameter space for GW signals is extremely complex
Also ~100,000 auxiliary time streams are needed to establish confidence in
astrophysical origin of signals (i.e. not local noise)
• Knowing where the data are, and how to read them, are still major problems
Need simple usable tools so that scientists don’t waste their time copy/pasting code
without understanding it (or re-writing from scratch)
17
16. PyCBC
Python based toolkit used in LIGO-Virgo binary merger searches
• Low-latency Analysis
• Offline Analysis
• Parameter estimation (under active development!)
Tools are available for people to use and develop!
• Public management and hosting on github
• https://github.com/ligo-cbc/pycbc
• https://ligo-cbc.github.io/pycbc/latest/html/
• Docker builds available!
• Interactive Jupyter notebooks with library examples
• https://notebooks.azure.com/nitz/libraries/pycbc
18
17. GWpy
A python package for gravitational-wave astronomy | https://gwpy.github.io
Heavily dependent on numpy, scipy, astropy, matplotlib, etc
Provides intuitive object-orientated methods to access LIGO/Virgo data
(public and restricted), process, and visualise them
19
22. LIGO Open Science Center
LIGO Laboratory working group to coordinate and support open data releases
associated with event publications
• Files hosted in GWF (internal format), HDF5 and ASCII
• https://losc.ligo.org/events
• Data for all 5 published events (so far) + 1 lower-significance candidate
• Entire S6 data set (2009/10)
• Extensive tutorials and Jupyter notebooks describing LIGO data processing
GWpy API trivialises access
Great increase to outreach potential with real code, and real up-to-date data
24
23. Future developments
All major Python projects mentioned are in active development for the next
observing run (O3, Q4 2018)
GWpy usage growing internally and externally due to intuitive methodology
Further integration with LOSC and PyCBC underway
Expansion of documentation and examples, especially for secondary and
tertiary education, input from students/teachers would be great
All figures/animations for this presentation (except where credited) produced
using open-source code (GWpy) and open data (LOSC)
25
Editor's Notes
GR is easy, even babies can understand it
Horribly incomplete list of major python projects in LIGO
ISC_LOCK node diagram, fairly linear
IMC_LOCK diagram, highly circular
ISI_HAM2 diagram, many different routes
This slide needs work
Probably need a bit more on PyCBC
Finally
Not a great plot, but pretty good default
Lots of examples
Some can only be run by LIGO-Virgo members (black strikethrough)