Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • john-veitch/bilby
  • duncanmmacleod/bilby
  • colm.talbot/bilby
  • lscsoft/bilby
  • matthew-pitkin/bilby
  • salvatore-vitale/tupak
  • charlie.hoy/bilby
  • bfarr/bilby
  • virginia.demilio/bilby
  • vivien/bilby
  • eric-howell/bilby
  • sebastian-khan/bilby
  • rhys.green/bilby
  • moritz.huebner/bilby
  • joseph.mills/bilby
  • scott.coughlin/bilby
  • matthew.carney/bilby
  • hyungwon.lee/bilby
  • monica.rizzo/bilby
  • christopher-berry/bilby
  • lindsay.demarchi/bilby
  • kaushik.rao/bilby
  • charles.kimball/bilby
  • andrew.matas/bilby
  • juan.calderonbustillo/bilby
  • patrick-meyers/bilby
  • hannah.middleton/bilby
  • eve.chase/bilby
  • grant.meadors/bilby
  • khun.phukon/bilby
  • sumeet.kulkarni/bilby
  • daniel.reardon/bilby
  • cjhaster/bilby
  • sylvia.biscoveanu/bilby
  • james-clark/bilby
  • meg.millhouse/bilby
  • joshua.willis/bilby
  • nikhil.sarin/bilby
  • paul.easter/bilby
  • youngmin/bilby
  • daniel-williams/bilby
  • shanika.galaudage/bilby
  • bruce.edelman/bilby
  • avi.vajpeyi/bilby
  • isobel.romero-shaw/bilby
  • andrew.kim/bilby
  • dominika.zieba/bilby
  • jonathan.davies/bilby
  • marc.arene/bilby
  • srishti.tiwari/bilby-tidal-heating-eccentric
  • aditya.vijaykumar/bilby
  • michael.williams/bilby
  • cecilio.garcia-quiros/bilby
  • rory-smith/bilby
  • maite.mateu-lucena/bilby
  • wushichao/bilby
  • kaylee.desoto/bilby
  • brandon.piotrzkowski/bilby
  • rossella.gamba/bilby
  • hunter.gabbard/bilby
  • deep.chatterjee/bilby
  • tathagata.ghosh/bilby
  • arunava.mukherjee/bilby
  • philip.relton/bilby
  • reed.essick/bilby
  • pawan.gupta/bilby
  • francisco.hernandez/bilby
  • rhiannon.udall/bilby
  • leo.tsukada/bilby
  • will-farr/bilby
  • vijay.varma/bilby
  • jeremy.baier/bilby
  • joshua.brandt/bilby
  • ethan.payne/bilby
  • ka-lok.lo/bilby
  • antoni.ramos-buades/bilby
  • oliviastephany.wilk/bilby
  • jack.heinzel/bilby
  • samson.leong/bilby-psi4
  • viviana.caceres/bilby
  • nadia.qutob/bilby
  • michael-coughlin/bilby
  • hemantakumar.phurailatpam/bilby
  • boris.goncharov/bilby
  • sama.al-shammari/bilby
  • siqi.zhong/bilby
  • jocelyn-read/bilby
  • marc.penuliar/bilby
  • stephanie.letourneau/bilby
  • alexandresebastien.goettel/bilby
  • alec.gunny/bilby
  • serguei.ossokine/bilby
  • pratyusava.baral/bilby
  • sophie.hourihane/bilby
  • eunsub/bilby
  • james.hart/bilby
  • pratyusava.baral/bilby-tg
  • zhaozc/bilby
  • pratyusava.baral/bilby_SoG
  • tomasz.baka/bilby
  • nicogerardo.bers/bilby
  • soumen.roy/bilby
  • isaac.mcmahon/healpix-redundancy
  • asamakai.baker/bilby-frequency-dependent-antenna-pattern-functions
  • anna.puecher/bilby
  • pratyusava.baral/bilby-x-g
  • thibeau.wouters/bilby
  • christian.adamcewicz/bilby
  • raffi.enficiaud/bilby
109 results
Show changes
Commits on Source (29)
Showing
with 187 additions and 148 deletions
# All notable changes will be documented in this file # All notable changes will be documented in this file
## [0.6.8] 2020-05-21
### Changes
- Improvement to the proposal step in dynesty (!774)
- Fix a bug in checking and making directories (!792)
- Clean up of the default prior files (!789)
## [0.6.8] 2020-05-13 ## [0.6.8] 2020-05-13
### Added ### Added
- Option to sample in the sky frame (!786) - Option to sample in the sky frame (!786)
......
...@@ -68,6 +68,9 @@ class Prior(object): ...@@ -68,6 +68,9 @@ class Prior(object):
if sorted(self.__dict__.keys()) != sorted(other.__dict__.keys()): if sorted(self.__dict__.keys()) != sorted(other.__dict__.keys()):
return False return False
for key in self.__dict__: for key in self.__dict__:
if key == "least_recently_sampled":
# ignore sample drawn from prior in comparison
continue
if type(self.__dict__[key]) is np.ndarray: if type(self.__dict__[key]) is np.ndarray:
if not np.array_equal(self.__dict__[key], other.__dict__[key]): if not np.array_equal(self.__dict__[key], other.__dict__[key]):
return False return False
......
...@@ -23,7 +23,8 @@ from .utils import ( ...@@ -23,7 +23,8 @@ from .utils import (
check_directory_exists_and_if_not_mkdir, check_directory_exists_and_if_not_mkdir,
latex_plot_format, safe_save_figure, latex_plot_format, safe_save_figure,
BilbyJsonEncoder, load_json, BilbyJsonEncoder, load_json,
move_old_file, get_version_information move_old_file, get_version_information,
decode_bilby_json,
) )
from .prior import Prior, PriorDict, DeltaFunction from .prior import Prior, PriorDict, DeltaFunction
...@@ -358,10 +359,27 @@ class Result(object): ...@@ -358,10 +359,27 @@ class Result(object):
if os.path.isfile(filename): if os.path.isfile(filename):
dictionary = deepdish.io.load(filename) dictionary = deepdish.io.load(filename)
# Some versions of deepdish/pytables return the dictionanary as # Some versions of deepdish/pytables return the dictionary as
# a dictionary with a key 'data' # a dictionary with a key 'data'
if len(dictionary) == 1 and 'data' in dictionary: if len(dictionary) == 1 and 'data' in dictionary:
dictionary = dictionary['data'] dictionary = dictionary['data']
if "priors" in dictionary:
# parse priors from JSON string (allowing for backwards
# compatibility)
if not isinstance(dictionary["priors"], PriorDict):
try:
priordict = PriorDict()
for key, value in dictionary["priors"].items():
if key not in ["__module__", "__name__", "__prior_dict__"]:
priordict[key] = decode_bilby_json(value)
dictionary["priors"] = priordict
except Exception as e:
raise IOError(
"Unable to parse priors from '{}':\n{}".format(
filename, e,
)
)
try: try:
if isinstance(dictionary.get('posterior', None), dict): if isinstance(dictionary.get('posterior', None), dict):
dictionary['posterior'] = pd.DataFrame(dictionary['posterior']) dictionary['posterior'] = pd.DataFrame(dictionary['posterior'])
...@@ -609,8 +627,9 @@ class Result(object): ...@@ -609,8 +627,9 @@ class Result(object):
dictionary['sampler_kwargs'][key] = str(dictionary['sampler_kwargs']) dictionary['sampler_kwargs'][key] = str(dictionary['sampler_kwargs'])
try: try:
# convert priors to JSON dictionary for both JSON and hdf5 files
dictionary["priors"] = dictionary["priors"]._get_json_dict()
if extension == 'json': if extension == 'json':
dictionary["priors"] = dictionary["priors"]._get_json_dict()
if gzip: if gzip:
import gzip import gzip
# encode to a string # encode to a string
...@@ -1123,15 +1142,16 @@ class Result(object): ...@@ -1123,15 +1142,16 @@ class Result(object):
idxs = np.arange(nsteps) idxs = np.arange(nsteps)
fig, axes = plt.subplots(nrows=ndim, figsize=(6, 3 * ndim)) fig, axes = plt.subplots(nrows=ndim, figsize=(6, 3 * ndim))
walkers = self.walkers[:, :, :] walkers = self.walkers[:, :, :]
parameter_labels = sanity_check_labels(self.parameter_labels)
for i, ax in enumerate(axes): for i, ax in enumerate(axes):
ax.plot(idxs[:self.nburn + 1], walkers[:, :self.nburn + 1, i].T, ax.plot(idxs[:self.nburn + 1], walkers[:, :self.nburn + 1, i].T,
lw=0.1, color='r') lw=0.1, color='r')
ax.set_ylabel(self.parameter_labels[i]) ax.set_ylabel(parameter_labels[i])
for i, ax in enumerate(axes): for i, ax in enumerate(axes):
ax.plot(idxs[self.nburn:], walkers[:, self.nburn:, i].T, lw=0.1, ax.plot(idxs[self.nburn:], walkers[:, self.nburn:, i].T, lw=0.1,
color='k') color='k')
ax.set_ylabel(self.parameter_labels[i]) ax.set_ylabel(parameter_labels[i])
fig.tight_layout() fig.tight_layout()
outdir = self._safe_outdir_creation(kwargs.get('outdir'), self.plot_walkers) outdir = self._safe_outdir_creation(kwargs.get('outdir'), self.plot_walkers)
......
...@@ -430,6 +430,7 @@ class Sampler(object): ...@@ -430,6 +430,7 @@ class Sampler(object):
likelihood evaluations. likelihood evaluations.
""" """
logger.info("Generating initial points from the prior")
unit_cube = [] unit_cube = []
parameters = [] parameters = []
likelihood = [] likelihood = []
......
...@@ -257,11 +257,11 @@ class Dynesty(NestedSampler): ...@@ -257,11 +257,11 @@ class Dynesty(NestedSampler):
# Constructing output. # Constructing output.
string = [] string = []
string.append("bound:{:d}".format(bounditer)) string.append("bound:{:d}".format(bounditer))
string.append("nc:{:d}".format(nc)) string.append("nc:{:3d}".format(nc))
string.append("ncall:{:d}".format(ncall)) string.append("ncall:{:.1e}".format(ncall))
string.append("eff:{:0.1f}%".format(eff)) string.append("eff:{:0.1f}%".format(eff))
string.append("{}={:0.2f}+/-{:0.2f}".format(key, logz, logzerr)) string.append("{}={:0.2f}+/-{:0.2f}".format(key, logz, logzerr))
string.append("dlogz:{:0.3f}>{:0.2f}".format(delta_logz, dlogz)) string.append("dlogz:{:0.3f}>{:0.2g}".format(delta_logz, dlogz))
self.pbar.set_postfix_str(" ".join(string), refresh=False) self.pbar.set_postfix_str(" ".join(string), refresh=False)
self.pbar.update(niter - self.pbar.n) self.pbar.update(niter - self.pbar.n)
...@@ -715,19 +715,20 @@ def sample_rwalk_bilby(args): ...@@ -715,19 +715,20 @@ def sample_rwalk_bilby(args):
reject = 0 reject = 0
nfail = 0 nfail = 0
act = np.inf act = np.inf
u_list = [u] u_list = []
v_list = [prior_transform(u)] v_list = []
logl_list = [loglikelihood(v_list[-1])] logl_list = []
max_walk_warning = True
while len(u_list) < nact * act: ii = 0
while ii < nact * act:
ii += 1
# Propose a direction on the unit n-sphere. # Propose a direction on the unit n-sphere.
drhat = rstate.randn(n) drhat = rstate.randn(n)
drhat /= linalg.norm(drhat) drhat /= linalg.norm(drhat)
# Scale based on dimensionality. # Scale based on dimensionality.
dr = drhat * rstate.rand()**(1. / n) dr = drhat * rstate.rand() ** (1.0 / n)
# Transform to proposal distribution. # Transform to proposal distribution.
du = np.dot(axes, dr) du = np.dot(axes, dr)
...@@ -778,16 +779,12 @@ def sample_rwalk_bilby(args): ...@@ -778,16 +779,12 @@ def sample_rwalk_bilby(args):
old_act=old_act, maxmcmc=maxmcmc) old_act=old_act, maxmcmc=maxmcmc)
# If we've taken too many likelihood evaluations then break # If we've taken too many likelihood evaluations then break
if accept + reject > maxmcmc and accept > 0: if accept + reject > maxmcmc:
if max_walk_warning: warnings.warn(
warnings.warn( "Hit maximum number of walks {} with accept={}, reject={}, "
"Hit maximum number of walks {} with accept={}, reject={}, " "and nfail={} try increasing maxmcmc"
"and nfail={} try increasing maxmcmc" .format(maxmcmc, accept, reject, nfail))
.format(maxmcmc, accept, reject, nfail)) break
max_walk_warning = False
if accept > 0:
# Break if we are above maxmcmc and have at least one accepted point
break
# If the act is finite, pick randomly from within the chain # If the act is finite, pick randomly from within the chain
if np.isfinite(act) and int(.5 * nact * act) < len(u_list): if np.isfinite(act) and int(.5 * nact * act) < len(u_list):
...@@ -795,17 +792,11 @@ def sample_rwalk_bilby(args): ...@@ -795,17 +792,11 @@ def sample_rwalk_bilby(args):
u = u_list[idx] u = u_list[idx]
v = v_list[idx] v = v_list[idx]
logl = logl_list[idx] logl = logl_list[idx]
elif len(u_list) == 1:
logger.warning("Returning the only point in the chain")
u = u_list[-1]
v = v_list[-1]
logl = logl_list[-1]
else: else:
idx = np.random.randint(int(len(u_list) / 2), len(u_list)) logger.debug("Unable to find a new point using walk: returning a random point")
logger.warning("Returning random point in second half of the chain") u = np.random.uniform(size=n)
u = u_list[idx] v = prior_transform(u)
v = v_list[idx] logl = loglikelihood(v)
logl = logl_list[idx]
blob = {'accept': accept, 'reject': reject, 'fail': nfail, 'scale': scale} blob = {'accept': accept, 'reject': reject, 'fail': nfail, 'scale': scale}
kwargs["old_act"] = act kwargs["old_act"] = act
......
...@@ -193,7 +193,13 @@ class Ptemcee(MCMCSampler): ...@@ -193,7 +193,13 @@ class Ptemcee(MCMCSampler):
) )
self.convergence_inputs = ConvergenceInputs(**convergence_inputs_dict) self.convergence_inputs = ConvergenceInputs(**convergence_inputs_dict)
# MultiProcessing inputs # Check if threads was given as an equivalent arg
if threads == 1:
for equiv in self.npool_equiv_kwargs:
if equiv in kwargs:
threads = kwargs.pop(equiv)
# Store threads
self.threads = threads self.threads = threads
# Misc inputs # Misc inputs
...@@ -221,10 +227,6 @@ class Ptemcee(MCMCSampler): ...@@ -221,10 +227,6 @@ class Ptemcee(MCMCSampler):
for equiv in self.nwalkers_equiv_kwargs: for equiv in self.nwalkers_equiv_kwargs:
if equiv in kwargs: if equiv in kwargs:
kwargs["nwalkers"] = kwargs.pop(equiv) kwargs["nwalkers"] = kwargs.pop(equiv)
if "threads" not in kwargs:
for equiv in self.npool_equiv_kwargs:
if equiv in kwargs:
kwargs["threads"] = kwargs.pop(equiv)
def get_pos0_from_prior(self): def get_pos0_from_prior(self):
""" Draw the initial positions from the prior """ Draw the initial positions from the prior
......
...@@ -2,7 +2,10 @@ import importlib ...@@ -2,7 +2,10 @@ import importlib
import os import os
import tempfile import tempfile
import shutil import shutil
import distutils.dir_util
import signal import signal
import time
import datetime
import numpy as np import numpy as np
...@@ -115,8 +118,15 @@ class Pymultinest(NestedSampler): ...@@ -115,8 +118,15 @@ class Pymultinest(NestedSampler):
# for PyMultiNest >=2.9 the n_params kwarg cannot be None # for PyMultiNest >=2.9 the n_params kwarg cannot be None
if self.kwargs["n_params"] is None: if self.kwargs["n_params"] is None:
self.kwargs["n_params"] = self.ndim self.kwargs["n_params"] = self.ndim
if self.kwargs['dump_callback'] is None:
self.kwargs['dump_callback'] = self._dump_callback
NestedSampler._verify_kwargs_against_default_kwargs(self) NestedSampler._verify_kwargs_against_default_kwargs(self)
def _dump_callback(self, *args, **kwargs):
if self.use_temporary_directory:
self._copy_temporary_directory_contents_to_proper_path()
self._calculate_and_save_sampling_time()
def _apply_multinest_boundaries(self): def _apply_multinest_boundaries(self):
if self.kwargs["wrapped_params"] is None: if self.kwargs["wrapped_params"] is None:
self.kwargs["wrapped_params"] = [] self.kwargs["wrapped_params"] = []
...@@ -154,10 +164,6 @@ class Pymultinest(NestedSampler): ...@@ -154,10 +164,6 @@ class Pymultinest(NestedSampler):
shutil.copytree( shutil.copytree(
self.outputfiles_basename, self.temporary_outputfiles_basename self.outputfiles_basename, self.temporary_outputfiles_basename
) )
if os.path.islink(self.outputfiles_basename):
os.unlink(self.outputfiles_basename)
else:
shutil.rmtree(self.outputfiles_basename)
def write_current_state_and_exit(self, signum=None, frame=None): def write_current_state_and_exit(self, signum=None, frame=None):
""" Write current state and exit on exit_code """ """ Write current state and exit on exit_code """
...@@ -166,26 +172,35 @@ class Pymultinest(NestedSampler): ...@@ -166,26 +172,35 @@ class Pymultinest(NestedSampler):
signum, self.exit_code signum, self.exit_code
) )
) )
self._calculate_and_save_sampling_time()
if self.use_temporary_directory: if self.use_temporary_directory:
self._move_temporary_directory_to_proper_path() self._move_temporary_directory_to_proper_path()
os._exit(self.exit_code) os._exit(self.exit_code)
def _move_temporary_directory_to_proper_path(self): def _copy_temporary_directory_contents_to_proper_path(self):
""" """
Move the temporary back to the proper path Copy the temporary back to the proper path.
Do not delete the temporary directory.
Anything in the proper path at this point is removed including links
""" """
logger.info( logger.info(
"Overwriting {} with {}".format( "Overwriting {} with {}".format(
self.outputfiles_basename, self.temporary_outputfiles_basename self.outputfiles_basename, self.temporary_outputfiles_basename
) )
) )
if os.path.islink(self.outputfiles_basename.strip("/")): if self.outputfiles_basename.endswith('/'):
os.unlink(self.outputfiles_basename.strip("/")) outputfiles_basename_stripped = self.outputfiles_basename[:-1]
elif os.path.isdir(self.outputfiles_basename): else:
shutil.rmtree(self.outputfiles_basename, ignore_errors=True) outputfiles_basename_stripped = self.outputfiles_basename
shutil.move(self.temporary_outputfiles_basename, self.outputfiles_basename) distutils.dir_util.copy_tree(self.temporary_outputfiles_basename, outputfiles_basename_stripped)
def _move_temporary_directory_to_proper_path(self):
"""
Copy the temporary back to the proper path
Anything in the temporary directory at this point is removed
"""
self._copy_temporary_directory_contents_to_proper_path()
shutil.rmtree(self.temporary_outputfiles_basename)
def run_sampler(self): def run_sampler(self):
import pymultinest import pymultinest
...@@ -193,17 +208,20 @@ class Pymultinest(NestedSampler): ...@@ -193,17 +208,20 @@ class Pymultinest(NestedSampler):
self._verify_kwargs_against_default_kwargs() self._verify_kwargs_against_default_kwargs()
self._setup_run_directory() self._setup_run_directory()
self._check_and_load_sampling_time_file()
# Overwrite pymultinest's signal handling function # Overwrite pymultinest's signal handling function
pm_run = importlib.import_module("pymultinest.run") pm_run = importlib.import_module("pymultinest.run")
pm_run.interrupt_handler = self.write_current_state_and_exit pm_run.interrupt_handler = self.write_current_state_and_exit
self.start_time = time.time()
out = pymultinest.solve( out = pymultinest.solve(
LogLikelihood=self.log_likelihood, LogLikelihood=self.log_likelihood,
Prior=self.prior_transform, Prior=self.prior_transform,
n_dims=self.ndim, n_dims=self.ndim,
**self.kwargs **self.kwargs
) )
self._calculate_and_save_sampling_time()
self._clean_up_run_directory() self._clean_up_run_directory()
...@@ -218,26 +236,22 @@ class Pymultinest(NestedSampler): ...@@ -218,26 +236,22 @@ class Pymultinest(NestedSampler):
self.result.log_evidence_err = out["logZerr"] self.result.log_evidence_err = out["logZerr"]
self.calc_likelihood_count() self.calc_likelihood_count()
self.result.outputfiles_basename = self.outputfiles_basename self.result.outputfiles_basename = self.outputfiles_basename
self.result.sampling_time = datetime.timedelta(seconds=self.total_sampling_time)
return self.result return self.result
def _setup_run_directory(self): def _setup_run_directory(self):
""" """
If using a temporary directory, the output directory is moved to the If using a temporary directory, the output directory is moved to the
temporary directory and symlinked back. temporary directory.
""" """
if self.use_temporary_directory: if self.use_temporary_directory:
temporary_outputfiles_basename = tempfile.TemporaryDirectory().name temporary_outputfiles_basename = tempfile.TemporaryDirectory().name
self.temporary_outputfiles_basename = temporary_outputfiles_basename self.temporary_outputfiles_basename = temporary_outputfiles_basename
if os.path.exists(self.outputfiles_basename): if os.path.exists(self.outputfiles_basename):
shutil.move(self.outputfiles_basename, self.temporary_outputfiles_basename) distutils.dir_util.copy_tree(self.outputfiles_basename, self.temporary_outputfiles_basename)
check_directory_exists_and_if_not_mkdir(temporary_outputfiles_basename) check_directory_exists_and_if_not_mkdir(temporary_outputfiles_basename)
os.symlink(
os.path.abspath(self.temporary_outputfiles_basename),
os.path.abspath(self.outputfiles_basename),
target_is_directory=True,
)
self.kwargs["outputfiles_basename"] = self.temporary_outputfiles_basename self.kwargs["outputfiles_basename"] = self.temporary_outputfiles_basename
logger.info("Using temporary file {}".format(temporary_outputfiles_basename)) logger.info("Using temporary file {}".format(temporary_outputfiles_basename))
else: else:
...@@ -245,6 +259,21 @@ class Pymultinest(NestedSampler): ...@@ -245,6 +259,21 @@ class Pymultinest(NestedSampler):
self.kwargs["outputfiles_basename"] = self.outputfiles_basename self.kwargs["outputfiles_basename"] = self.outputfiles_basename
logger.info("Using output file {}".format(self.outputfiles_basename)) logger.info("Using output file {}".format(self.outputfiles_basename))
def _check_and_load_sampling_time_file(self):
self.time_file_path = self.kwargs["outputfiles_basename"] + '/sampling_time.dat'
if os.path.exists(self.time_file_path):
with open(self.time_file_path, 'r') as time_file:
self.total_sampling_time = float(time_file.readline())
else:
self.total_sampling_time = 0
def _calculate_and_save_sampling_time(self):
current_time = time.time()
new_sampling_time = current_time - self.start_time
self.total_sampling_time += new_sampling_time
with open(self.time_file_path, 'w') as time_file:
time_file.write(str(self.total_sampling_time))
def _clean_up_run_directory(self): def _clean_up_run_directory(self):
if self.use_temporary_directory: if self.use_temporary_directory:
self._move_temporary_directory_to_proper_path() self._move_temporary_directory_to_proper_path()
......
...@@ -123,10 +123,11 @@ class Ultranest(NestedSampler): ...@@ -123,10 +123,11 @@ class Ultranest(NestedSampler):
): ):
self.kwargs["wrapped_params"] = [] self.kwargs["wrapped_params"] = []
for param, value in self.priors.items(): for param, value in self.priors.items():
if value.boundary == "periodic": if param in self.search_parameter_keys:
self.kwargs["wrapped_params"].append(1) if value.boundary == "periodic":
else: self.kwargs["wrapped_params"].append(1)
self.kwargs["wrapped_params"].append(0) else:
self.kwargs["wrapped_params"].append(0)
@property @property
def outputfiles_basename(self): def outputfiles_basename(self):
......
...@@ -556,7 +556,9 @@ def check_directory_exists_and_if_not_mkdir(directory): ...@@ -556,7 +556,9 @@ def check_directory_exists_and_if_not_mkdir(directory):
Name of the directory Name of the directory
""" """
if not os.path.exists(directory): if directory == "":
return
elif not os.path.exists(directory):
os.makedirs(directory) os.makedirs(directory)
logger.debug('Making directory {}'.format(directory)) logger.debug('Making directory {}'.format(directory))
else: else:
......
...@@ -25,6 +25,9 @@ except ImportError: ...@@ -25,6 +25,9 @@ except ImportError:
" not be able to use some of the prebuilt functions.") " not be able to use some of the prebuilt functions.")
DEFAULT_PRIOR_DIR = os.path.join(os.path.dirname(__file__), 'prior_files')
class BilbyPriorConversionError(Exception): class BilbyPriorConversionError(Exception):
pass pass
...@@ -406,17 +409,17 @@ class BBHPriorDict(CBCPriorDict): ...@@ -406,17 +409,17 @@ class BBHPriorDict(CBCPriorDict):
By default this generates many additional parameters, see By default this generates many additional parameters, see
BBHPriorDict.default_conversion_function BBHPriorDict.default_conversion_function
""" """
basedir = os.path.join(os.path.dirname(__file__), 'prior_files')
if dictionary is None and filename is None: if dictionary is None and filename is None:
fname = 'binary_black_holes.prior'
if aligned_spin: if aligned_spin:
fname = 'aligned_spin_' + fname fname = 'aligned_spins_binary_black_holes.prior'
logger.info('Using aligned spin prior') logger.info('Using aligned spin prior')
filename = os.path.join(basedir, fname) else:
fname = 'precessing_spins_binary_black_holes.prior'
filename = os.path.join(DEFAULT_PRIOR_DIR, fname)
logger.info('No prior given, using default BBH priors in {}.'.format(filename)) logger.info('No prior given, using default BBH priors in {}.'.format(filename))
elif filename is not None: elif filename is not None:
if not os.path.isfile(filename): if not os.path.isfile(filename):
filename = os.path.join(os.path.dirname(__file__), 'prior_files', filename) filename = os.path.join(DEFAULT_PRIOR_DIR, filename)
super(BBHPriorDict, self).__init__(dictionary=dictionary, filename=filename, super(BBHPriorDict, self).__init__(dictionary=dictionary, filename=filename,
conversion_function=conversion_function) conversion_function=conversion_function)
...@@ -514,15 +517,15 @@ class BNSPriorDict(CBCPriorDict): ...@@ -514,15 +517,15 @@ class BNSPriorDict(CBCPriorDict):
BNSPriorDict.default_conversion_function BNSPriorDict.default_conversion_function
""" """
if aligned_spin: if aligned_spin:
default_file = 'binary_neutron_stars.prior' default_file = 'aligned_spins_waveform_tides_on.prior'
else: else:
default_file = 'precessing_binary_neutron_stars.prior' default_file = 'precessing_spins_waveform_tides_on.prior'
if dictionary is None and filename is None: if dictionary is None and filename is None:
filename = os.path.join(os.path.dirname(__file__), 'prior_files', default_file) filename = os.path.join(DEFAULT_PRIOR_DIR, default_file)
logger.info('No prior given, using default BNS priors in {}.'.format(filename)) logger.info('No prior given, using default BNS priors in {}.'.format(filename))
elif filename is not None: elif filename is not None:
if not os.path.isfile(filename): if not os.path.isfile(filename):
filename = os.path.join(os.path.dirname(__file__), 'prior_files', filename) filename = os.path.join(DEFAULT_PRIOR_DIR, filename)
super(BNSPriorDict, self).__init__(dictionary=dictionary, filename=filename, super(BNSPriorDict, self).__init__(dictionary=dictionary, filename=filename,
conversion_function=conversion_function) conversion_function=conversion_function)
...@@ -628,8 +631,7 @@ class CalibrationPriorDict(PriorDict): ...@@ -628,8 +631,7 @@ class CalibrationPriorDict(PriorDict):
See superclass See superclass
""" """
if dictionary is None and filename is not None: if dictionary is None and filename is not None:
filename = os.path.join(os.path.dirname(__file__), filename = os.path.join(DEFAULT_PRIOR_DIR, filename)
'prior_files', filename)
super(CalibrationPriorDict, self).__init__(dictionary=dictionary, filename=filename) super(CalibrationPriorDict, self).__init__(dictionary=dictionary, filename=filename)
self.source = None self.source = None
......
mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1, boundary='reflective') mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1)
chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=31, unit='$M_{\odot}$', boundary='reflective') chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=31)
mass_1 = Constraint(name='mass_1', minimum=10, maximum=80) mass_1 = Constraint(name='mass_1', minimum=10, maximum=80)
mass_2 = Constraint(name='mass_2', minimum=10, maximum=80) mass_2 = Constraint(name='mass_2', minimum=10, maximum=80)
a_1 = Uniform(name='a_1', minimum=0, maximum=0.99, boundary='reflective') a_1 = Uniform(name='a_1', minimum=0, maximum=0.99)
a_2 = Uniform(name='a_2', minimum=0, maximum=0.99, boundary='reflective') a_2 = Uniform(name='a_2', minimum=0, maximum=0.99)
tilt_1 = Sine(name='tilt_1', boundary='reflective') tilt_1 = Sine(name='tilt_1', boundary='reflective')
tilt_2 = Sine(name='tilt_2', boundary='reflective') tilt_2 = Sine(name='tilt_2', boundary='reflective')
phi_12 = Uniform(name='phi_12', minimum=0, maximum=2 * np.pi, boundary='periodic') phi_12 = Uniform(name='phi_12', minimum=0, maximum=2 * np.pi, boundary='periodic')
phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic') phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic')
luminosity_distance = PowerLaw(alpha=2, name='luminosity_distance', minimum=50, maximum=2000, unit='Mpc', latex_label='$d_L$') luminosity_distance = PowerLaw(alpha=2, name='luminosity_distance', minimum=50, maximum=2000, unit='Mpc', latex_label='$d_L$')
dec = Cosine(name='dec', boundary='reflective') dec = Cosine(name='dec')
ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic') ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic')
theta_jn = Sine(name='theta_jn', boundary='reflective') theta_jn = Sine(name='theta_jn', boundary='reflective')
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
......
...@@ -3,16 +3,16 @@ ...@@ -3,16 +3,16 @@
# mass_2 = Constraint(name='mass_2', minimum=1., maximum=1.4) # mass_2 = Constraint(name='mass_2', minimum=1., maximum=1.4)
chirp_mass = Uniform(name='chirp_mass', minimum=0.87, maximum=1.74, unit='$M_{\odot}$', boundary=None) chirp_mass = Uniform(name='chirp_mass', minimum=0.87, maximum=1.74, unit='$M_{\odot}$', boundary=None)
mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1.0, boundary=None) mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1.0, boundary=None)
a_1 = Uniform(name='a_1', minimum=0, maximum=0.05, boundary='reflective') a_1 = Uniform(name='a_1', minimum=0, maximum=0.05)
a_2 = Uniform(name='a_2', minimum=0, maximum=0.05, boundary='reflective') a_2 = Uniform(name='a_2', minimum=0, maximum=0.05)
tilt_1 = Sine(name='tilt_1', boundary='reflective') tilt_1 = Sine(name='tilt_1')
tilt_2 = Sine(name='tilt_2', boundary='reflective') tilt_2 = Sine(name='tilt_2')
phi_12 = Uniform(name='phi_12', minimum=0, maximum=2 * np.pi, boundary='periodic') phi_12 = Uniform(name='phi_12', minimum=0, maximum=2 * np.pi, boundary='periodic')
phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic') phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic')
luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=10, maximum=100, unit='Mpc', boundary=None) luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=10, maximum=100, unit='Mpc', boundary=None)
dec = Cosine(name='dec', boundary='reflective') dec = Cosine(name='dec')
ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic') ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic')
theta_jn = Sine(name='theta_jn', boundary='reflective') theta_jn = Sine(name='theta_jn')
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic') phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
# lambda_1 = Constraint(name='lambda_1', minimum=0, maximum=5000) # lambda_1 = Constraint(name='lambda_1', minimum=0, maximum=5000)
......
...@@ -2,19 +2,15 @@ ...@@ -2,19 +2,15 @@
# Note that you may wish to use more specific mass and distance parameters. # Note that you may wish to use more specific mass and distance parameters.
# These commands are all known to bilby.gw.prior. # These commands are all known to bilby.gw.prior.
# Lines beginning "#" are ignored. # Lines beginning "#" are ignored.
mass_1 = Uniform(name='mass_1', minimum=5, maximum=100, unit='$M_{\odot}$', boundary=None) mass_1 = Constraint(name='mass_1', minimum=5, maximum=100)
mass_2 = Uniform(name='mass_2', minimum=5, maximum=100, unit='$M_{\odot}$', boundary=None) mass_2 = Constraint(name='mass_2', minimum=5, maximum=100)
mass_ratio = Constraint(name='mass_ratio', minimum=0.125, maximum=1) mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1)
# chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100, unit='$M_{\odot}$', boundary=None) chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100)
# total_mass = Uniform(name='total_mass', minimum=10, maximum=200, unit='$M_{\odot}$', boundary=None) chi_1 = bilby.gw.prior.AlignedSpin(name='chi_1', a_prior=Uniform(minimum=0, maximum=0.99))
# mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1, boundary=None) chi_2 = bilby.gw.prior.AlignedSpin(name='chi_2', a_prior=Uniform(minimum=0, maximum=0.99))
# symmetric_mass_ratio = Uniform(name='symmetric_mass_ratio', minimum=8 / 81, maximum=0.25, boundary=None) luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=1e2, maximum=5e3)
chi_1 = bilby.gw.prior.AlignedSpin(name='chi_1', a_prior=Uniform(minimum=0, maximum=0.8), boundary='reflective') dec = Cosine(name='dec')
chi_2 = bilby.gw.prior.AlignedSpin(name='chi_2', a_prior=Uniform(minimum=0, maximum=0.8), boundary='reflective')
luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=1e2, maximum=5e3, unit='Mpc', boundary=None)
dec = Cosine(name='dec', boundary='reflective')
ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic') ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic')
theta_jn = Sine(name='theta_jn', boundary='reflective') theta_jn = Sine(name='theta_jn')
# cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1, boundary=None)
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic') phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
chirp_mass = Uniform(name='chirp_mass', minimum=3.56, maximum=3.68) chirp_mass = Uniform(name='chirp_mass', minimum=3.56, maximum=3.68)
mass_ratio = Uniform(name='mass_ratio', minimum=0.05, maximum=1) mass_ratio = Uniform(name='mass_ratio', minimum=0.05, maximum=1)
mass_1 = Constraint(name='mass_1', minimum=1.00, maximum=22.0) #optional mass_1 = Constraint(name='mass_1', minimum=1.00, maximum=22.0)
mass_2 = Constraint(name='mass_2', minimum=1.00, maximum=2.95) #optional mass_2 = Constraint(name='mass_2', minimum=1.00, maximum=2.95)
chi_1 = bilby.gw.prior.AlignedSpin(name='chi_1', a_prior=Uniform(minimum=0, maximum=0.5)) chi_1 = bilby.gw.prior.AlignedSpin(name='chi_1', a_prior=Uniform(minimum=0, maximum=0.5))
chi_2 = bilby.gw.prior.AlignedSpin(name='chi_2', a_prior=Uniform(minimum=0, maximum=0.05)) chi_2 = bilby.gw.prior.AlignedSpin(name='chi_2', a_prior=Uniform(minimum=0, maximum=0.05))
luminosity_distance = bilby.core.prior.PowerLaw(alpha=2, name='luminosity_distance', minimum=1, maximum=750, unit='Mpc') luminosity_distance = bilby.core.prior.PowerLaw(alpha=2, name='luminosity_distance', minimum=1, maximum=750, unit='Mpc')
ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic') ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic')
dec = Cosine(name='dec') dec = Cosine(name='dec')
cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1) theta_jn = Sine(name='theta_jn')
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic') phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
chirp_mass = Uniform(name='chirp_mass', minimum=3.56, maximum=3.68) chirp_mass = Uniform(name='chirp_mass', minimum=3.56, maximum=3.68)
mass_ratio = Uniform(name='mass_ratio', minimum=0.05, maximum=1) mass_ratio = Uniform(name='mass_ratio', minimum=0.05, maximum=1)
mass_1 = Constraint(name='mass_1', minimum=1.00, maximum=22.0) #optional mass_1 = Constraint(name='mass_1', minimum=1.00, maximum=22.0)
mass_2 = Constraint(name='mass_2', minimum=1.00, maximum=2.95) #optional mass_2 = Constraint(name='mass_2', minimum=1.00, maximum=2.95)
chi_1 = bilby.gw.prior.AlignedSpin(name='chi_1', a_prior=Uniform(minimum=0, maximum=0.5)) chi_1 = bilby.gw.prior.AlignedSpin(name='chi_1', a_prior=Uniform(minimum=0, maximum=0.5))
chi_2 = bilby.gw.prior.AlignedSpin(name='chi_2', a_prior=Uniform(minimum=0, maximum=0.05)) chi_2 = bilby.gw.prior.AlignedSpin(name='chi_2', a_prior=Uniform(minimum=0, maximum=0.05))
luminosity_distance = bilby.core.prior.PowerLaw(alpha=2, name='luminosity_distance', minimum=1, maximum=750, unit='Mpc') luminosity_distance = bilby.core.prior.PowerLaw(alpha=2, name='luminosity_distance', minimum=1, maximum=750, unit='Mpc')
ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic') ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic')
dec = Cosine(name='dec') dec = Cosine(name='dec')
cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1) theta_jn = Sine(name='theta_jn')
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic') phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
lambda_1 = Uniform(name='lambda_2', minimum=0, maximum=5000) lambda_1 = Uniform(name='lambda_2', minimum=0, maximum=5000)
......
# These are the default priors we use for BNS systems.
# Note that you may wish to use more specific mass and distance parameters.
# These commands are all known to bilby.gw.prior.
# Lines beginning "#" are ignored.
mass_1 = Uniform(name='mass_1', minimum=1, maximum=2, unit='$M_{\odot}$', boundary=None)
mass_2 = Uniform(name='mass_2', minimum=1, maximum=2, unit='$M_{\odot}$', boundary=None)
mass_ratio = Constraint(name='mass_ratio', minimum=0.125, maximum=1)
# chirp_mass = Uniform(name='chirp_mass', minimum=0.87, maximum=1.74, unit='$M_{\odot}$', boundary=None)
# total_mass = Uniform(name='total_mass', minimum=2, maximum=4, unit='$M_{\odot}$', boundary=None)
# mass_ratio = Uniform(name='mass_ratio', minimum=0.5, maximum=1, boundary=None)
# symmetric_mass_ratio = Uniform(name='symmetric_mass_ratio', minimum=0.22, maximum=0.25, boundary=None)
chi_1 = bilby.gw.prior.AlignedSpin(a_prior=Uniform(0, 0.05), z_prior=Uniform(-1, 1), name='chi_1', latex_label='$\chi_1$', boundary='reflective')
chi_2 = bilby.gw.prior.AlignedSpin(a_prior=Uniform(0, 0.05), z_prior=Uniform(-1, 1), name='chi_2', latex_label='$\chi_2$', boundary='reflective')
luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=10, maximum=500, unit='Mpc', boundary=None)
dec = Cosine(name='dec', boundary='reflective')
ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic')
theta_jn = Sine(name='theta_jn', boundary='reflective')
# cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1, boundary=None)
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
lambda_1 = Uniform(name='lambda_1', minimum=0, maximum=3000, boundary=None)
lambda_2 = Uniform(name='lambda_2', minimum=0, maximum=3000, boundary=None)
# lambda_tilde = Uniform(name='lambda_tilde', minimum=0, maximum=5000, boundary=None)
# delta_lambda_tilde = Uniform(name='delta_lambda_tilde', minimum=-5000, maximum=5000, boundary=None)
# These are the default priors we use for BNS systems.
# Note that you may wish to use more specific mass and distance parameters.
# These commands are all known to bilby.gw.prior.
# Lines beginning "#" are ignored.
mass_1 = Uniform(name='mass_1', minimum=1, maximum=2, unit='$M_{\odot}$', boundary=None)
mass_2 = Uniform(name='mass_2', minimum=1, maximum=2, unit='$M_{\odot}$', boundary=None)
mass_ratio = Constraint(name='mass_ratio', minimum=0.125, maximum=1)
# chirp_mass = Uniform(name='chirp_mass', minimum=0.87, maximum=1.74, unit='$M_{\odot}$', boundary=None)
# total_mass = Uniform(name='total_mass', minimum=2, maximum=4, unit='$M_{\odot}$', boundary=None)
# mass_ratio = Uniform(name='mass_ratio', minimum=0.5, maximum=1, boundary=None)
# symmetric_mass_ratio = Uniform(name='symmetric_mass_ratio', minimum=0.22, maximum=0.25, boundary=None)
a_1 = Uniform(name='a_1', minimum=0, maximum=0.05, boundary='reflective')
a_2 = Uniform(name='a_2', minimum=0, maximum=0.05, boundary='reflective')
tilt_1 = Sine(name='tilt_1', boundary='reflective')
tilt_2 = Sine(name='tilt_2', boundary='reflective')
# cos_tilt_1 = Uniform(name='cos_tilt_1', minimum=-1, maximum=1, boundary=None)
# cos_tilt_2 = Uniform(name='cos_tilt_2', minimum=-1, maximum=1, boundary=None)
phi_12 = Uniform(name='phi_12', minimum=0, maximum=2 * np.pi, boundary='periodic')
phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic')
luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=10, maximum=500, unit='Mpc', boundary=None)
dec = Cosine(name='dec', boundary='reflective')
ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic')
theta_jn = Sine(name='theta_jn', boundary='reflective')
# cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1, boundary=None)
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
lambda_1 = Uniform(name='lambda_1', minimum=0, maximum=3000, boundary=None)
lambda_2 = Uniform(name='lambda_2', minimum=0, maximum=3000, boundary=None)
# lambda_tilde = Uniform(name='lambda_tilde', minimum=0, maximum=5000, boundary=None)
# delta_lambda_tilde = Uniform(name='delta_lambda_tilde', minimum=-5000, maximum=5000, boundary=None)
...@@ -2,25 +2,19 @@ ...@@ -2,25 +2,19 @@
# Note that you may wish to use more specific mass and distance parameters. # Note that you may wish to use more specific mass and distance parameters.
# These commands are all known to bilby.gw.prior. # These commands are all known to bilby.gw.prior.
# Lines beginning "#" are ignored. # Lines beginning "#" are ignored.
mass_1 = Uniform(name='mass_1', minimum=5, maximum=100, unit='$M_{\odot}$', boundary=None) mass_1 = Constraint(name='mass_1', minimum=5, maximum=100)
mass_2 = Uniform(name='mass_2', minimum=5, maximum=100, unit='$M_{\odot}$', boundary=None) mass_2 = Constraint(name='mass_2', minimum=5, maximum=100)
mass_ratio = Constraint(name='mass_ratio', minimum=0.125, maximum=1) mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1)
# chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100, unit='$M_{\odot}$', boundary=None) chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100)
# total_mass = Uniform(name='total_mass', minimum=10, maximum=200, unit='$M_{\odot}$', boundary=None) a_1 = Uniform(name='a_1', minimum=0, maximum=0.99)
# mass_ratio = Uniform(name='mass_ratio', minimum=0.125, maximum=1, boundary=None) a_2 = Uniform(name='a_2', minimum=0, maximum=0.99)
# symmetric_mass_ratio = Uniform(name='symmetric_mass_ratio', minimum=8 / 81, maximum=0.25, boundary=None) tilt_1 = Sine(name='tilt_1')
a_1 = Uniform(name='a_1', minimum=0, maximum=0.8, boundary='reflective') tilt_2 = Sine(name='tilt_2')
a_2 = Uniform(name='a_2', minimum=0, maximum=0.8, boundary='reflective')
tilt_1 = Sine(name='tilt_1', boundary='reflective')
tilt_2 = Sine(name='tilt_2', boundary='reflective')
# cos_tilt_1 = Uniform(name='cos_tilt_1', minimum=-1, maximum=1, boundary=None)
# cos_tilt_2 = Uniform(name='cos_tilt_2', minimum=-1, maximum=1, boundary=None)
phi_12 = Uniform(name='phi_12', minimum=0, maximum=2 * np.pi, boundary='periodic') phi_12 = Uniform(name='phi_12', minimum=0, maximum=2 * np.pi, boundary='periodic')
phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic') phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic')
luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=1e2, maximum=5e3, unit='Mpc', boundary=None) luminosity_distance = bilby.gw.prior.UniformSourceFrame(name='luminosity_distance', minimum=1e2, maximum=5e3)
dec = Cosine(name='dec', boundary='reflective') dec = Cosine(name='dec')
ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic') ra = Uniform(name='ra', minimum=0, maximum=2 * np.pi, boundary='periodic')
theta_jn = Sine(name='theta_jn', boundary='reflective') theta_jn = Sine(name='theta_jn')
# cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1, boundary=None)
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic') phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
...@@ -11,6 +11,6 @@ phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic ...@@ -11,6 +11,6 @@ phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic
luminosity_distance = bilby.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1, maximum=750, unit='Mpc') luminosity_distance = bilby.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1, maximum=750, unit='Mpc')
ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic') ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic')
dec = Cosine(name='dec') dec = Cosine(name='dec')
cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1) theta_jn = Sine(name='theta_jn')
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic') phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
...@@ -11,7 +11,7 @@ phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic ...@@ -11,7 +11,7 @@ phi_jl = Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi, boundary='periodic
luminosity_distance = bilby.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1, maximum=750, unit='Mpc') luminosity_distance = bilby.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1, maximum=750, unit='Mpc')
ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic') ra = Uniform(minimum=0, maximum=2 * np.pi, name='ra', boundary='periodic')
dec = Cosine(name='dec') dec = Cosine(name='dec')
cos_theta_jn = Uniform(name='cos_theta_jn', minimum=-1, maximum=1) theta_jn = Sine(name='theta_jn')
psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic') psi = Uniform(name='psi', minimum=0, maximum=np.pi, boundary='periodic')
phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic') phase = Uniform(name='phase', minimum=0, maximum=2 * np.pi, boundary='periodic')
lambda_1 = Uniform(name='lambda_2', minimum=0, maximum=5000) lambda_1 = Uniform(name='lambda_2', minimum=0, maximum=5000)
......