- Use of vector parameters now documented (PR #191; inspired by @lukashergt, thanks!)
- Added DESI 1yr BAO data and SN from Pantheon Plus, DESY5 and Union3 (thanks DESI team, @adematti, @rubind, @WillMatt4 and @rodri981)
- Updated UGE sample job submission template (for cobaya-job-run and cobaya-grid-run)
- Clarify log feedback when using oversample_thin
- Fixed #345, #346, #347, #348
- Support for running grids of models, including grid getdist, PDF tables, importance sampling, minimization (almost all features of CosmoMC grid now available in Cobaya). See the new doc pages.
- Support for iminuit minimizer and getting best-fits for all mpi runs (#332, thanks @ggalloni)
- Support for minimization with an importance-sampled input yaml config
- Fixed a packaging bug after migration to
pyproject.toml
- Min version update to 3.2.1 (solves #305; thanks to the CLASS developers)
- Python 3.12 support (removed all dependence on distutils)
- Improved
.products()
method for samplers (MCMC and PolyChord) and post-processing: samples can now retrieved simultaneously for all MPI processes, and converted to GetDist. Also added.samples()
methods to retrieve just the samples.
- Created a general
load_samples
function to load Cobaya results natively or as GetDist MCSamples. - Collections are now aware of whether they are part of a parallel batch, and warn if trying to reweight/detemper individually (fixes #321).
- Fixed a bug with overzealous checks when loading samples (#306, thanks @mishakb for reporting).
- Fixed a bug with mpi runs partly stalling when run with many chains (#308, thanks @vivianmiranda @lukashergt for reporting and testing).
- When
oversample_thin
is used, avg thinned weights now reported instead of acceptance rate (#310, thanks @vivianmiranda for reporting)
- Added 1-d grid LSS likelihood and BAO-only ELG and QSO (PR #266; thanks @msyriac)
- Updated manual installation instructions and fixed some dependencies.
- Made more derived parameters available, and documented how to access even more.
- Fixed #292: wrong normalization for the Cl cross-spectra (thanks @carlosggarcia)
- Class instance methods can now be used as external likelihoods.
- Fix _prior_tries_warning bug
- Fix over-stringent temperature test reading in chains
products
method revamped; can produce GetDist chains directly.
- updated CAMB min version to 1.5, fixing bug with Cobaya sampling
- cobaya-install cosmo now installs set of Planck NPIPE (PR4) python likelihoods
- added planck_2018_lowl.EE_sroll2 low-E Planck likelihood
- added startup warning if initial points are very over-dispersed compared to the proposal covariance
- Requesting CAMBdata from camb now a copy for exact initial power spectrum/non-linear model
- CAMB now supports using sigma8 as an input parameter (thanks @tilmantroester)
- Updates for Pandas 2 compatibility
- Fixed bug in MCMC oversampling and simplified proposal code (#288) (thanks @JiangJQ2000)
- Minimum Python version updated to 3.8
Prior.bounds()
can now return bounds at particular confidence levels when passedconfidence<1
.SampleCollection
slicing now allows for advanced pandas slicing, e.g.samples[samples["param"] > value]
.- Fixed bug when setting reference pdf in MPI runs (thanks @schoeneberg!)
- Components in yaml files referring to external Python modules can now give
package_install
settings to specify whether installed from pip, github or URL when cobaya-install is run. - Fix for
post
when likelihoods return different number of derived parameters (#285) (thanks @zhaoruiyang98)
- Added tempered sampling.
products
method revamped; can produce GetDist chains directly.
- Replaced default planck_2018_lowl.EE and planck_2018_low.TT with native versions, and using GitHub-hosted clik version.
- Updated planck likelihoods to all load calibration parameter from same yaml
- Removed clik version of planck 2018 CamSpec, defaults to native (avoids inconsistent calibration parameter naming)
- GUI inclues latest NPIPE fully Python likelihood configuration
- Deprecated
debug_file
in input, in favour ofdebug: [filename]
. Prior
now has methodset_reference
, to update the reference pdf's if needed (MPI-aware).- Warning for stuck chains not more tolerant of many fast prior rejections
- Environment variables supported in input .yaml files, and {YAML_ROOT} placeholder for paths.
- Improved error messages for .yaml boolean options and install logs
- Fixes for max_tries .inf and old version checks
- fix for 'KeyError: _manual' bug caused by unmet requirements. #275 (thanks @HTJense)
- Added CAMBspec NPIPE Planck 2020 likelihood (#271) ) (thanks @earosenberg)
- Added native version of
planck_2018_lowl.EE
. - Added native version of
planck_2018_low.TT
. (thanks @eirikgje) - Added links to external likelihoods Planck PR4 Lensing, pyWMAP.
- GUI now support PySide6
- Fixed bug in BAO likelihood (#250, thanks @Pablo-Lemos)
- Added files for the BAO DR12 and DR16 LRG likelihoods (PR #235; thanks @markm42)
- Test updates for CAMB 1.4 with updated constants, BBN model and neutrino nnu=3.044
- Fixed PyPI installation error (thanks Paul Shah!).
- Cleaner logging and better advice and error messages for missing component requirements.
- Documented uses of
Model
class in general contexts (previously only cosmo) Model
methods to compute log-probabilities and derived parameters now have anas_dict
keyword (defaultFalse
), for more informative return value.
Pk_interpolator
: added extrapolation up toextrap_kmin
and improved robustness
- Removed problematic
zrei: zre
alias (fixes #199, thanks @pcampeti) - Added
Omega_b|cdm|nu_massive(z)
andangular_diameter_distance_2
- Returned values for
get_sigma_R
changed fromR, z, sigma(z, R)
toz, R, sigma(z, R)
. - Support setting individual Accuracy parameters, e.g. Accuracy.AccurateBB
- Calculate accurate BB when tensors are requested
- Fix for using derived parameters with post-processing
- Added
ignore_obsolete
option to be able to run with user-modified older CAMB versions.
- Updated to v3.2.0
- Added
Omega_b|cdm|nu_massive(z)
,angular_diameter_distance_2
,sigmaR(z)
,sigma8(z)
,fsgima8(z)
and Weyl potential power spectrum. - Added
ignore_obsolete
option to be able to run with user-modified older CLASS versions. - Added direct access to some CLASS computation products, via new requisites
CLASS_[background|thermodynamics|primordial|perturbations|sources]
. - Changed behaviour for
non_linear
: if not present inextra_args
, uses the current default non-linear code (HMcode) instead of no non-linear code. To impose no non-linear corrections, passnon_linear: False
.
- Added Boss DR16 likelihoods (#185, by @Pablo-Lemos)
- Bugfix in decorrelation function #196 (by Caterina Umilta, @umilta)
- Updated to 2021 data release (2018 data) and bugfix, #204 and #209 (by Dominic Beck, @doicbek)
- Fixed segfault in clik when receiving NaN in the Cl's. Partially implements #231 (thanks @lukashergt and @williamjameshandley)
- Changes for compatibility with Pandas 1.3 (which broke convergence testing amongst other things).
- Updated docs with list of external likelihood codes, and to help avoid issues with PySide install
- Minor fixes in BAO/SN likelihoods
- updated and added documentation for cobaya-run-job; added cobaya-running-jobs and cobaya-delete-jobs
- Allow for more general dependencies between input parameters, derived parameters and likelihood/theory/prior inputs
- run, post and get_model can now all take inputs from a dictionary, yaml text or yaml filename
- Support resuming of a completed run with changed convergence parameters
- run has optional arguments to set debug, force, output, etc settings
- More input and output typing for easier static error detection; added cobaya.typing for static checking of input dictionaries using TypedDict when available
- Refactoring of cobaya.conventions to remove most string literals and rename non-private constants starting with _
- Uses GetDist 1.2.2+ which fixes sign loading the logposterior value from Cobaya collection
- Optimized calculation of Gaussian 1D priors
- run settings saved to ".updated.dill_pickle" pickle file in cases where callable/class content cannot be preserved in yaml (install "dill")
- File locks to avoid overwriting results accidentally from multiple non-MPI processes
- Commonly-used classes can now be loaded simply using "from cobaya import Likelihood, InputDict, Theory, ..." etc., or call e.g. cobaya.run(..)
- run and post return NamedTuples (same content as before)
- Fixed handling of "type" in external likelihood functions
- bib_script and doc_script can now be called programmatically
- MPI support refactored using decorators
- requirements can now also be specified as list of name, dictionary tuples (in case name needs to be repeated)
- renamed Collection -> SampleCollection (to avoid confusion with general typing.Collection)
- allow loading of CamelCase classes from module with lowercase name. Class "file_base_name" attribute to optionally specify the root name for yaml and bib files. Some supplied classes renamed.
- allow input likelihoods and theories to be instances (as well as classes); [provisional]
- Fixed bug with "drag: True" that gave wrong results
- MPI reworked, now avoids ending and error deadlocks, and synchronizing exceptions (raising OtherProcessError on non-excepting processes)
- Random number generation now using numpy 1.17 generators and MPI seeds generated using SeedSequence (note MPI runs generally not reproducible with fixed seed due to thead timing/asynchronous mpi exchanges)
- Overhead reduced by at least 40%, thanks to caching in Collection
- Optimization of derived parameter output (for dragging, not computed at each dragging step)
- Some refactoring/simplification to pass LogPosterior instances more
- Reported acceptance rate is now only over last half chains (for MPI), or skipping first Rminus1_single_split fraction
- When no covamt or 'prosposal' setting for a parameter, the fallback proposal width is now scaled (narrower) from the ref or prior variance
- post function reworked to support MPI, thinning, and more general parameter-dependence operations
- On one process operating on list of samples outputs consistent list of samples rather than concatenating
- Output is produced incrementally, so terminated jobs still produce valid output
- No unnecessary theory recalculations
- Support for loading from CosmoMC/Getdist-format chains.
- Function in cobaya.cosmo_input.convert_cosmomc to general Cobaya-style info from existing CosmoMC chains (some likelihood/theory information may have to be added if you are recalculating things)
PyBOBYQA
updated to 1.2, and quieter by default.- 'best_of' parameter to probe different random starting positions (replacing seek_global_minimum for non-MPI)
- 'rhobeg' parameter larger to avoid odd hangs
- Added CamSpec 2021 Planck high-l likelihoods (based on legacy maps, not NPIPE; thanks Erik Rosenberg)
- Added Riess et al H0 constraint (H0.riess2020Mb) in terms of magnitude rather than directly on H0 (use combined with sn.pantheon with use_abs_mag: True; thanks Pablo Lemos)
- Install updated Planck clik code (3.1)
- Added MPI tests and markers, synchronize errors to avoid pytest hangs on mpi errors
- Added new fast but more realistic running, resuming and post tests with and without mpi
- Fixed some randomized test inputs for more reliable running
- drag: True running test
- Coverage reporting added to Travis
- More useful traceback and console log when error raised running pytest
- added COBAYA_DEBUG env variable that can be set to force debug output (e.g. set in travis for failed build rerun)
- Added current-state-related properties to Theory (
current_state
replacing_current_state
attribute, andcurrent_derived
replacingget_current_derived()
method) and LikelihoodInterface(current_logp
replacingget_current_logp
). - Reworked and simplified error propagation for
Theory
andLikelihood
: clearer error messages and more predictable traceback printing. @abstract
decorator for base classes: better control of which methods of a parent class have been implemented/overridden (useful e.g. for Theory classes inheriting from a more general one but not implementing all possible quantities that the parent class defines).- For components with defaults, type annotations for class attributes now automatically recognised as possible input options (previously only class attributes definitions).
- Shorter parameter specification now
possible:
<param_name>: [<prior_min>,<prior_max>,<ref_loc>,<ref_scale>,<proposal_width>]
, assuming a uniform prior and a normal reference pdf. - Got up to date with changes in numpy 1.20.
- bugfix:
model.add_requirements()
does not overwrite previous calls any more.
- Interfaced sigma8 for arbitrary redshift (PR #144; thanks @Pablo-Lemos)
- Standardised naming conventions of base classes (CamelCasing, no leading underscores, simpler names). Added workarounds and deprecation notices for some of the old names.
- Updated cosmology
Model
example in docs. - Added A. Lewis' CMB forecast data generator in
CMBlikes
definition file. Boltzmann
: added unlensed Cl's with CAMB and CLASS.CMBlikes
: small improvements, fixes, and docs.InstallableLikelihood
now works with noinstall_options
defined (local data).- bugfix: bad handling of CMB polarisation capitalisation in
Boltzmann
. - bugfix: bad
if
condition when retrieving sigmaR fromcamb
(thanks @gcanasherrera and @matmartinelli) - bugfix: unnecessary
camb
recomputations when setting some parameters asextra_args
; fixes #142 (thanks @kimmywu)
- Bugfixes when using
cobaya.sample.get_sampler()
- More informative error tracebacks; fixes #121 (thanks @msyriac)
- Uniform priors can now be specified simply as
[<min>, <max>]
- Likelihoods can now be renamed and used mutiple times simultaneously; fixes #126 (thanks @Pablo-Lemos)
- Bibtex files can now be specified via a class attribute, making inheritance easier (used to remove duplication)
- Component description now separate from bibtex code; by default, the component class docstring is used as description.
- Descriptions can be overridden to account for component input options (e.g. the actual method used in the minimizer).
- Several bugs fixed: #123, #127 and others (thanks @timothydmorton, @xgarrido)
- MCMC checkpoints are not deleted any more (was preventing resuming); fixes #124 (thanks @misharash)
- Added Hubble distance and fix to
bao.generic
(Thanks @Pablo-Lemos)
- Added Riess 2020 and Freedman et al 2020
- Normalisation changed to chi2; fixes #105 (thanks @jcolinhill)
- Fixed wrong sigma8 when z=0 not requested; fixes #128, #130, #132 (thanks @Pablo-Lemos and @msyriac)
- Fixed ignoring
l_max_scalars
(thanks Florian Stadtmann) - Fixed #106 (thanks @lukashergt)
- Adds min gcc version check for 6.4 (thanks @williamjameshandley)
- Fixed PySide2 problem in newer systems; fixes #114 (thanks @talabadi)
- Fixed missing
Sampler
combo box (thanks @williamjameshandley)
- Installation bug fix.
- Cobaya can (and should!) now be called as
python -m cobaya run
instead ofcobaya-run
, and the same for the rest of the scripts.
- File downloader function now uses
requests
instead ofwget
(less prone to segfaults) , and stores intermediate files in a tmp folder. - Added
--skip-global
option tocobaya-install
: skips local installation of codes when the corresponding python package is available globally. path=global
available for some components: forces global-scope import, even when installed withcobaya-install
.- Added
--skip-not-installed
to pytest command, to allow tests of non-installed components to fail. - Installable components can define a class method
is_compatible
determining OS compatibility (assumed compatible by default). Installation of OS-incompatible components is skipped.
- Results shared with all MPI processes.
[prefix].updated.yaml
is now[prefix].minimize.updated.yaml
(GetDist needs to know the original sampler).- Loads covmat correcly when starting from PolyChord sample.
- Collections are picklable again.
- Slices with omitted limits, e.g.
[::2]
, now work. - Slicing now returns a copy of the
Collection
, instead of a rawpandas.DataFrame
.
- Better MPI error handling: will now fail gracefully when called inside a user's script (
as opposed to
cobaya-run
).
- Python 2 support removed, now requires Python 3.6+. Uses
dict
rather thanOrderedDict
. - Significant internal refactoring including support for multiple inter-dependent theory codes.
- Greatly reduced Python overhead timing, faster for fast likelihoods.
- New base classes
CobayaComponent
andComponentCollection
, with support for standalone instantiation of allCobayaComponent
. .yaml
can now reference class names rather than modules, allowing multiple classes in one module..yaml
default files are now entirely at the class level, with nokind:module:
embedding.- inheritance of yaml and class attributes (with normal dict update, so e.g. all inherited
nuisance parameters can be removed using
params:
). Each class can either define a.yaml
or class attributes, or neither, but not both. - The
.theory
member of likelihoods is nowProvider
class instance. - Global
stop_at_error
option to stop at error in any component. - Fix for more accurate timing with Python 3.
- Updates for GetDist 1.x.
- Module version information stored and checked.
cobaya-run --no-mpi
option to enable testing without mpi even on nodes with mpi4py installed.cobaya-run-job
command to make a single job script and submit.- docs include inheritance diagrams for key classes.
- renames
path_install
topackages_path
,-m
command line options to-p
. cobaya-install
saves the installation folder in a local config file. It does not need to be specified later at running, reinstalling, etc. Usecobaya-install --show-packages-path
to show current one.- Added
cobaya-install --skip keyword1 keyword2 ...
to skip components according to a list of keywords. - Added citation info of Cobaya paper: arXiv:2005.05290
- Lots of other minor fixes and enhancements.
- Support for external likelihoods and theories, referenced by fully qualified package name.
- Allow referencing likelihood class names directly (
module.ClassName
). - Ability to instantiate
Likelihood
classes directly outside Cobaya (for testing of external likelihoods or use in other packages). - Inherited likelihoods inherit
.yaml
file from parent if no new one is defined. - Theories and likelihoods specify requirements and define derived products with general
dependencies.
get_requirements()
function replacesadd_theory()
. needs()
method renamed tomust_provide()
, and can now return a dictionary of requirements conditional on those passed.requires
andprovides
yaml keywords to specify which of ambiguous components handles specific requirements.- three initialization methods:
initialize
(from__init__
),initialize_with_params
( after parameter assignment) andinitialize_with_provider
(once all configured). Likelihood
now inherits fromTheory
, with general cached compute anddeque
states.Likelihood
andTheory
can be instantiated from{external: class}
.- Derived parameters in likelihood
.yaml
can be explicitly tagged withderived:True
. - Renamed
renames
of likelihood toaliases
(to avoid clash withrenames
for parameters). - Added automatic aggregated chi2 for likelihoods of the same
type
. - More documentation for how to make internal and external likelihood classes.
- Support for
HelperTheory
classes to do sub-calculations for anyTheory
class with separate nuisance parameters and speeds. classmethod
get_class_options()
can be used to generate class defaults dynamically based on input parameters.- Added tests:
test_dependencies.py
,test_cosmo_multi_theory.py
. - External likelihood functions: changed how derived parameters are specified and returned, and how externally-provided quantities are requested and obtained at run time (see docs).
- Samplers can now be initialized passing an already initialized model.
- Return value of
cobaya-run
now(updated_info, sampler_instance)
. Sampler products can be retrieved assampler_instance.products()
. - Sampler method now sets cache size.
- Automatic timing of likelihood and theory components to determine speed before constructing optimized blocking.
- Amount of oversampling can now be changed for MCMC and PolyChord, and it is taken into account at block sorting.
- Better dealing with files created during sampling: now all are identified and removed
when
--force
used (using regexps). - Added
cobaya-run --test
option that just initializes model and sampler.
- Added progress tracking (incl. acceptance rate), and a plotting tool for it.
- Dragging now exploits blocks within slow and fast groups.
- Updated to PolyChord 1.17.1.
- Changed naming convention for raw output files, and added
getdist
-compatible.paramnames
. - Many defaults changes and useful documentation (Thanks Will Handley @williamjameshandley).
- Support for auto-covmat as for mcmc.
- Fix for different starting points starting from existing chains using mpi.
- Fixes for bounds and rounding errors.
- Steps set from diagonal of inverse of covariance (still no use of correlation structure) .
- Warnings for differences between mpi starting points.
- Added
matter_power_spectrum
theory output forz,k,P(k)
unsplined arrays. - Fixed several bugs with
Pk_interpolator
(e.g. conflicts between likelihoods). Pk_interpolator
calling arguments now different.- Added
sigma_R
for linear rms fluctuation in sphere of radiusR
. - Fixed problems with getting same background array theory results from different likelihoods.
- renamed
H
(array ofH(z)
) toHubble
. - Boltzmann codes now consistent with varying
T_CMB
. - changed
use_planck_names
to more generaluse_renames
etc. - DES likelihood now use numba if installed to give nearly twice faster performance.
- GUI input file generator allows to inspect auto-selected covariance matrices.
- Calculation using transfer functions for speed up when only initial power spectrum and non-linear model parameters changed (even for non-linear lensing).
- Optimizations for which quantities computed.
- Option to request
CAMBdata
object from CAMB to access computed results directly. - Fix for getting source windows power spectra.
external_primordial_pk
flag to optionally use a separate Cobaya Theory to return to the (binned) primordial power spectrum to CAMB.- exposes all possible input/output parameters by introspection, making it easier to combine with other Theory classes using same parameter names.
- Updated to 2.9.3.
- Many small fixes.
- Fixed too much oversampling when manual blocking (#35). Thanks Lukas Hergt (@lukashergt) , Vivian Miranda (@vivianmiranda) and Will Handley (@williamjameshandley)
- Fixed ifort compatibility (#39, PR #42). Thanks Lukas Hergt (@lukashergt)
- Fixed: using deprecated Pandas DataFrame method (#40). Thanks Zack Li (@xzackli)
- Added GetDist output for best-fit (
ignore-prior: True
)
- Added
stop_at_error
for likelihoods -- fixes #43. Thanks Lukas Hergt (@lukashergt)
- Fixed high-DPI screens (#41).
- Added fuzzy matching for names of modules and parameters in a few places. Now error messages show possible misspellings.
- Modules can now be nested, e.g.
planck_2018_lowl.TT
andplanck_2018_lowl.EE
asTT.py
andEE.py
under folderlikelihoods/planck_2018_lowl
.
cobaya-citation
deprecated in favour ofcobaya-bib
. In addition to taking.yaml
input files as below, can now take individual module names.cobaya-doc
added to show defaults for particular modules.- Added menu to
cobaya-cosmo-generator
to show defaults for modules.
- Naming conventions for output files changed!
*.updated.yaml
instead of*.full.yaml
for updated info,*.[#].txt
instead of_[#].txt
for chains, etc (seeOutput
section in documentation).
- New, more efficient minimizer: pyBOBYQA .
- Added full suite of Planck 2018 likelihoods.
- Added late-time source Cl's as a cosmological observable (CAMB only, for now)
- Changed capitalisation of some function and requests (deprecation messages and retrocompatibility added)
- Backported some bug fixes.
- Fixed versions of external codes.
- Planck: Fix for calibration parameter being ignored in CMBlike version of lensing likelihood.
- Added
--version
argument forcobaya-run
- Many bug-fixes for corner-cases
- Importance re-weighting, adding derived parameters, etc.
- Now picklable!
- Support for skip and thin
- Multiple evaluations with new
N
option.
- Updated to version 1.16
- Handles speed-blocking optimally, including oversampling (manual blocking also possible) .
- Reworked input/output parameters assignment (documented in DEVEL.rst)
- Removed deprecated
gaussian
- Capitalization for observables now enforced! (fixed
H=H(z)
vsh
ambiguity) - CAMB and CLASS: fixed call without observables (just derived parameters)
- Fuzzy-matching suggestions for options of blocks.
- More liberal treatment of external Python objects, since we cannot check if they are the
same between runs. So
force_reproducible
not needed any more! (deprecation notice left)
- clik code updated for compatibility with Python 3 and modern gcc versions
- Updated to 1.0 (installing from master branch, considered stable)
- Updated to ...
- Added P(k) interpolator
- Manual parameter speed-blocking.
- Now installable with
cobaya-install polychord --modules [/path]
- Added "citation" tab.
- More permissive resuming.
- Made possible to fix a parameter whose only role is being an argument of a dynamically defined one.
- Likelihoods can be used in dynamical derived parameters as
chi2__[name]
(cosmological application: added automatic consolidated CMB and BAO likelihoods).
- Seeded runs for
evaluate
,mcmc
andpolychord
.
- Small improvements to callback functions.
- Updated to PolyChord 1.15 and using the official GitHub repo.
- Fixed output: now -logposterior is actually that (was chi squared of posterior).
- Interfaced callback functions.
- Added P(k) interpolator as an observable (was already available for CAMB, but not documented)
- Updated to 2.7.1
- Added P(k) interpolator
- Added Y1 release likelihoods (arXiv:1708.01530)
- Updated to 2015 data (arXiv:1810.05216) and renamed
to
bicep_keck_2015
.