sbi: simulation-based inference Versions Save

Simulation-based inference toolkit

v0.22.0

5 months ago

API change

  • We have moved sbi to an new github organization: https://github.com/sbi-dev/sbi
  • We have changed the website of the sbi docs: https://sbi-dev.github.io/sbi/.
  • sbi.analysis.pairplot: upper was replaced by offdiag and will be deprecated in a future release.

Features and enhancements

  • size-invariant embedding nets for amortized inference with iid-data (@janfb, #808)
  • option for new using MAF with rational quadratic splines (thanks to @ImahnShekhzadeh, #819)
  • improved docstring for process_prior (thanks to @musoke, #813)
  • extended tutorial for SBI with iid data (@janfb, #857)
  • new tutorial for SBI with experimental conditions and mixed data (@janfb, #829)
  • New options for pairplot:
    • upper is now called offdiag to match other kwargs.
    • alternating colors for samples and points
    • option to add a legend and pass kwargs for the legend.

Bug fixes

  • fixed memory leak in in append_simulations (thanks to @VictorSven, #803)
  • bug fix for CNRE (thanks to @bkmi, #815)
  • bug fix for iid-inference with posterior ensembles (@janfb, #826)
  • bug fix for simulation-based calibration with VI posteriors (@janfb, #834, #838)
  • bug fix for BoxUniform device handling (@janfb, #854, #856)
  • bug fix for MAP estimates with independent priors (@janfb, #867)
  • bug fix for tutorial on SBC (@michaeldeistler, #891)
  • fix spurious seeding for simulate_for_sbi (@jan-matthis, #876)
  • bump python version of github action tests to 3.9.13 (@michaeldeistler, #888, #900)

v0.21.0

1 year ago

v0.20.0

1 year ago

Major changes and bug fixes

  • implementation of "Truncated proposals for scalable and hassle-free sbi" (#754)
  • sample-based expected coverage tests (#754)
  • permutation invariant embedding to allow iid data in SNPE (thanks @coschroeder, #751)
  • convolutional neural network embedding (thanks @coschroeder, #745, #751, #769)
  • disallow invalid simulations when using SNLE, SNRE, or atomic SNPE-C (#768)

Enhancements

  • add tutorial on all available methods (#754)
  • allow seeding of simulate_for_sbi on multiple workers (#762)
  • expose enable_transforms in sampler interface (#756)
  • bugfix for building the transformation of transformed distributions (#756)

v0.19.2

1 year ago
  • Rely on new version of pyknos with bugfix for APT with MDNs (#734)
  • bugfix: atomic SNPE-C now allows any kind of proposal (#732)
  • bugfix for SNPE with implicit prior on GPU (#730)
  • SNPE-A has force_first_round_loss=True as default (#729)

v0.19.1

1 year ago
  • bug fix for ArviZ integration (#727)

v0.19.0

1 year ago

Major changes and bug fixes

  • new option to sample posterior using importance sampling (#692)
  • new option to use arviz for posterior plotting and MCMC diagnostics (#546, #607, thanks to @sethaxen)
  • fixes for using the VIPosterior with MultipleIndependent prior, a51e93b
  • bug fix for sir (sequential importance reweighting) for MCMC initialization (#692)
  • bug fix for SNPE-A 565082c
  • bug fix for validation loader batch size (#674, thanks to @bkmi)
  • small bug fixes for pairplot and MCMC kwargs

Enhancements

  • improved and new tutorials:
    • Tutorial for simulation-based calibration (SBC) (#629, thanks to @psteinb)
    • Tutorial for sampling the conditional posterior (#667)
  • new option to use first-round loss in all rounds
  • simulated data is now stored as Dataset to reduce memory load and add flexibility with large data sets (#685, thanks to @tbmiller-astro)
  • refactoring of summary write for better training logs with tensorboard (#704)
  • new option to find peaks of 1D posterior marginals without gradients (#707, #708, thanks to @Ziaeemehr)
  • new option to not use parameter transforms in DirectPosterior for more flexibility with custom priors (#714)

v0.18.0

2 years ago

Breaking changes

  • Posteriors saved under sbi v0.17.2 or older can not be loaded under sbi v0.18.0 or newer.
  • sample_with can no longer be passed to .sample(). Instead, the user has to rerun .build_posterior(sample_with=...). (#573)
  • the posterior no longer has the the method .sample_conditional(). Using this feature now requires using the sampler interface (see tutorial here) (#573)
  • retrain_from_scratch_each_round is now called retrain_from_scratch (#598, thanks to @jnsbck)
  • API changes that had been introduced in sbi v0.14.0 and v0.15.0 are not enforced. Using the interface prior to those changes leads to an error (#645)
  • prior passed to SNPE / SNLE / SNRE must be a PyTorch distribution (#655), see FAQ-7 for how to pass use custom prior.

Major changes and bug fixes

  • new sampler interface (#573)
  • posterior quality assurance with simulation-based calibration (SBC) (#501)
  • added Sequential Neural Variational Inference (SNVI) (Glöckler et al. 2022) (#609, thanks to @manuelgloeckler)
  • bugfix for SNPE-C with mixture density networks (#573)
  • bugfix for sampling-importance resampling (SIR) as init_strategy for MCMC (#646)
  • new density estimator for neural likelihood estimation with mixed data types (MNLE, #638)
  • MCMC can now be parallelized across CPUs (#648)
  • improved device check to remove several GPU issues (#610, thanks to @LouisRouillard)

Enhancements

  • pairplot takes ax and fig (#557)
  • bugfix for rejection sampling (#561)
  • remove warninig when using multiple transforms with NSF in single dimension (#537)
  • Sampling-importance-resampling (SIR) is now the default init_strategy for MCMC (#605)
  • change mp_context to allow for multi-chain pyro samplers (#608, thanks to @sethaxen)
  • tutorial on posterior predictive checks (#592, thanks to @LouisRouillard)
  • add FAQ entry for using a custom prior (#595, thanks to @jnsbck)
  • add methods to plot tensorboard data (#593, thanks to @lappalainenj)
  • add option to pass the support for custom priors (#602)
  • plotting method for 1D marginals (#600, thanks to @guymoss)
  • fix GPU issues for conditional_pairplot and ActiveSubspace (#613)
  • MCMC can be performed in unconstrained space also when using a MultipleIndependent distribution as prior (#619)
  • added z-scoring option for structured data (#597, thanks to @rdgao)
  • refactor c2st; change its default classifier to random forest (#503, thanks to @psteinb)
  • MCMC init_strategy is now called proposal instead of prior (#602)
  • inference objects can be serialized with pickle (#617)
  • preconfigured fully connected embedding net (#644, thanks to @JuliaLinhart #624)
  • posterior ensembles (#612, thanks to @jnsbck)
  • remove gradients before returning the posterior (#631, thanks to @tomMoral)
  • reduce batchsize of rejection sampling if few samples are left (#631, thanks to @tomMoral)
  • tutorial for how to use SBC (#629, thanks to @psteinb)
  • tutorial for how to use SBI with trial-based data and mixed data types (#638)
  • allow to use a RestrictedPrior as prior for SNPE (#642)

v0.17.2

2 years ago

Minor changes

  • bug fix for transforms in KDE (#552)

v0.17.1

2 years ago

Minor changes

  • improve kwarg handling for rejection abc and smcabc
  • typo and link fixes (#549, thanks to @pitmonticone)
  • tutorial notebook on crafting summary statistics with sbi (#511, thanks to @ybernaerts)
  • small fixes and improved documenentation for device handling (#544, thanks to @milagorecki)

v0.17.0

2 years ago

Major changes

  • New API for specifying sampling methods (#487). Old syntax:
posterior = inference.build_posterior(sample_with_mcmc=True)

New syntax:

posterior = inference.build_posterior(sample_with="mcmc")  # or "rejection"
  • Rejection sampling for likelihood(-ratio)-based posteriors (#487)
  • MCMC in unconstrained and z-scored space (#510)
  • Prior is now allowed to lie on GPU. The prior has to be on the same device as the one passed for training (#519).
  • Rejection-ABC and SMC-ABC now return the accepted particles / parameters by default, or a KDE fit on those particles (kde=True) (#525).
  • Fast analytical sampling, evaluation and conditioning for DirectPosterior trained with MDNs (thanks @jnsbck #458).

Minor changes

  • scatter allowed for diagonal entries in pairplot (#510)
  • Changes to default hyperparameters for SNPE_A (thanks @famura, #496, #497)
  • bugfix for within_prior checks (#506)