Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
bilby
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
lscsoft
bilby
Commits
6f693479
Commit
6f693479
authored
5 years ago
by
Gregory Ashton
Browse files
Options
Downloads
Plain Diff
Merge branch 'fixing-GW150914-advanced-example' into 'master'
Fixing gw150914 advanced example Closes
#422
See merge request
!626
parents
67571bf5
51003802
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!626
Fixing gw150914 advanced example
Pipeline
#85373
passed
5 years ago
Stage: test
Stage: deploy
Changes
2
Pipelines
3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
examples/gw_examples/data_examples/GW150914.prior
+1
-0
1 addition, 0 deletions
examples/gw_examples/data_examples/GW150914.prior
examples/gw_examples/data_examples/GW150914_advanced.py
+61
-43
61 additions, 43 deletions
examples/gw_examples/data_examples/GW150914_advanced.py
with
62 additions
and
43 deletions
examples/gw_examples/data_examples/GW150914.prior
+
1
−
0
View file @
6f693479
...
...
@@ -14,3 +14,4 @@ ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic')
theta_jn = Sine(name='theta_jn', boundary='reflective')
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
geocent_time = Uniform(name='geocent_time', minimum =1126259460.4, maximum=1126259464.4)
This diff is collapsed.
Click to expand it.
examples/gw_examples/data_examples/GW150914_advanced.py
+
61
−
43
View file @
6f693479
...
...
@@ -12,66 +12,83 @@ List of events in BILBY dict: run -> help(bilby.gw.utils.get_event_time(event))
"""
from
__future__
import
division
,
print_function
import
bilby
from
gwpy.timeseries
import
TimeSeries
outdir
=
'
outdir
'
label
=
'
GW150914
'
logger
=
bilby
.
core
.
utils
.
logger
time_of_event
=
bilby
.
gw
.
utils
.
get_event_time
(
label
)
bilby
.
core
.
utils
.
setup_logger
(
outdir
=
outdir
,
label
=
label
)
# GET DATA FROM INTERFEROMETER
interferometer_names
=
[
'
H1
'
,
'
L1
'
]
# include 'V1' for appropriate O2 events
duration
=
4
# length of data segment containing the signal
roll_off
=
0.2
# smoothness of transition from no signal
# to max signal in a Tukey Window.
psd_offset
=
-
1024
# PSD is estimated using data from
# 'center_time + psd_offset' to 'center_time + psd_offset + psd_duration'.
# This determines the time window used to fetch open data.
psd_duration
=
100
duration
=
4
# length of data segment containing the signal
post_trigger_duration
=
2
# time between trigger time and end of segment
end_time
=
time_of_event
+
post_trigger_duration
start_time
=
end_time
-
duration
roll_off
=
0.4
# smoothness in a tukey window, default is 0.4s
# This determines the time window used to fetch open data
psd_duration
=
32
*
duration
psd_start_time
=
start_time
-
psd_duration
psd_end_time
=
start_time
filter_freq
=
None
# low pass filter frequency to cut signal content above
# Nyquist frequency. The condition is 2 * filter_freq >= sampling_frequency
# Keyword args are passed to 'gwpy.timeseries.TimeSeries.fetch_open_data()'
# sample_rate: most data are stored by LOSC at 4096 Hz,
# there may be event-related data releases with a 16384 Hz rate.
kwargs
=
{
"
sample_rate
"
:
4096
}
# For O2 events a "tag" is required to download the data.
# CLN = clean data; C00 or C01 = raw data
# kwargs = {"tag": 'CLN'}
# For some events can specify channels: source data stream for LOSC data.
# kwargs = {"channel": {'H1': 'H1:DCS-CALIB_STRAIN_C02',
# 'L1': 'L1:DCS-CALIB_STRAIN_C02',
# 'V1': 'V1:FAKE_h_16384Hz_4R'}}
interferometers
=
bilby
.
gw
.
detector
.
get_event_data
(
label
,
interferometer_names
=
interferometer_names
,
duration
=
duration
,
roll_off
=
roll_off
,
psd_offset
=
psd_offset
,
psd_duration
=
psd_duration
,
cache
=
True
,
outdir
=
outdir
,
filter_freq
=
filter_freq
,
**
kwargs
)
ifo_list
=
bilby
.
gw
.
detector
.
InterferometerList
([])
for
det
in
interferometer_names
:
logger
.
info
(
"
Downloading analysis data for ifo {}
"
.
format
(
det
))
ifo
=
bilby
.
gw
.
detector
.
get_empty_interferometer
(
det
)
data
=
TimeSeries
.
fetch_open_data
(
det
,
start_time
,
end_time
)
ifo
.
set_strain_data_from_gwpy_timeseries
(
data
)
# Additional arguments you might need to pass to TimeSeries.fetch_open_data:
# - sample_rate = 4096, most data are stored by LOSC at this frequency
# there may be event-related data releases with a 16384Hz rate.
# - tag = 'CLN' for clean data; C00/C01 for raw data (different releases)
# note that for O2 events a "tag" is required to download the data.
# - channel = {'H1': 'H1:DCS-CALIB_STRAIN_C02',
# 'L1': 'L1:DCS-CALIB_STRAIN_C02',
# 'V1': 'V1:FAKE_h_16384Hz_4R'}}
# for some events can specify channels: source data stream for LOSC data.
logger
.
info
(
"
Downloading psd data for ifo {}
"
.
format
(
det
))
psd_data
=
TimeSeries
.
fetch_open_data
(
det
,
psd_start_time
,
psd_end_time
)
psd_alpha
=
2
*
roll_off
/
duration
# shape parameter of tukey window
psd
=
psd_data
.
psd
(
fftlength
=
duration
,
overlap
=
0
,
window
=
(
"
tukey
"
,
psd_alpha
),
method
=
"
median
"
)
ifo
.
power_spectral_density
=
bilby
.
gw
.
detector
.
PowerSpectralDensity
(
frequency_array
=
psd
.
frequencies
.
value
,
psd_array
=
psd
.
value
)
ifo_list
.
append
(
ifo
)
logger
.
info
(
"
Saving data plots to {}
"
.
format
(
outdir
))
bilby
.
core
.
utils
.
check_directory_exists_and_if_not_mkdir
(
outdir
)
ifo_list
.
plot_data
(
outdir
=
outdir
,
label
=
label
)
# CHOOSE PRIOR FILE
# DEFAULT PRIOR FILES: GW150914.prior, binary_black_holes.prior,
# binary_neutron_stars.prior (if bns, use BNSPriorDict)
# Needs to specify path
for
any other prior file.
# Needs to specify path
if you want to use
any other prior file.
prior
=
bilby
.
gw
.
prior
.
BBHPriorDict
(
filename
=
'
GW150914.prior
'
)
# GENERATE WAVEFORM
duration
=
None
# duration and sampling frequency will be overwritten
# to match the ones in the interferometers.
sampling_frequency
=
kwargs
[
"
sample_rate
"
]
# same at which the data is stored
start_time
=
0
# set the starting time of the time array
sampling_frequency
=
4096.
# same at which the data is stored
conversion
=
bilby
.
gw
.
conversion
.
convert_to_lal_binary_black_hole_parameters
# reference_frequency: either low freq. limit or most sensitive freq.
# OVERVIEW OF APPROXIMANTS:
# https://www.lsc-group.phys.uwm.edu/ligovirgo/cbcnote/Waveforms/Overview
waveform_arguments
=
{
'
waveform_approximant
'
:
'
IMRPhenomPv2
'
,
'
reference_frequency
'
:
50
}
source_model
=
bilby
.
gw
.
source
.
lal_binary_black_hole
waveform_arguments
=
{
'
waveform_approximant
'
:
'
IMRPhenomPv2
'
,
'
reference_frequency
'
:
50
# most sensitive frequency
}
waveform_generator
=
bilby
.
gw
.
WaveformGenerator
(
duration
=
duration
,
sampling_frequency
=
sampling_frequency
,
start_time
=
start_time
,
frequency_domain_source_model
=
source_model
,
parameter_conversion
=
conversion
,
frequency_domain_source_model
=
bilby
.
gw
.
source
.
lal_binary_black_hole
,
waveform_arguments
=
waveform_arguments
)
# CHOOSE LIKELIHOOD FUNCTION
...
...
@@ -80,26 +97,27 @@ waveform_generator = bilby.gw.WaveformGenerator(
# Phase marginalisation is done analytically using a Bessel function.
# If prior given, used in the distance and phase marginalization.
likelihood
=
bilby
.
gw
.
likelihood
.
GravitationalWaveTransient
(
interferometers
,
waveform_generator
,
time_marginalization
=
False
,
distance_marginalization
=
False
,
phase_marginalization
=
False
)
interferometers
=
ifo_list
,
waveform_generator
=
waveform_generator
,
priors
=
prior
,
time_marginalization
=
False
,
distance_marginalization
=
False
,
phase_marginalization
=
False
)
# RUN SAMPLER
# Can use log_likelihood_ratio, rather than just the log_likelihood.
# If using simulated data, pass a dictionary of injection parameters.
# A function can be specified in 'conversion_function' and applied
# to posterior to generate additional parameters e.g. source-frame masses.
# Implemented Samplers:
# LIST OF AVAILABLE SAMPLERS: Run -> bilby.sampler.implemented_samplers
npoints
=
500
# number of live points for the MCMC (dynesty)
npoints
=
512
# number of live points for the nested sampler
n_steps
=
100
# min number of steps before proposing a new live point,
# defaults `ndim * 10`
sampler
=
'
dynesty
'
# Different samplers can have different additional kwargs,
# visit https://lscsoft.docs.ligo.org/bilby/samplers.html for details.
result
=
bilby
.
run_sampler
(
likelihood
,
prior
,
outdir
=
outdir
,
label
=
label
,
sampler
=
sampler
,
n
points
=
npoints
,
use_ratio
=
False
,
injection_parameters
=
Non
e
,
sampler
=
sampler
,
n
live
=
npoints
,
use_ratio
=
False
,
walks
=
n_steps
,
n_check_point
=
10000
,
check_point_plot
=
Tru
e
,
conversion_function
=
bilby
.
gw
.
conversion
.
generate_all_bbh_parameters
)
result
.
plot_corner
()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment