Injection frames

Minke is able to create frame files which contain injections, which can then be used to do things like characterising parameter estimation algorithms.

It is possible to do this by writing a script. However, Minke also provides a function to do this, and a commandline interface. It is also possible to produce injection frames as a step in an asimov workflow.

Script

from minke.noise import AdvancedLIGO
import astropy.units as u

from minke.models.cbc import IMRPhenomPv2
from minke.detector import AdvancedLIGOHanford

noise = AdvancedLIGO()

noise_ts = noise.time_series(duration=4, sample_rate=16384, epoch=998)

model = IMRPhenomPv2()

parameters = {"mass_ratio": 0.7, "total_mass": 100*u.solMass, "luminosity_distance": 100*u.megaparsec, "gpstime": 1000}

data = model.time_domain(parameters, times=noise_ts.times)
f = data['plus'].plot()
f.savefig("waveform.png")

detector = AdvancedLIGOHanford()

projected = data.project(detector,
             ra=1, dec=0.5,
             iota=0.4,
             phi_0=0,
             psi=0
             )
injection = (noise_ts + projected)
f = injection.plot()
f.savefig("projected_injection.png")
injection.write("test_injection.gwf", format="gwf")
_images/projected_injection_script.png

The make_injections Functions

from minke.injection import make_injection
from minke.noise import AdvancedLIGO
from minke.models.cbc import IMRPhenomPv2
from minke.detector import AdvancedLIGOHanford

import astropy.units as u


detectors = {"AdvancedLIGOHanford": "AdvancedLIGO"}

parameters = {"mass_ratio": 0.7,
              "total_mass": 100*u.solMass,
              "luminosity_distance": 100*u.megaparsec,
              "ra": 1,
              "dec": 0.5,
              "iota": 0.4,
              "phi_0": 0,
              "psi": 0,
              "gpstime": 1000}

injection = make_injection(detectors=detectors, injection_parameters=parameters, duration=4, sample_rate=4096, epoch=998)['H1']

f = injection.plot()
f.savefig("injection_script.png")
_images/projected_injection_function.png

We can also produce injections into zero noise:

from minke.injection import make_injection_zero_noise
from minke.noise import AdvancedLIGO
from minke.models.cbc import IMRPhenomPv2
from minke.detector import AdvancedLIGOHanford

import astropy.units as u


detectors = {"AdvancedLIGOHanford": "AdvancedLIGO"}

parameters = {"mass_ratio": 0.7,
              "total_mass": 100*u.solMass,
              "luminosity_distance": 100*u.megaparsec,
              "ra": 1,
              "dec": 0.5,
              "iota": 0.4,
              "phi_0": 0,
              "psi": 0,
              "gpstime": 1000}

injection = make_injection_zero_noise(detectors=detectors, injection_parameters=parameters, duration=4, sample_rate=16384, epoch=998)['H1']

f = injection.plot()
f.savefig("injection_function_zero.png")
_images/projected_injection_zero.png

The Command-line interface

To use the command line interface you’ll need to create a YAML-formatted configuration file.

For example

injection:
  duration: 4
  sample_rate: 4096
  epoch: 998
  channel: Injection
  parameters:
    luminosity_distance: 400
    m1: 35
    m2: 30
  waveform: IMRPhenomPv2
  interferometers:
    H1: AdvancedLIGOHanford
    L1: AdvancedLIGOLivingston
  psds:
    H1: AdvancedLIGO
    L1: AdvancedLIGO

Save this file as settings.yml. You can then create the injection files by running minke injection --settings settings.yml

As a step in an asimov workflow

© Copyright 2024, Daniel Williams.
Created using Sphinx 8.1.3.