Skip to content
Snippets Groups Projects
Commit a623601f authored by Colm Talbot's avatar Colm Talbot
Browse files

Merge branch 'master' of git.ligo.org:Monash/peyote

parents cf960b86 5c7e344e
No related branches found
No related tags found
No related merge requests found
Pipeline #
import logging
import os
import numpy as np
import deepdish
from chainconsumer import ChainConsumer
import pandas as pd
class Result(dict):
......@@ -113,4 +115,43 @@ class Result(dict):
fig = c.plotter.plot_distributions(**kwargs)
return fig
def write_prior_to_file(self, outdir):
"""
Write the prior distribution to file.
:return:
"""
outfile = outdir + '.prior'
with open(outfile, "w") as prior_file:
for key in self.prior:
prior_file.write(self.prior[key])
def samples_to_data_frame(self):
"""
Convert array of samples to data frame.
:return:
"""
data_frame = pd.DataFrame(self.samples, columns=self.search_parameter_keys)
self.posterior = data_frame
for key in self.fixed_parameter_keys:
self.posterior[key] = self.prior[key].sample(len(self.posterior))
def construct_cbc_derived_parameters(self):
"""
Construct widely used derived parameters of CBCs
:return:
"""
self.posterior['mass_chirp'] = (self.posterior.mass_1 * self.posterior.mass_2)**0.6 \
/ (self.posterior.mass_1 + self.posterior.mass_2)**0.2
self.posterior['q'] = self.posterior.mass_2 / self.posterior.mass_1
self.posterior['eta'] = (self.posterior.mass_1 * self.posterior.mass_2) \
/ (self.posterior.mass_1 + self.posterior.mass_2)**2
self.posterior['chi_eff'] = (self.posterior.a_1 * np.cos(self.posterior.tilt_1)
+ self.posterior.q * self.posterior.a_2 * np.cos(self.posterior.tilt_2))\
/ (1 + self.posterior.q)
self.posterior['chi_p'] = max(self.posterior.a_1 * np.sin(self.posterior.tilt_1),
(4 * self.posterior.q + 3) / (3 * self.posterior.q + 4) * self.posterior.q
* self.posterior.a_2 * np.sin(self.posterior.tilt_2))
\ No newline at end of file
......@@ -11,6 +11,7 @@ import matplotlib.pyplot as plt
from .result import Result
from .prior import Prior, fill_priors
from . import utils
from . import prior
import peyote
......@@ -396,6 +397,9 @@ def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
else:
result.log_bayes_factor = result.logz - result.noise_logz
result.injection_parameters = injection_parameters
result.fixed_parameter_keys = [key for key in priors if isinstance(key, prior.DeltaFunction)]
result.prior = priors
result.samples_to_data_frame()
result.save_to_file(outdir=outdir, label=label)
return result
else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment