Injecting a simulated pulseΒΆ
This script generates a stream consisting of Gaussian noise plus a single dispersed pulse.
The stream is represented as an rf_pipelines object, which is serialized to a json file.
The json file can be used in rfp-run
, for example:
rfp-run -w pulse \ # run name for web viewer
example_gaussian_stream_with_pulse.json \ # stream
example_bonsai_transform.json # see make-jsonized-bonsai-transform.py
to dedisperse the data and plot the result in the web viewer.
(Source: ch_frb_l1_docs/example_offline_analysis_scripts/make-gaussian-stream-with-pulse.py
.)
#!/usr/bin/env python
#
# This script creates a stream consisting of Gaussian noise plus a single pulse,
# and serializes the stream to a json file.
#
# The json file can be used in 'rfp-run'. For example, to dedisperse the data and
# plot the result in the web viewer, do:
#
# rfp-run -w pulse \ # run name for web viewer
# example_gaussian_stream_with_pulse.json \ # stream
# example_bonsai_transform.json # see make-jsonized-bonsai-transform.py
import rf_pipelines
s = rf_pipelines.gaussian_noise_stream(
nfreq = 16384,
nt_tot = 512*1024,
freq_lo_MHz = 400.0,
freq_hi_MHz = 800.0,
dt_sample = 0.98304e-3, # matches value in bonsai dedisperser (from CHIME)
sample_rms = 1.0,
nt_chunk = 1024
)
t = rf_pipelines.frb_injector_transform(
snr = 100.0,
undispersed_arrival_time = 200.0,
dm = 30.0,
variance = 1.0**2, # should be square of 'sample_rms' above
intrinsic_width = 0.005,
)
# The output of this script is logically a "stream" consisting of Gaussian noise plus a
# single pulse, but is implemented as a two-stage mini-pipeline: a stream object which
# produces the Gaussian noise, plus a transform to add the pulse.
p = rf_pipelines.pipeline([s,t])
rf_pipelines.utils.json_write('example_gaussian_stream_with_pulse.json', p, clobber=True)