'containing this much probability.')
args = parser.parse_args()

# Late imports.
import re
from astropy.table import Table
from astropy.utils.misc import NumpyRNGContext
from matplotlib import pyplot as plt
import numpy as np
from lalinference import io
import lalinference.plot
from lalinference.bayestar.postprocess import find_injection_moc
from scipy.interpolate import interp1d

# Read input.
skymap = io.read_sky_map(args.skymap.name, moc=True)
chain = io.read_samples(args.samples.name)

# If required, downselect to a smaller number of posterior samples.
if args.max_points is not None:
    chain = Table(np.random.permutation(chain)[:args.max_points])

# Calculate P-P plot.
contours = np.asarray(args.contour)
result = find_injection_moc(skymap,
                            chain['ra'],
                            chain['dec'],
                            chain['dist'],
                            contours=1e-2 * contours)

# Late imports
from matplotlib import pyplot as plt
from matplotlib import gridspec
from matplotlib import transforms
from lalinference import io
from lalinference.plot import marker
from lalinference.distance import (
    parameters_to_marginal_moments, principal_axes, volume_render, marginal_pdf)
import healpy as hp
import numpy as np
import scipy.stats

# Read input, determine input resolution.
progress.update(-1, 'Loading FITS file')
(prob, mu, sigma, norm), metadata = io.read_sky_map(
    opts.input.name, distances=True)
npix = len(prob)
nside = hp.npix2nside(npix)

progress.update(-1, 'Preparing projection')

if opts.align_to is None or opts.input.name == opts.align_to.name:
    prob2, mu2, sigma2, norm2 = prob, mu, sigma, norm
else:
    (prob2, mu2, sigma2, norm2), _ = io.read_sky_map(
        opts.align_to.name, distances=True)
if opts.max_distance is None:
    mean, std = parameters_to_marginal_moments(prob2, mu2, sigma2)
    max_distance = mean + 2.5 * std
else:
    max_distance = opts.max_distance
# Late imports
from matplotlib import pyplot as plt
from matplotlib import gridspec
from matplotlib import transforms
from lalinference import io
from lalinference.plot import marker
from lalinference.bayestar.distance import (
    principal_axes, volume_render, marginal_pdf, marginal_ppf)
import healpy as hp
import numpy as np
import scipy.stats

# Read input, determine input resolution.
progress.update(-1, 'Loading FITS file')
(prob, mu, sigma, norm), metadata = io.read_sky_map(
    opts.input.name, distances=True)
npix = len(prob)
nside = hp.npix2nside(npix)

progress.update(-1, 'Preparing projection')

if opts.align_to is None or opts.input.name == opts.align_to.name:
    prob2, mu2, sigma2, norm2 = prob, mu, sigma, norm
else:
    (prob2, mu2, sigma2, norm2), _ = io.read_sky_map(
        opts.align_to.name, distances=True)
if opts.max_distance is None:
    max_distance = 2.5 * marginal_ppf(0.5, prob2, mu2, sigma2, norm2)
else:
    max_distance = opts.max_distance
R = np.ascontiguousarray(principal_axes(prob2, mu2, sigma2))

# Late imports.
import re
from astropy.table import Table
from astropy.utils.misc import NumpyRNGContext
from matplotlib import pyplot as plt
import numpy as np
from lalinference import io
import lalinference.plot
from lalinference.bayestar.postprocess import find_injection_moc
from scipy.interpolate import interp1d


# Read input.
skymap = io.read_sky_map(args.skymap.name, moc=True)
chain = io.read_samples(args.samples.name)

# If required, downselect to a smaller number of posterior samples.
if args.max_points is not None:
    chain = Table(np.random.permutation(chain)[:args.max_points])

# Calculate P-P plot.
contours = np.asarray(args.contour)
result = find_injection_moc(skymap, chain['ra'], chain['dec'], chain['dist'],
                            contours=1e-2 * contours)


def fmt(x, sigfigs, force_scientific=False):
    """Round and format a number in scientific notation."""
    places = sigfigs - int(np.floor(np.log10(x)))