Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
pycWB 0.27.1 documentation
pycWB 0.27.1 documentation
  • Installation Guide
  • Use of PycWB in Scientific Publications
  • Index

User Guides

  • Tutorial
    • Go deeper into pycWB.search
    • Step by step injection search
    • Performing Multi-Injection
    • Injections with Customized Waveform Generation
    • Batch injection with Python Script
  • User Parameters

Developer Guides

  • Notes on modifications of cWB core code
Back to top
View this page

Step by step injection searchΒΆ

If you want to know more about burst search, you can run this tutorial by injection a signal and find it step by step

First, create a project folder and copy the user_parameters_injection.yaml file from the examples folder.

mkdir my_search
cp [path_to_source_code]/examples/injection/user_parameters_injection.yaml user_parameters.yaml

Next, load the environment and the configuration file:

import os

import pycwb
from pycwb.config import Config
from pycwb.modules.logger import logger_init

logger_init()

config = Config('./user_parameters_injection.yaml')
config.ifo, config.injection

Now, create an injection job using the parameters specified in the configuration file:

from pycwb.modules.read_data import generate_injection, generate_noise_for_job_seg
from pycwb.modules.job_segment import create_job_segment_from_injection

job_segments = create_job_segment_from_injection(config.ifo, config.simulation, config.injection)

data = generate_noise_for_job_seg(job_segments[0], config.inRate)
data = generate_injection(config, job_segments[0], data)

A pyCBC time series is generated for each detector defined in the configuration file.

Use the data conditioning module to remove lines and whiten the data. The strains are the whitened data, and the nRMS is the noise RMS of the data:

from pycwb.modules.data_conditioning import data_conditioning
from pycwb.modules.plot import plot_spectrogram

strains, nRMS = data_conditioning(config, data)

Find the coherent pixel clusters and generate the sparse table to reduce the computational cost in the following steps:

from pycwb.modules.coherence import coherence

# calculate coherence
fragment_clusters = coherence(config, strains, nRMS)

Create a network using the whitened data and the noise RMS, then merge the clusters to superclusters

from pycwb.modules.super_cluster import supercluster
from pycwb.types.network import Network

network = Network(config, strains, nRMS)

pwc_list = supercluster(config, network, fragment_clusters, strains)

Finally, calculate the likelihood for each supercluster:

from pycwb.modules.likelihood import likelihood

events, clusters, skymap_statistics = likelihood(config, network, pwc_list)

You can use the following code to plot the events on the spectrogram:

%matplotlib inline
from pycwb.modules.plot import plot_event_on_spectrogram

for i, tf_map in enumerate(strains):
    plt = plot_event_on_spectrogram(tf_map, events)
    plt.show()

the likelihood map and null map reconstructed from the clusters will also be plotted with

%matplotlib inline
from gwpy.spectrogram import Spectrogram

for cluster in clusters:
    merged_map, start, dt, df = cluster.get_sparse_map("likelihood")

    plt = Spectrogram(merged_map, t0=start, dt=dt, f0=0, df=df).plot()
    plt.colorbar()

for cluster in clusters:
    merged_map, start, dt, df = cluster.get_sparse_map("null")

    plt = Spectrogram(merged_map, t0=start, dt=dt, f0=0, df=df).plot()
    plt.colorbar()
Next
Performing Multi-Injection
Previous
Go deeper into pycWB.search
Copyright © 2023, Yumeng Xu
Made with Sphinx and @pradyunsg's Furo