- Detect and fix incomplete last lines when resuming or minimizing from existing runs (#306, #378)
- Added functions module and refactored some numerical functions into it
- Allow classes to have both yaml and class attributes as long as no duplicate keys
- Added get_modified_defaults() class method to cobaya components to dynamically set/modify defaults
- Option to return lensed scalar Cl's from CAMB (without tensors) (thanks @kimmywu})
- added --allow-changes option to cobaya-run to allow changes in the input file when resuming or minimizing
- Updates for deprecation warnings
- Minor optimization refactor and doc update
- Updates for numpy 2 and other compatibility fixes
- Fixes #357, #358, #360, #361, #362, #368
- Added _fast_chi_squared method to base class InstallableLikelihood
- 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_samplesfunction 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_thinis 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
productsmethod 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.SampleCollectionslicing 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_installsettings to specify whether installed from pip, github or URL when cobaya-install is run. - Fix for
postwhen likelihoods return different number of derived parameters (#285) (thanks @zhaoruiyang98)
- Added tempered sampling.
productsmethod 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_filein input, in favour ofdebug: [filename]. Priornow 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
Modelclass in general contexts (previously only cosmo) Modelmethods to compute log-probabilities and derived parameters now have anas_dictkeyword (defaultFalse), for more informative return value.
Pk_interpolator: added extrapolation up toextrap_kminand improved robustness
- Removed problematic
zrei: zrealias (fixes #199, thanks @pcampeti) - Added
Omega_b|cdm|nu_massive(z)andangular_diameter_distance_2 - Returned values for
get_sigma_Rchanged 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_obsoleteoption 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_obsoleteoption 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)
PyBOBYQAupdated 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
- 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 tests for failed build rerun)
- Added current-state-related properties to Theory (
current_statereplacing_current_stateattribute, andcurrent_derivedreplacingget_current_derived()method) and LikelihoodInterface(current_logpreplacingget_current_logp). - Reworked and simplified error propagation for
TheoryandLikelihood: clearer error messages and more predictable traceback printing. @abstractdecorator 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
Modelexample in docs. - Added A. Lewis' CMB forecast data generator in
CMBlikesdefinition file. Boltzmann: added unlensed Cl's with CAMB and CLASS.CMBlikes: small improvements, fixes, and docs.InstallableLikelihoodnow works with noinstall_optionsdefined (local data).- bugfix: bad handling of CMB polarisation capitalisation in
Boltzmann. - bugfix: bad
ifcondition when retrieving sigmaR fromcamb(thanks @gcanasherrera and @matmartinelli) - bugfix: unnecessary
cambrecomputations 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
Samplercombo box (thanks @williamjameshandley)
- Installation bug fix.
- Cobaya can (and should!) now be called as
python -m cobaya runinstead ofcobaya-run, and the same for the rest of the scripts.
- File downloader function now uses
requestsinstead ofwget(less prone to segfaults) , and stores intermediate files in a tmp folder. - Added
--skip-globaloption tocobaya-install: skips local installation of codes when the corresponding python package is available globally. path=globalavailable for some components: forces global-scope import, even when installed withcobaya-install.- Added
--skip-not-installedto pytest command, to allow tests of non-installed components to fail. - Installable components can define a class method
is_compatibledetermining OS compatibility (assumed compatible by default). Installation of OS-incompatible components is skipped.
- Results shared with all MPI processes.
[prefix].updated.yamlis 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
dictrather thanOrderedDict. - Significant internal refactoring including support for multiple inter-dependent theory codes.
- Greatly reduced Python overhead timing, faster for fast likelihoods.
- New base classes
CobayaComponentandComponentCollection, with support for standalone instantiation of allCobayaComponent. .yamlcan now reference class names rather than modules, allowing multiple classes in one module..yamldefault 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.yamlor class attributes, or neither, but not both. - The
.theorymember of likelihoods is nowProviderclass instance. - Global
stop_at_erroroption 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-mpioption to enable testing without mpi even on nodes with mpi4py installed.cobaya-run-jobcommand to make a single job script and submit.- docs include inheritance diagrams for key classes.
- renames
path_installtopackages_path,-mcommand line options to-p. cobaya-installsaves the installation folder in a local config file. It does not need to be specified later at running, reinstalling, etc. Usecobaya-install --show-packages-pathto 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
Likelihoodclasses directly outside Cobaya (for testing of external likelihoods or use in other packages). - Inherited likelihoods inherit
.yamlfile 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.requiresandprovidesyaml 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). Likelihoodnow inherits fromTheory, with general cached compute anddequestates.LikelihoodandTheorycan be instantiated from{external: class}.- Derived parameters in likelihood
.yamlcan be explicitly tagged withderived:True. - Renamed
renamesof likelihood toaliases(to avoid clash withrenamesfor parameters). - Added automatic aggregated chi2 for likelihoods of the same
type. - More documentation for how to make internal and external likelihood classes.
- Support for
HelperTheoryclasses to do sub-calculations for anyTheoryclass with separate nuisance parameters and speeds. classmethodget_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-runnow(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
--forceused (using regexps). - Added
cobaya-run --testoption 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_spectrumtheory output forz,k,P(k)unsplined arrays. - Fixed several bugs with
Pk_interpolator(e.g. conflicts between likelihoods). Pk_interpolatorcalling arguments now different.- Added
sigma_Rfor 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_namesto more generaluse_renamesetc. - 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
CAMBdataobject from CAMB to access computed results directly. - Fix for getting source windows power spectra.
external_primordial_pkflag 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_errorfor 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.TTandplanck_2018_lowl.EEasTT.pyandEE.pyunder folderlikelihoods/planck_2018_lowl.
cobaya-citationdeprecated in favour ofcobaya-bib. In addition to taking.yamlinput files as below, can now take individual module names.cobaya-docadded to show defaults for particular modules.- Added menu to
cobaya-cosmo-generatorto show defaults for modules.
- Naming conventions for output files changed!
*.updated.yamlinstead of*.full.yamlfor updated info,*.[#].txtinstead of_[#].txtfor chains, etc (seeOutputsection 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
--versionargument 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
Noption.
- 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)vshambiguity) - 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_reproduciblenot 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,mcmcandpolychord.
- 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.