diff --git a/bilby/core/likelihood.py b/bilby/core/likelihood.py index 2f7933a392080d540106abb1811e5f2376f4e801..efc8d580cf9567d876e5f2de198e333635efc054 100644 --- a/bilby/core/likelihood.py +++ b/bilby/core/likelihood.py @@ -73,7 +73,7 @@ class ZeroLikelihood(Likelihood): """ def __init__(self, likelihood): - Likelihood.__init__(self, dict.fromkeys(likelihood.parameters)) + super(ZeroLikelihood, self).__init__(dict.fromkeys(likelihood.parameters)) self.parameters = likelihood.parameters self._parent = likelihood @@ -105,7 +105,7 @@ class Analytical1DLikelihood(Likelihood): def __init__(self, x, y, func): parameters = infer_parameters_from_function(func) - Likelihood.__init__(self, dict.fromkeys(parameters)) + super(Analytical1DLikelihood, self).__init__(dict.fromkeys(parameters)) self.x = x self.y = y self._func = func @@ -185,7 +185,7 @@ class GaussianLikelihood(Analytical1DLikelihood): to that for `x` and `y`. """ - Analytical1DLikelihood.__init__(self, x=x, y=y, func=func) + super(GaussianLikelihood, self).__init__(x=x, y=y, func=func) self.sigma = sigma # Check if sigma was provided, if not it is a parameter @@ -246,7 +246,7 @@ class PoissonLikelihood(Analytical1DLikelihood): fixed value is given). """ - Analytical1DLikelihood.__init__(self, x=x, y=y, func=func) + super(PoissonLikelihood, self).__init__(x=x, y=y, func=func) def log_likelihood(self): rate = self.func(self.x, **self.model_parameters) @@ -297,7 +297,7 @@ class ExponentialLikelihood(Analytical1DLikelihood): value is given). The model should return the expected mean of the exponential distribution for each data point. """ - Analytical1DLikelihood.__init__(self, x=x, y=y, func=func) + super(ExponentialLikelihood, self).__init__(x=x, y=y, func=func) def log_likelihood(self): mu = self.func(self.x, **self.model_parameters) @@ -352,7 +352,7 @@ class StudentTLikelihood(Analytical1DLikelihood): Set the scale of the distribution. If not given then this defaults to 1, which specifies a standard (central) Student's t-distribution """ - Analytical1DLikelihood.__init__(self, x=x, y=y, func=func) + super(StudentTLikelihood, self).__init__(x=x, y=y, func=func) self.nu = nu self.sigma = sigma @@ -413,7 +413,7 @@ class JointLikelihood(Likelihood): likelihoods to be combined parsed as arguments """ self.likelihoods = likelihoods - Likelihood.__init__(self, parameters={}) + super(JointLikelihood, self).__init__(parameters={}) self.__sync_parameters() def __sync_parameters(self): diff --git a/bilby/core/prior.py b/bilby/core/prior.py index 20e3185cce0e82058a198e50a318de12791b1de0..87337d2959e0b32eb55f14c7166adca75d1e5344 100644 --- a/bilby/core/prior.py +++ b/bilby/core/prior.py @@ -38,7 +38,7 @@ class PriorDict(OrderedDict): Function to convert between sampled parameters and constraints. Default is no conversion. """ - OrderedDict.__init__(self) + super(PriorDict, self).__init__() if isinstance(dictionary, dict): self.from_dictionary(dictionary) elif type(dictionary) is str: @@ -886,8 +886,8 @@ class Constraint(Prior): def __init__(self, minimum, maximum, name=None, latex_label=None, unit=None): - Prior.__init__(self, minimum=minimum, maximum=maximum, name=name, - latex_label=latex_label, unit=unit) + super(Constraint, self).__init__(minimum=minimum, maximum=maximum, name=name, + latex_label=latex_label, unit=unit) def prob(self, val): return (val > self.minimum) & (val < self.maximum) @@ -913,8 +913,8 @@ class DeltaFunction(Prior): See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, - minimum=peak, maximum=peak) + super(DeltaFunction, self).__init__(name=name, latex_label=latex_label, unit=unit, + minimum=peak, maximum=peak) self.peak = peak def rescale(self, val): @@ -973,9 +973,9 @@ class PowerLaw(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, - minimum=minimum, maximum=maximum, unit=unit, - boundary=boundary) + super(PowerLaw, self).__init__(name=name, latex_label=latex_label, + minimum=minimum, maximum=maximum, unit=unit, + boundary=boundary) self.alpha = alpha def rescale(self, val): @@ -1041,14 +1041,11 @@ class PowerLaw(Prior): def cdf(self, val): if self.alpha == -1: - _cdf = ( - np.log(val / self.minimum) / - np.log(self.maximum / self.minimum)) + _cdf = (np.log(val / self.minimum) / + np.log(self.maximum / self.minimum)) else: - _cdf = np.atleast_1d( - val**(self.alpha + 1) - self.minimum**(self.alpha + 1) - ) / ( - self.maximum**(self.alpha + 1) - self.minimum**(self.alpha + 1)) + _cdf = np.atleast_1d(val ** (self.alpha + 1) - self.minimum ** (self.alpha + 1)) / \ + (self.maximum ** (self.alpha + 1) - self.minimum ** (self.alpha + 1)) _cdf = np.minimum(_cdf, 1) _cdf = np.maximum(_cdf, 0) return _cdf @@ -1075,9 +1072,9 @@ class Uniform(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, - minimum=minimum, maximum=maximum, unit=unit, - boundary=boundary) + super(Uniform, self).__init__(name=name, latex_label=latex_label, + minimum=minimum, maximum=maximum, unit=unit, + boundary=boundary) def rescale(self, val): """ @@ -1153,8 +1150,8 @@ class LogUniform(PowerLaw): boundary: str See superclass """ - PowerLaw.__init__(self, name=name, latex_label=latex_label, unit=unit, - minimum=minimum, maximum=maximum, alpha=-1, boundary=boundary) + super(LogUniform, self).__init__(name=name, latex_label=latex_label, unit=unit, + minimum=minimum, maximum=maximum, alpha=-1, boundary=boundary) if self.minimum <= 0: logger.warning('You specified a uniform-in-log prior with minimum={}'.format(self.minimum)) @@ -1185,9 +1182,9 @@ class SymmetricLogUniform(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, - minimum=minimum, maximum=maximum, unit=unit, - boundary=boundary) + super(SymmetricLogUniform, self).__init__(name=name, latex_label=latex_label, + minimum=minimum, maximum=maximum, unit=unit, + boundary=boundary) def rescale(self, val): """ @@ -1223,9 +1220,8 @@ class SymmetricLogUniform(Prior): ------- float: Prior probability of val """ - return ( - np.nan_to_num(0.5 / np.abs(val) / np.log(self.maximum / self.minimum)) * - self.is_in_prior_range(val)) + return (np.nan_to_num(0.5 / np.abs(val) / np.log(self.maximum / self.minimum)) * + self.is_in_prior_range(val)) def ln_prob(self, val): """Return the logarithmic prior probability of val @@ -1263,8 +1259,8 @@ class Cosine(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, - minimum=minimum, maximum=maximum, boundary=boundary) + super(Cosine, self).__init__(name=name, latex_label=latex_label, unit=unit, + minimum=minimum, maximum=maximum, boundary=boundary) def rescale(self, val): """ @@ -1318,8 +1314,8 @@ class Sine(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, - minimum=minimum, maximum=maximum, boundary=boundary) + super(Sine, self).__init__(name=name, latex_label=latex_label, unit=unit, + minimum=minimum, maximum=maximum, boundary=boundary) def rescale(self, val): """ @@ -1372,7 +1368,7 @@ class Gaussian(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, boundary=boundary) + super(Gaussian, self).__init__(name=name, latex_label=latex_label, unit=unit, boundary=boundary) self.mu = mu self.sigma = sigma @@ -1417,31 +1413,11 @@ class Gaussian(Prior): return -0.5 * ((self.mu - val) ** 2 / self.sigma ** 2 + np.log(2 * np.pi * self.sigma ** 2)) def cdf(self, val): - return (1 - erf((self.mu - val) / 2**0.5 / self.sigma)) / 2 + return (1 - erf((self.mu - val) / 2 ** 0.5 / self.sigma)) / 2 class Normal(Gaussian): - - def __init__(self, mu, sigma, name=None, latex_label=None, unit=None, boundary=None): - """A synonym for the Gaussian distribution. - - Parameters - ---------- - mu: float - Mean of the Gaussian prior - sigma: float - Width/Standard deviation of the Gaussian prior - name: str - See superclass - latex_label: str - See superclass - unit: str - See superclass - boundary: str - See superclass - """ - Gaussian.__init__(self, mu=mu, sigma=sigma, name=name, latex_label=latex_label, - unit=unit, boundary=boundary) + """A synonym for the Gaussian distribution. """ class TruncatedGaussian(Prior): @@ -1471,8 +1447,8 @@ class TruncatedGaussian(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, - minimum=minimum, maximum=maximum, boundary=boundary) + super(TruncatedGaussian, self).__init__(name=name, latex_label=latex_label, unit=unit, + minimum=minimum, maximum=maximum, boundary=boundary) self.mu = mu self.sigma = sigma @@ -1508,8 +1484,8 @@ class TruncatedGaussian(Prior): ------- float: Prior probability of val """ - return np.exp(-(self.mu - val) ** 2 / (2 * self.sigma ** 2)) / \ - (2 * np.pi) ** 0.5 / self.sigma / self.normalisation * self.is_in_prior_range(val) + return np.exp(-(self.mu - val) ** 2 / (2 * self.sigma ** 2)) / (2 * np.pi) ** 0.5 \ + / self.sigma / self.normalisation * self.is_in_prior_range(val) def cdf(self, val): _cdf = (erf((val - self.mu) / 2 ** 0.5 / self.sigma) - erf( @@ -1520,33 +1496,7 @@ class TruncatedGaussian(Prior): class TruncatedNormal(TruncatedGaussian): - - def __init__(self, mu, sigma, minimum, maximum, name=None, - latex_label=None, unit=None, boundary=None): - """A synonym for the TruncatedGaussian distribution. - - Parameters - ---------- - mu: float - Mean of the Gaussian prior - sigma: - Width/Standard deviation of the Gaussian prior - minimum: float - See superclass - maximum: float - See superclass - name: str - See superclass - latex_label: str - See superclass - unit: str - See superclass - boundary: str - See superclass - """ - TruncatedGaussian.__init__(self, mu=mu, sigma=sigma, minimum=minimum, - maximum=maximum, name=name, latex_label=latex_label, - unit=unit, boundary=boundary) + """A synonym for the TruncatedGaussian distribution.""" class HalfGaussian(TruncatedGaussian): @@ -1566,31 +1516,13 @@ class HalfGaussian(TruncatedGaussian): boundary: str See superclass """ - TruncatedGaussian.__init__(self, 0., sigma, minimum=0., maximum=np.inf, - name=name, latex_label=latex_label, - unit=unit, boundary=boundary) + super(HalfGaussian, self).__init__(mu=0., sigma=sigma, minimum=0., maximum=np.inf, + name=name, latex_label=latex_label, + unit=unit, boundary=boundary) class HalfNormal(HalfGaussian): - def __init__(self, sigma, name=None, latex_label=None, unit=None, boundary=None): - """A synonym for the HalfGaussian distribution. - - Parameters - ---------- - sigma: float - See superclass - name: str - See superclass - latex_label: str - See superclass - unit: str - See superclass - boundary: str - See superclass - """ - HalfGaussian.__init__(self, sigma=sigma, name=name, - latex_label=latex_label, unit=unit, - boundary=boundary) + """A synonym for the HalfGaussian distribution.""" class LogNormal(Prior): @@ -1614,8 +1546,8 @@ class LogNormal(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, minimum=0., latex_label=latex_label, - unit=unit, boundary=boundary) + super(LogNormal, self).__init__(name=name, minimum=0., latex_label=latex_label, + unit=unit, boundary=boundary) if sigma <= 0.: raise ValueError("For the LogGaussian prior the standard deviation must be positive") @@ -1665,28 +1597,7 @@ class LogNormal(Prior): class LogGaussian(LogNormal): - def __init__(self, mu, sigma, name=None, latex_label=None, unit=None, boundary=None): - """Synonym of LogNormal prior - - https://en.wikipedia.org/wiki/Log-normal_distribution - - Parameters - ---------- - mu: float - Mean of the Gaussian prior - sigma: - Width/Standard deviation of the Gaussian prior - name: str - See superclass - latex_label: str - See superclass - unit: str - See superclass - boundary: str - See superclass - """ - LogNormal.__init__(self, mu=mu, sigma=sigma, name=name, - latex_label=latex_label, unit=unit, boundary=boundary) + """Synonym of LogNormal prior.""" class Exponential(Prior): @@ -1706,8 +1617,8 @@ class Exponential(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, minimum=0., latex_label=latex_label, - unit=unit, boundary=boundary) + super(Exponential, self).__init__(name=name, minimum=0., latex_label=latex_label, + unit=unit, boundary=boundary) self.mu = mu def rescale(self, val): @@ -1776,7 +1687,7 @@ class StudentT(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, boundary=boundary) + super(StudentT, self).__init__(name=name, latex_label=latex_label, unit=unit, boundary=boundary) if df <= 0. or scale <= 0.: raise ValueError("For the StudentT prior the number of degrees of freedom and scale must be positive") @@ -1863,8 +1774,8 @@ class Beta(Prior): self._beta = beta self._minimum = minimum self._maximum = maximum - Prior.__init__(self, minimum=minimum, maximum=maximum, name=name, - latex_label=latex_label, unit=unit, boundary=boundary) + super(Beta, self).__init__(minimum=minimum, maximum=maximum, name=name, + latex_label=latex_label, unit=unit, boundary=boundary) self._set_dist() def rescale(self, val): @@ -1991,7 +1902,7 @@ class Logistic(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, boundary=boundary) + super(Logistic, self).__init__(name=name, latex_label=latex_label, unit=unit, boundary=boundary) if scale <= 0.: raise ValueError("For the Logistic prior the scale must be positive") @@ -2062,7 +1973,7 @@ class Cauchy(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, boundary=boundary) + super(Cauchy, self).__init__(name=name, latex_label=latex_label, unit=unit, boundary=boundary) if beta <= 0.: raise ValueError("For the Cauchy prior the scale must be positive") @@ -2112,28 +2023,7 @@ class Cauchy(Prior): class Lorentzian(Cauchy): - def __init__(self, alpha, beta, name=None, latex_label=None, unit=None, boundary=None): - """Synonym for the Cauchy distribution - - https://en.wikipedia.org/wiki/Cauchy_distribution - - Parameters - ---------- - alpha: float - Location parameter - beta: float - Scale parameter - name: str - See superclass - latex_label: str - See superclass - unit: str - See superclass - boundary: str - See superclass - """ - Cauchy.__init__(self, alpha=alpha, beta=beta, name=name, - latex_label=latex_label, unit=unit, boundary=boundary) + """Synonym for the Cauchy distribution""" class Gamma(Prior): @@ -2157,8 +2047,8 @@ class Gamma(Prior): boundary: str See superclass """ - Prior.__init__(self, name=name, minimum=0., latex_label=latex_label, - unit=unit, boundary=boundary) + super(Gamma, self).__init__(name=name, minimum=0., latex_label=latex_label, + unit=unit, boundary=boundary) if k <= 0 or theta <= 0: raise ValueError("For the Gamma prior the shape and scale must be positive") @@ -2232,8 +2122,8 @@ class ChiSquared(Gamma): if nu <= 0 or not isinstance(nu, int): raise ValueError("For the ChiSquared prior the number of degrees of freedom must be a positive integer") - Gamma.__init__(self, name=name, k=nu / 2., theta=2., - latex_label=latex_label, unit=unit, boundary=boundary) + super(ChiSquared, self).__init__(name=name, k=nu / 2., theta=2., + latex_label=latex_label, unit=unit, boundary=boundary) @property def nu(self): @@ -2290,8 +2180,8 @@ class Interped(Prior): self.__all_interpolated = interp1d(x=xx, y=yy, bounds_error=False, fill_value=0) minimum = float(np.nanmax(np.array((min(xx), minimum)))) maximum = float(np.nanmin(np.array((max(xx), maximum)))) - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, - minimum=minimum, maximum=maximum, boundary=boundary) + super(Interped, self).__init__(name=name, latex_label=latex_label, unit=unit, + minimum=minimum, maximum=maximum, boundary=boundary) self._update_instance() def __eq__(self, other): @@ -2411,9 +2301,9 @@ class FromFile(Interped): try: self.id = file_name xx, yy = np.genfromtxt(self.id).T - Interped.__init__(self, xx=xx, yy=yy, minimum=minimum, - maximum=maximum, name=name, latex_label=latex_label, - unit=unit, boundary=boundary) + super(FromFile, self).__init__(xx=xx, yy=yy, minimum=minimum, + maximum=maximum, name=name, latex_label=latex_label, + unit=unit, boundary=boundary) except IOError: logger.warning("Can't load {}.".format(self.id)) logger.warning("Format should be:") @@ -2450,7 +2340,7 @@ class FermiDirac(Prior): .. [1] M. Pitkin, M. Isi, J. Veitch & G. Woan, `arXiv:1705.08978v1 <https:arxiv.org/abs/1705.08978v1>`_, 2017. """ - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, minimum=0.) + super(FermiDirac, self).__init__(name=name, latex_label=latex_label, unit=unit, minimum=0.) self.sigma = sigma @@ -2488,8 +2378,8 @@ class FermiDirac(Prior): """ self.test_valid_for_rescaling(val) - inv = (-np.exp(-1. * self.r) + (1. + np.exp(self.r))**-val + - np.exp(-1. * self.r) * (1. + np.exp(self.r))**-val) + inv = (-np.exp(-1. * self.r) + (1. + np.exp(self.r)) ** -val + + np.exp(-1. * self.r) * (1. + np.exp(self.r)) ** -val) # if val is 1 this will cause inv to be negative (due to numerical # issues), so return np.inf @@ -2720,7 +2610,7 @@ class MultivariateGaussianDist(object): """ return not np.any([val is None for val in - self.requested_parameters.values()]) + self.requested_parameters.values()]) def reset_request(self): """ @@ -2736,7 +2626,7 @@ class MultivariateGaussianDist(object): """ return not np.any([val is None for val in - self.rescale_parameters.values()]) + self.rescale_parameters.values()]) def reset_rescale(self): """ @@ -3062,51 +2952,7 @@ class MultivariateGaussianDist(object): class MultivariateNormalDist(MultivariateGaussianDist): - - def __init__(self, names, nmodes=1, mus=None, sigmas=None, corrcoefs=None, - covs=None, weights=None, bounds=None): - """ - A synonym for the :class:`~bilby.core.prior.MultivariateGaussianDist` - distribution. - - Parameters - ---------- - names: list - A list of the parameter names in the multivariate Gaussian. The - listed parameters must have the same order that they appear in - the lists of means, standard deviations, and the correlation - coefficient, or covariance, matrices. - nmodes: int - The number of modes for the mixture model. This defaults to 1, - which will be checked against the shape of the other inputs. - mus: array_like - A list of lists of means of each mode in a multivariate Gaussian - mixture model. A single list can be given for a single mode. If - this is None then means at zero will be assumed. - sigmas: array_like - A list of lists of the standard deviations of each mode of the - multivariate Gaussian. If supplying a correlation coefficient - matrix rather than a covariance matrix these values must be given. - If this is None unit variances will be assumed. - corrcoefs: array - A list of square matrices containing the correlation coefficients - of the parameters for each mode. If this is None it will be assumed - that the parameters are uncorrelated. - covs: array - A list of square matrices containing the covariance matrix of the - multivariate Gaussian. - weights: list - A list of weights (relative probabilities) for each mode of the - multivariate Gaussian. This will default to equal weights for each - mode. - bounds: list - A list of bounds on each parameter. The defaults are for bounds at - +/- infinity. - """ - MultivariateGaussianDist.__init__(self, names, nmodes=nmodes, - mus=mus, sigmas=sigmas, - corrcoefs=corrcoefs, covs=covs, - weights=weights, bounds=bounds) + """ A synonym for the :class:`~bilby.core.prior.MultivariateGaussianDist` distribution.""" class MultivariateGaussian(Prior): @@ -3140,9 +2986,9 @@ class MultivariateGaussian(Prior): "Gaussian") self.mvg = mvg - Prior.__init__(self, name=name, latex_label=latex_label, unit=unit, - minimum=mvg.bounds[name][0], - maximum=mvg.bounds[name][1]) + super(MultivariateGaussian, self).__init__(name=name, latex_label=latex_label, unit=unit, + minimum=mvg.bounds[name][0], + maximum=mvg.bounds[name][1]) def rescale(self, val, mode=None): """ @@ -3292,24 +3138,5 @@ class MultivariateGaussian(Prior): class MultivariateNormal(MultivariateGaussian): - - def __init__(self, mvg, name=None, latex_label=None, unit=None): - """A synonym for the :class:`bilby.core.prior.MultivariateGaussian` - prior distribution. - - Parameters - ---------- - mvg: MultivariateGaussianDist - A :class:`bilby.core.prior.MultivariateGaussianDist` object - defining the multivariate Gaussian distribution. This object is not - copied, as it needs to be shared across multiple priors, and as - such its contents will be altered by the prior. - name: str - See superclass - latex_label: str - See superclass - unit: str - See superclass - """ - MultivariateGaussian.__init__(self, mvg, name=name, - latex_label=latex_label, unit=unit) + """ A synonym for the :class:`bilby.core.prior.MultivariateGaussian` + prior distribution.""" diff --git a/bilby/core/result.py b/bilby/core/result.py index 5ac7615e78e8a6f1204fd138c5ec0728e86b0a8c..bb79faf1a458598fea0c4e93c616bdd1edf2150a 100644 --- a/bilby/core/result.py +++ b/bilby/core/result.py @@ -1318,7 +1318,7 @@ class ResultList(list): results: list A list of `:class:`bilby.core.result.Result`. """ - list.__init__(self) + super(ResultList, self).__init__() for result in results: self.append(result) diff --git a/bilby/core/sampler/dynamic_dynesty.py b/bilby/core/sampler/dynamic_dynesty.py index 6b12301914b9623d9eb9059db10a3f3a52e0e947..3e5f38bd6e32097637af548f9b07611f25f157db 100644 --- a/bilby/core/sampler/dynamic_dynesty.py +++ b/bilby/core/sampler/dynamic_dynesty.py @@ -91,10 +91,9 @@ class DynamicDynesty(Dynesty): def __init__(self, likelihood, priors, outdir='outdir', label='label', use_ratio=False, plot=False, skip_import_verification=False, check_point=True, n_check_point=None, check_point_delta_t=600, resume=True, **kwargs): - Dynesty.__init__(self, likelihood=likelihood, priors=priors, outdir=outdir, label=label, - use_ratio=use_ratio, plot=plot, - skip_import_verification=skip_import_verification, - **kwargs) + super(DynamicDynesty, self).__init__(self, likelihood=likelihood, priors=priors, outdir=outdir, label=label, + use_ratio=use_ratio, plot=plot, + skip_import_verification=skip_import_verification, **kwargs) self.n_check_point = n_check_point self.check_point = check_point self.resume = resume diff --git a/bilby/core/sampler/dynesty.py b/bilby/core/sampler/dynesty.py index b601dcbf79c0ec65ae588e2abc7aa338d26e17bd..4bcafd423b0f6b9b700cb8f73eb29ab6c232d5b5 100644 --- a/bilby/core/sampler/dynesty.py +++ b/bilby/core/sampler/dynesty.py @@ -93,11 +93,10 @@ class Dynesty(NestedSampler): use_ratio=False, plot=False, skip_import_verification=False, check_point=True, check_point_plot=True, n_check_point=None, check_point_delta_t=600, resume=True, **kwargs): - NestedSampler.__init__(self, likelihood=likelihood, priors=priors, - outdir=outdir, label=label, use_ratio=use_ratio, - plot=plot, - skip_import_verification=skip_import_verification, - **kwargs) + super(Dynesty, self).__init__(likelihood=likelihood, priors=priors, + outdir=outdir, label=label, use_ratio=use_ratio, + plot=plot, skip_import_verification=skip_import_verification, + **kwargs) self.n_check_point = n_check_point self.check_point = check_point self.check_point_plot = check_point_plot diff --git a/bilby/core/sampler/emcee.py b/bilby/core/sampler/emcee.py index a03dda0b0bfaac0b9a5e3db31f2d4bb45e80af80..c2fc9a6f5baf352bdd06a49cd1ab653d82fda458 100644 --- a/bilby/core/sampler/emcee.py +++ b/bilby/core/sampler/emcee.py @@ -61,8 +61,8 @@ class Emcee(MCMCSampler): self.prerelease = True else: self.prerelease = False - MCMCSampler.__init__( - self, likelihood=likelihood, priors=priors, outdir=outdir, + super(Emcee, self).__init__( + likelihood=likelihood, priors=priors, outdir=outdir, label=label, use_ratio=use_ratio, plot=plot, skip_import_verification=skip_import_verification, **kwargs) self.resume = resume diff --git a/bilby/core/sampler/fake_sampler.py b/bilby/core/sampler/fake_sampler.py index 4d4acf818c37ad2402454915a4541efeb991d809..8033958ddbc043ca3ae03cfa9327a9789022736b 100644 --- a/bilby/core/sampler/fake_sampler.py +++ b/bilby/core/sampler/fake_sampler.py @@ -24,10 +24,10 @@ class FakeSampler(Sampler): label='label', use_ratio=False, plot=False, injection_parameters=None, meta_data=None, result_class=None, **kwargs): - Sampler.__init__(self, likelihood, priors, outdir=outdir, label=label, - use_ratio=False, plot=False, skip_import_verification=True, - injection_parameters=None, meta_data=None, result_class=None, - **kwargs) + super(FakeSampler, self).__init__(likelihood=likelihood, priors=priors, outdir=outdir, label=label, + use_ratio=False, plot=False, skip_import_verification=True, + injection_parameters=None, meta_data=None, result_class=None, + **kwargs) self._read_parameter_list_from_file(sample_file) self.result.outdir = outdir self.result.label = label diff --git a/bilby/core/sampler/ptemcee.py b/bilby/core/sampler/ptemcee.py index 9b2472aaa7ce38f02e2702d9b776f79f2405afd4..78b88c3fe5d48b7950ece9c4f255f71aa15c1f19 100644 --- a/bilby/core/sampler/ptemcee.py +++ b/bilby/core/sampler/ptemcee.py @@ -40,8 +40,8 @@ class Ptemcee(Emcee): use_ratio=False, plot=False, skip_import_verification=False, nburn=None, burn_in_fraction=0.25, burn_in_act=3, resume=True, **kwargs): - Emcee.__init__( - self, likelihood=likelihood, priors=priors, outdir=outdir, + super(Ptemcee, self).__init__( + likelihood=likelihood, priors=priors, outdir=outdir, label=label, use_ratio=use_ratio, plot=plot, skip_import_verification=skip_import_verification, nburn=nburn, burn_in_fraction=burn_in_fraction, diff --git a/bilby/core/sampler/ptmcmc.py b/bilby/core/sampler/ptmcmc.py index 7a0276bedece22f3fc0a7e661d41d5dc2097350c..3f90711057b4bfa392c6d7d1717929289dda2757 100644 --- a/bilby/core/sampler/ptmcmc.py +++ b/bilby/core/sampler/ptmcmc.py @@ -40,8 +40,8 @@ class PTMCMCSampler(MCMCSampler): """ - default_kwargs = {'p0': None, 'Niter': 2 * 10**4 + 1, 'neff': 10**4, - 'burn': 5 * 10**3, 'verbose': True, + default_kwargs = {'p0': None, 'Niter': 2 * 10 ** 4 + 1, 'neff': 10 ** 4, + 'burn': 5 * 10 ** 3, 'verbose': True, 'ladder': None, 'Tmin': 1, 'Tmax': None, 'Tskip': 100, 'isave': 1000, 'thin': 1, 'covUpdate': 1000, 'SCAMweight': 1, 'AMweight': 1, 'DEweight': 1, @@ -56,11 +56,11 @@ class PTMCMCSampler(MCMCSampler): use_ratio=False, plot=False, skip_import_verification=False, pos0=None, burn_in_fraction=0.25, **kwargs): - MCMCSampler.__init__(self, likelihood=likelihood, priors=priors, - outdir=outdir, label=label, use_ratio=use_ratio, - plot=plot, - skip_import_verification=skip_import_verification, - **kwargs) + super(PTMCMCSampler, self).__init__(likelihood=likelihood, priors=priors, + outdir=outdir, label=label, use_ratio=use_ratio, + plot=plot, + skip_import_verification=skip_import_verification, + **kwargs) self.p0 = self.get_random_draw_from_prior() self.likelihood = likelihood diff --git a/bilby/core/sampler/pymc3.py b/bilby/core/sampler/pymc3.py index dbbe872133efcdc65a30f7e86386d1033e9c8ce9..95a47bba07f41e40789b41642ceee743fab4d8c0 100644 --- a/bilby/core/sampler/pymc3.py +++ b/bilby/core/sampler/pymc3.py @@ -6,7 +6,7 @@ import numpy as np from ..utils import derivatives, infer_args_from_method from ..prior import DeltaFunction, Sine, Cosine, PowerLaw, MultivariateGaussian -from .base_sampler import Sampler, MCMCSampler +from .base_sampler import MCMCSampler from ..likelihood import GaussianLikelihood, PoissonLikelihood, ExponentialLikelihood, \ StudentTLikelihood from ...gw.likelihood import BasicGravitationalWaveTransient, GravitationalWaveTransient @@ -63,9 +63,9 @@ class Pymc3(MCMCSampler): def __init__(self, likelihood, priors, outdir='outdir', label='label', use_ratio=False, plot=False, skip_import_verification=False, **kwargs): - Sampler.__init__(self, likelihood, priors, outdir=outdir, label=label, - use_ratio=use_ratio, plot=plot, - skip_import_verification=skip_import_verification, **kwargs) + super(Pymc3, self).__init__(likelihood=likelihood, priors=priors, outdir=outdir, label=label, + use_ratio=use_ratio, plot=plot, + skip_import_verification=skip_import_verification, **kwargs) self.draws = self._kwargs['draws'] self.chains = self._kwargs['chains'] diff --git a/bilby/core/sampler/pymultinest.py b/bilby/core/sampler/pymultinest.py index 988c5d9a75b22325d8045f9ab970e0707e32294c..e33c6cf0d29fac9d143ad06c6670eac671d08716 100644 --- a/bilby/core/sampler/pymultinest.py +++ b/bilby/core/sampler/pymultinest.py @@ -48,10 +48,10 @@ class Pymultinest(NestedSampler): def __init__(self, likelihood, priors, outdir='outdir', label='label', use_ratio=False, plot=False, skip_import_verification=False, **kwargs): - NestedSampler.__init__(self, likelihood=likelihood, priors=priors, outdir=outdir, label=label, - use_ratio=use_ratio, plot=plot, - skip_import_verification=skip_import_verification, - **kwargs) + super(Pymultinest, self).__init__(likelihood=likelihood, priors=priors, outdir=outdir, label=label, + use_ratio=use_ratio, plot=plot, + skip_import_verification=skip_import_verification, + **kwargs) self._apply_multinest_boundaries() def _translate_kwargs(self, kwargs): diff --git a/bilby/core/utils.py b/bilby/core/utils.py index 6f53601f79d80a942c6317720c838583d2c9c979..ea66c5614d4eb3aaad0950dd6052096209470a4c 100644 --- a/bilby/core/utils.py +++ b/bilby/core/utils.py @@ -879,7 +879,7 @@ class UnsortedInterp2d(interp2d): """ unsorted_idxs = np.argsort(np.argsort(x)) - return interp2d.__call__(self, x, y, dx=dx, dy=dy, assume_sorted=False)[unsorted_idxs] + return super(UnsortedInterp2d, self).__call__(x, y, dx=dx, dy=dy, assume_sorted=False)[unsorted_idxs] # Instantiate the default argument parser at runtime diff --git a/bilby/gw/detector/calibration.py b/bilby/gw/detector/calibration.py index cf4fc7d9392e35f369edb31d2379b5430b65a058..74b25127f0bad233301df272537e0da1f4dd85f3 100644 --- a/bilby/gw/detector/calibration.py +++ b/bilby/gw/detector/calibration.py @@ -77,7 +77,7 @@ class CubicSpline(Recalibrate): n_points: int number of spline points """ - Recalibrate.__init__(self, prefix=prefix) + super(CubicSpline, self).__init__(prefix=prefix) if n_points < 4: raise ValueError('Cubic spline calibration requires at least 4 spline nodes.') self.n_points = n_points diff --git a/bilby/gw/detector/networks.py b/bilby/gw/detector/networks.py index f1c3a9f43113cfeceedca381d7f0a813e94dba03..12c268d2a6d181400900c37f4a65bce0a8201ce4 100644 --- a/bilby/gw/detector/networks.py +++ b/bilby/gw/detector/networks.py @@ -27,7 +27,7 @@ class InterferometerList(list): The list of interferometers """ - list.__init__(self) + super(InterferometerList, self).__init__() if type(interferometers) == str: raise TypeError("Input must not be a string") for ifo in interferometers: @@ -246,7 +246,7 @@ class TriangularInterferometer(InterferometerList): def __init__(self, name, power_spectral_density, minimum_frequency, maximum_frequency, length, latitude, longitude, elevation, xarm_azimuth, yarm_azimuth, xarm_tilt=0., yarm_tilt=0.): - InterferometerList.__init__(self, []) + super(TriangularInterferometer, self).__init__([]) self.name = name # for attr in ['power_spectral_density', 'minimum_frequency', 'maximum_frequency']: if isinstance(power_spectral_density, PowerSpectralDensity): diff --git a/bilby/gw/likelihood.py b/bilby/gw/likelihood.py index 72c9bc9c1542413d73d35921ac69033037c31cfe..3741f536cb4443533385c03be726e9bc875a31ba 100644 --- a/bilby/gw/likelihood.py +++ b/bilby/gw/likelihood.py @@ -101,7 +101,7 @@ class GravitationalWaveTransient(likelihood.Likelihood): jitter_time=True): self.waveform_generator = waveform_generator - likelihood.Likelihood.__init__(self, dict()) + super(GravitationalWaveTransient, self).__init__(dict()) self.interferometers = InterferometerList(interferometers) self.time_marginalization = time_marginalization self.distance_marginalization = distance_marginalization @@ -730,7 +730,7 @@ class BasicGravitationalWaveTransient(likelihood.Likelihood): given some set of parameters """ - likelihood.Likelihood.__init__(self, dict()) + super(BasicGravitationalWaveTransient, self).__init__(dict()) self.interferometers = interferometers self.waveform_generator = waveform_generator @@ -838,8 +838,8 @@ class ROQGravitationalWaveTransient(GravitationalWaveTransient): roq_params=None, distance_marginalization=False, phase_marginalization=False, distance_marginalization_lookup_table=None): - GravitationalWaveTransient.__init__( - self, interferometers=interferometers, + super(ROQGravitationalWaveTransient, self).__init__( + interferometers=interferometers, waveform_generator=waveform_generator, priors=priors, distance_marginalization=distance_marginalization, phase_marginalization=phase_marginalization, diff --git a/bilby/gw/prior.py b/bilby/gw/prior.py index 890659561bda732a96e1b01d5798eea159612ead..fba24ef356ec3c5a4fe1908fd2138b2137c4456c 100644 --- a/bilby/gw/prior.py +++ b/bilby/gw/prior.py @@ -58,8 +58,8 @@ class Cosmological(Interped): xx, yy = self._get_luminosity_distance_arrays() else: raise ValueError('Name {} not recognized.'.format(name)) - Interped.__init__(self, xx=xx, yy=yy, minimum=minimum, maximum=maximum, - boundary=boundary, **label_args) + super(Cosmological, self).__init__(xx=xx, yy=yy, minimum=minimum, maximum=maximum, + boundary=boundary, **label_args) @property def minimum(self): @@ -232,9 +232,9 @@ class AlignedSpin(Interped): aas = np.linspace(a_prior.minimum, a_prior.maximum, 1000) yy = [np.trapz(np.nan_to_num(a_prior.prob(aas) / aas * z_prior.prob(x / aas)), aas) for x in xx] - Interped.__init__(self, xx=xx, yy=yy, name=name, - latex_label=latex_label, unit=unit, - boundary=boundary) + super(AlignedSpin, self).__init__(xx=xx, yy=yy, name=name, + latex_label=latex_label, unit=unit, + boundary=boundary) class BBHPriorDict(PriorDict): @@ -264,8 +264,8 @@ class BBHPriorDict(PriorDict): elif filename is not None: if not os.path.isfile(filename): filename = os.path.join(os.path.dirname(__file__), 'prior_files', filename) - PriorDict.__init__(self, dictionary=dictionary, filename=filename, - conversion_function=conversion_function) + super(BBHPriorDict, self).__init__(dictionary=dictionary, filename=filename, + conversion_function=conversion_function) def default_conversion_function(self, sample): """ @@ -370,8 +370,8 @@ class BNSPriorDict(PriorDict): elif filename is not None: if not os.path.isfile(filename): filename = os.path.join(os.path.dirname(__file__), 'prior_files', filename) - PriorDict.__init__(self, dictionary=dictionary, filename=filename, - conversion_function=conversion_function) + super(BNSPriorDict, self).__init__(dictionary=dictionary, filename=filename, + conversion_function=conversion_function) def default_conversion_function(self, sample): """ @@ -477,7 +477,7 @@ class CalibrationPriorDict(PriorDict): if dictionary is None and filename is not None: filename = os.path.join(os.path.dirname(__file__), 'prior_files', filename) - PriorDict.__init__(self, dictionary=dictionary, filename=filename) + super(CalibrationPriorDict, self).__init__(dictionary=dictionary, filename=filename) self.source = None def to_file(self, outdir, label): diff --git a/bilby/hyper/likelihood.py b/bilby/hyper/likelihood.py index 6b457ea9c2180d1c3026098859ddab9d33340ecd..bc037be3cb4789c56a3fea8b79fe20d126b82539 100644 --- a/bilby/hyper/likelihood.py +++ b/bilby/hyper/likelihood.py @@ -52,7 +52,7 @@ class HyperparameterLikelihood(Likelihood): self.hyper_prior = hyper_prior self.sampling_prior = sampling_prior self.max_samples = max_samples - Likelihood.__init__(self, hyper_prior.parameters) + super(HyperparameterLikelihood, self).__init__(hyper_prior.parameters) self.data = self.resample_posteriors() self.n_posteriors = len(self.posteriors)