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 (4)
......@@ -75,6 +75,10 @@ basic-3.10:
<<: *test-python
image: python:3.10
basic-3.11:
<<: *test-python
image: python:3.11
.test-samplers-import: &test-samplers-import
stage: initial
script:
......@@ -90,6 +94,10 @@ import-samplers-3.10:
<<: *test-samplers-import
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python310
import-samplers-3.11:
<<: *test-samplers-import
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python311
.precommits: &precommits
stage: initial
script:
......@@ -156,6 +164,11 @@ python-3.10:
- htmlcov/
expire_in: 30 days
python-3.11:
<<: *unit-test
needs: ["basic-3.11"]
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python311
.test-sampler: &test-sampler
stage: test
script:
......@@ -173,6 +186,11 @@ python-3.10-samplers:
needs: ["basic-3.10", "precommits-py3.10"]
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python310
python-3.11-samplers:
<<: *test-sampler
needs: ["basic-3.11"]
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python311
integration-tests-python-3.10:
stage: test
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python310
......@@ -204,6 +222,11 @@ plotting-python-3.10:
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python310
needs: ["basic-3.10", "precommits-py3.10"]
plotting-python-3.11:
<<: *plotting
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python311
needs: ["basic-3.11"]
# ------------------- Docs stage -------------------------------------------
docs:
......@@ -271,6 +294,11 @@ build-python310-container:
variables:
PYVERSION: "python310"
build-python311-container:
<<: *build-container
variables:
PYVERSION: "python311"
pypi-release:
stage: deploy
image: containers.ligo.org/lscsoft/bilby/v2-bilby-python310
......
# All notable changes will be documented in this file
## [2.2.3] 2024-02-24
Version 2.2.3 release of Bilby
This is a bugfix release
There are also a number of testing/infrastructure updates.
### Changes
- Fix a bug when the specified maximum frequency is too low for the multibanding likelihood (!1279)
- Allow the `DirichletElement` prior to be pickled (!1312)
- Add the ability to change the pool size when resuming a `dynesty` job (!1315)
- Fix how the random seed is passed to `dynesty` (!1319)
## [2.2.2] 2023-11-29
Version 2.2.2 release of Bilby
......
# This dockerfile is written automatically and should not be modified by hand.
FROM containers.ligo.org/docker/base:conda
LABEL name="bilby CI testing" \
maintainer="Gregory Ashton <gregory.ashton@ligo.org>, Colm Talbot <colm.talbot@ligo.org>"
COPY env-template.yml env.yml
RUN echo " - python==3.11" >> env.yml
ENV conda_env python311
RUN mamba env create -f env.yml -n ${conda_env}
RUN echo "source activate ${conda_env}" > ~/.bashrc
ENV PATH /opt/conda/envs/${conda_env}/bin:$PATH
RUN /bin/bash -c "source activate ${conda_env}"
RUN mamba info
RUN python --version
# Add the ROQ data to the image
RUN mkdir roq_basis \
&& cd roq_basis \
&& wget https://git.ligo.org/lscsoft/ROQ_data/raw/master/IMRPhenomPv2/4s/B_linear.npy \
&& wget https://git.ligo.org/lscsoft/ROQ_data/raw/master/IMRPhenomPv2/4s/B_quadratic.npy \
&& wget https://git.ligo.org/lscsoft/ROQ_data/raw/master/IMRPhenomPv2/4s/fnodes_linear.npy \
&& wget https://git.ligo.org/lscsoft/ROQ_data/raw/master/IMRPhenomPv2/4s/fnodes_quadratic.npy \
&& wget https://git.ligo.org/lscsoft/ROQ_data/raw/master/IMRPhenomPv2/4s/params.dat \
&& wget https://git.ligo.org/soichiro.morisaki/roq_basis/raw/main/IMRPhenomD/16s_nospins/basis_addcal.hdf5 \
&& wget https://git.ligo.org/soichiro.morisaki/roq_basis/raw/main/IMRPhenomD/16s_nospins/basis_multiband_addcal.hdf5
......@@ -3,7 +3,7 @@ from datetime import date
with open("dockerfile-template", "r") as ff:
template = ff.read()
python_versions = [(3, 9), (3, 10)]
python_versions = [(3, 9), (3, 10), (3, 11)]
today = date.today().strftime("%Y%m%d")
for python_major_version, python_minor_version in python_versions:
......
......@@ -10,7 +10,7 @@ Installation
$ conda install -c conda-forge bilby
Supported python versions: 3.8-3.10.
Supported python versions: 3.9-3.11.
.. tab:: Pip
......@@ -18,7 +18,7 @@ Installation
$ pip install bilby
Supported python versions: 3.8-3.10.
Supported python versions: 3.9-3.11.
This will install all requirements for running :code:`bilby` for general
......@@ -47,7 +47,7 @@ wave inference, please additionally run the following commands.
Install bilby from source
-------------------------
:code:`bilby` is developed and tested with Python 3.8-3.10. In the
:code:`bilby` is developed and tested with Python 3.9-3.11. In the
following, we assume you have a working python installation, `python pip
<https://packaging.python.org/tutorials/installing-packages/#use-pip-for-installing)>`_,
and `git <https://git-scm.com/>`_. See :ref:`installing-python` for our
......
......@@ -66,7 +66,7 @@ setup(
"bilby.gw.detector": ["noise_curves/*.txt", "detectors/*"],
"bilby.gw.eos": ["eos_tables/*.dat"],
},
python_requires=">=3.8",
python_requires=">=3.9",
install_requires=get_requirements(),
extras_require={
"gw": get_requirements("gw"),
......@@ -87,6 +87,7 @@ setup(
classifiers=[
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
......
......@@ -751,5 +751,71 @@ class TestPPPlots(unittest.TestCase):
)
class SimpleGaussianLikelihood(bilby.core.likelihood.Likelihood):
def __init__(self, mean=0, sigma=1):
"""
A very simple Gaussian likelihood for testing
"""
from scipy.stats import norm
super().__init__(parameters=dict())
self.mean = mean
self.sigma = sigma
self.dist = norm(loc=mean, scale=sigma)
def log_likelihood(self):
return self.dist.logpdf(self.parameters["mu"])
class TestReweight(unittest.TestCase):
def setUp(self):
self.priors = bilby.core.prior.PriorDict(dict(
mu=bilby.core.prior.TruncatedNormal(0, 1, minimum=-5, maximum=5),
))
self.result = bilby.core.result.Result(
search_parameter_keys=list(self.priors.keys()),
priors=self.priors,
posterior=pd.DataFrame(self.priors.sample(1000)),
log_evidence=-np.log(10),
)
def _run_reweighting(self, sigma):
likelihood_1 = SimpleGaussianLikelihood()
likelihood_2 = SimpleGaussianLikelihood(sigma=sigma)
original_ln_likelihoods = list()
for ii in range(len(self.result.posterior)):
likelihood_1.parameters = self.result.posterior.iloc[ii]
original_ln_likelihoods.append(likelihood_1.log_likelihood())
self.result.posterior["log_prior"] = self.priors.ln_prob(self.result.posterior)
self.result.posterior["log_likelihood"] = original_ln_likelihoods
self.original_ln_likelihoods = original_ln_likelihoods
return bilby.core.result.reweight(
self.result, likelihood_1, likelihood_2, verbose_output=True
)
def test_reweight_same_likelihood_weights_1(self):
"""
When the likelihoods are the same, the weights should be 1.
"""
_, weights, _, _, _, _ = self._run_reweighting(sigma=1)
self.assertLess(min(abs(weights - 1)), 1e-10)
def test_reweight_different_likelihood_weights_correct(self):
"""
Test the known case where the target likelihood is a Gaussian with
sigma=0.5. The weights can be calculated analytically and the evidence
should be close to the original evidence within statistical error.
"""
from scipy.stats import norm
new, weights, _, _, _, _ = self._run_reweighting(sigma=0.5)
expected_weights = (
norm(0, 0.5).pdf(self.result.posterior["mu"])
/ norm(0, 1).pdf(self.result.posterior["mu"])
)
self.assertLess(min(abs(weights - expected_weights)), 1e-10)
self.assertLess(abs(new.log_evidence - self.result.log_evidence), 0.05)
self.assertNotEqual(new.log_evidence, self.result.log_evidence)
if __name__ == "__main__":
unittest.main()
......@@ -78,13 +78,13 @@ class TestRelativeBinningLikelihood(unittest.TestCase):
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole,
waveform_arguments=dict(
reference_frequency=fmin, minimum_frequency=fmin, approximant=approximant)
reference_frequency=fmin, minimum_frequency=fmin, waveform_approximant=approximant)
)
bin_wfg = bilby.gw.waveform_generator.WaveformGenerator(
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole_relative_binning,
waveform_arguments=dict(
reference_frequency=fmin, approximant=approximant, minimum_frequency=fmin)
reference_frequency=fmin, waveform_approximant=approximant, minimum_frequency=fmin)
)
ifos.inject_signal(
parameters=self.test_parameters,
......
......@@ -341,7 +341,7 @@ class TestROQLikelihood(unittest.TestCase):
waveform_arguments=dict(
reference_frequency=20.0,
minimum_frequency=20.0,
approximant="IMRPhenomPv2",
waveform_approximant="IMRPhenomPv2",
),
)
......@@ -360,7 +360,7 @@ class TestROQLikelihood(unittest.TestCase):
frequency_nodes_quadratic=fnodes_quadratic,
reference_frequency=20.0,
minimum_frequency=20.0,
approximant="IMRPhenomPv2",
waveform_approximant="IMRPhenomPv2",
),
)
......@@ -597,7 +597,7 @@ class TestRescaledROQLikelihood(unittest.TestCase):
frequency_nodes_quadratic=fnodes_quadratic,
reference_frequency=20.0,
minimum_frequency=20.0,
approximant="IMRPhenomPv2",
waveform_approximant="IMRPhenomPv2",
),
)
......@@ -1240,7 +1240,7 @@ class TestMBLikelihood(unittest.TestCase):
("IMRPhenomHM", False, 4, True, 1e-3)
])
def test_matches_original_likelihood(
self, approximant, linear_interpolation, highest_mode, add_cal_errors, tolerance
self, waveform_approximant, linear_interpolation, highest_mode, add_cal_errors, tolerance
):
"""
Check if multi-band likelihood values match original likelihood values
......@@ -1249,7 +1249,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole,
waveform_arguments=dict(
reference_frequency=self.fmin, waveform_approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
self.ifos.inject_signal(parameters=self.test_parameters, waveform_generator=wfg)
......@@ -1258,7 +1258,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, waveform_approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
likelihood = bilby.gw.likelihood.GravitationalWaveTransient(
......@@ -1284,12 +1284,12 @@ class TestMBLikelihood(unittest.TestCase):
"""
Check if larger accuracy factor increases the accuracy.
"""
approximant = "IMRPhenomD"
waveform_approximant = "IMRPhenomD"
wfg = bilby.gw.WaveformGenerator(
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole,
waveform_arguments=dict(
reference_frequency=self.fmin, waveform_approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
self.ifos.inject_signal(parameters=self.test_parameters, waveform_generator=wfg)
......@@ -1298,7 +1298,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, waveform_approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
likelihood = bilby.gw.likelihood.GravitationalWaveTransient(
......@@ -1330,7 +1330,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant="IMRPhenomD"
reference_frequency=self.fmin, waveform_approximant="IMRPhenomD"
)
)
likelihood1 = bilby.gw.likelihood.MBGravitationalWaveTransient(
......@@ -1352,7 +1352,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant="IMRPhenomD"
reference_frequency=self.fmin, waveform_approximant="IMRPhenomD"
)
)
with self.assertRaises(TypeError):
......@@ -1368,7 +1368,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant="IMRPhenomD"
reference_frequency=self.fmin, waveform_approximant="IMRPhenomD"
)
)
for key in ["chirp_mass", "mass_1", "mass_2"]:
......@@ -1385,12 +1385,12 @@ class TestMBLikelihood(unittest.TestCase):
Check if multiband weights can be saved as a file, and a likelihood object constructed from the weights file
produces the same likelihood value.
"""
approximant = "IMRPhenomD"
waveform_approximant = "IMRPhenomD"
wfg = bilby.gw.WaveformGenerator(
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
self.ifos.inject_signal(
......@@ -1401,7 +1401,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
likelihood_mb = bilby.gw.likelihood.MBGravitationalWaveTransient(
......@@ -1424,7 +1424,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
likelihood_mb_from_weights = bilby.gw.likelihood.MBGravitationalWaveTransient(
......@@ -1441,12 +1441,12 @@ class TestMBLikelihood(unittest.TestCase):
"""
Check if a likelihood object constructed from dictionary-like weights produce the same likelihood value
"""
approximant = "IMRPhenomD"
waveform_approximant = "IMRPhenomD"
wfg = bilby.gw.WaveformGenerator(
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
self.ifos.inject_signal(
......@@ -1457,7 +1457,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
likelihood_mb = bilby.gw.likelihood.MBGravitationalWaveTransient(
......@@ -1474,7 +1474,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
weights = likelihood_mb.weights
......@@ -1492,7 +1492,7 @@ class TestMBLikelihood(unittest.TestCase):
("IMRPhenomHM", False, 4, False, 5e-3),
])
def test_matches_original_likelihood_low_maximum_frequency(
self, approximant, linear_interpolation, highest_mode, add_cal_errors, tolerance
self, waveform_approximant, linear_interpolation, highest_mode, add_cal_errors, tolerance
):
"""
Test for maximum frequency < sampling frequency / 2
......@@ -1504,7 +1504,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.lal_binary_black_hole,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
self.ifos.inject_signal(parameters=self.test_parameters, waveform_generator=wfg)
......@@ -1513,7 +1513,7 @@ class TestMBLikelihood(unittest.TestCase):
duration=self.duration, sampling_frequency=self.sampling_frequency,
frequency_domain_source_model=bilby.gw.source.binary_black_hole_frequency_sequence,
waveform_arguments=dict(
reference_frequency=self.fmin, approximant=approximant
reference_frequency=self.fmin, waveform_approximant=waveform_approximant
)
)
likelihood = bilby.gw.likelihood.GravitationalWaveTransient(
......
......@@ -306,7 +306,7 @@ class TestROQBBH(unittest.TestCase):
frequency_nodes_quadratic=fnodes_quadratic,
reference_frequency=50.0,
minimum_frequency=20.0,
approximant="IMRPhenomPv2",
waveform_approximant="IMRPhenomPv2",
)
self.frequency_array = bilby.core.utils.create_frequency_series(2048, 4)
......