Plotting the posteriors (pycbc_inference_plot_posterior
)
Overview
There is an executable that can plot the posteriors called
pycbc_inference_plot_posterior
. You can use --plot-scatter
to plot a each sample as a point or --plot-density
to plot a density map.
By default the plotting executables will plot all the parameters in the input
file. In order to specify a different set of variables to plot, use the
--parameters
option. Examples for how to use this option are shown below.
By default the plotting executables will plot samples beginning at the end of the burn in. If the burn-in was skipped, then it starts from the first sample. It will then use a sample every autocorrelation length along the chain. Examples on how to plot a specific iteration or change how the thinning is performed are shown in the examples below.
You may plot a z-axis on the 2-D histograms using the --z-arg
option.
For a list of options use pycbc_inference_plot_posterior --help
.
Plotting a specific iteration
An example of plotting the posteriors at a specific iteration:
ITER=4999
INPUT_FILE=inference.hdf
OUTPUT_FILE=scatter.png
pycbc_inference_plot_posterior \
--iteration ${ITER} \
--input-file ${INPUT_FILE} \
--output-file ${OUTPUT_FILE} \
--plot-scatter \
--plot-marginal \
--z-arg logplr \
--parameters "ra*12/pi:$\alpha$ (h)" \
"dec*180/pi:$\delta$ (deg)" \
"polarization*180/pi:$\psi$ (deg)" \
mass1 mass2 spin1_a spin1_azimuthal spin1_polar \
spin2_a spin2_azimuthal spin2_polar \
"inclination*180/pi:$\iota$ (deg)" distance \
"coa_phase*180/pi:$\phi_0$ (deg)" tc
Plotting a thinned chain of samples
There are also options for thinning the chains of samples from the command line, an example starting at the 6000-th iteration and taking every 2000-th iteration until the 12000-th iteration:
THIN_START=5999
THIN_INTERVAL=2000
THIN_END=11999
INPUT_FILE=inference.hdf
OUTPUT_FILE=scatter.png
pycbc_inference_plot_posterior \
--input-file ${INPUT_FILE} \
--output-file ${OUTPUT_FILE} \
--plot-scatter \
--thin-start ${THIN_START} \
--thin-interval ${THIN_INTERVAL} \
--thin-end ${THIN_END} \
--plot-marginal \
--z-arg logplr \
--parameters "ra*12/pi:$\alpha$ (h)" \
"dec*180/pi:$\delta$ (deg)" \
"polarization*180/pi:$\psi$ (deg)" \
mass1 mass2 spin1_a spin1_azimuthal spin1_polar \
spin2_a spin2_azimuthal spin2_polar \
"inclination*180/pi:$\iota$ (deg)" distance \
"coa_phase*180/pi:$\phi_0$ (deg)" tc
Making a movie (pycbc_inference_plot_movie
)
pycbc_inference_plot_movie
is an executable similar to _plot_posterior
that allows you to combine plots in to a small movie. Most options for _plot_movie
are the same as _plot_posterior
with a few differences. Again, the plotting executables will plot all the parameters in the input file unless the option --parameters
is used to specify a set of parameters that you want to see. An example plotting every 20-th iteration into a directory called “movies”:
INPUT_FILE=inference.hdf
START_SAMPLE=1
END_SAMPLE=12000
FRAME_STEP=20
OUTPUT_PREFIX=frame
NPROCESSES=10
MOVIE_FILE=~/src/pycbc/movies/movie.mp4
DPI=100
pycbc_inference_plot_movie \
--input-file ${INPUT_FILE} \
--start-sample ${START_SAMPLE} \
--end-sample ${END_SAMPLE} \
--frame-step ${FRAME_STEP} \
--output-prefix ${OUTPUT_PREFIX} \
--nprocesses ${NPROCESSES} \
--movie-file ${MOVIE_FILE} \
--cleanup \
--plot-scatter \
--plot-marginal \
--z-arg snr \
--dpi ${DPI} \
--parameters mass1 mass2 spin1_a spin1_azimuthal spin1_polar \
spin2_a spin2_azimuthal spin2_polar \
This will create a 24-second movie for a selection of parameters. The option --cleanup
deletes the individual frame files prefixed as specified by the variable OUTPUT_PREFIX
. This is optional.
For a list of options use pycbc_inference_plot_movie --help
.