Skip to content

v0.3.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@johannbrehmer johannbrehmer released this 05 Apr 18:15
e554328

New features:

  • Nuisance parameters for ratio-based methods! This required a major refactoring of madminer.sampling.
  • New madminer.limits submodule that calculates expected and observed p-values.
  • SALLY can profile the estimated score over nuisance parameters (then its output is n-dimensional rather than (n+k)-dimensional, where n is the number of parameters of interest and k is the number of nuisance parameters).
  • New madminer.analysis submodule with a generic DataAnalyzer class that can be used to access the general setup, weighted events, and cross sections. The classes SampleAugmenter, FisherInformation and AsymptoticLimits subclass it, leading to a more unified interface.
  • Sampling speed-up with parallelization when using n_processes>1 for any sampling call.

Breaking / API changes:

  • New file format for trained neural networks (only the *.json files are different) -- old models won't load
  • The one-size-fits-all class MLForge is replaced by four different classes ParameterizedRatioEstimator, DoubleParameterizedRatioEstimator, LikelihoodEstimator, and ScoreEstimator.
  • EnsembleForge is now Ensemble, with renamed functions and less clutter (at the cost of some unimportant functionality)
  • Renaming: DelphesProcessor -> DelphesReader, LHEProcessor -> LHEReader
  • madminer.morphing now lives in madminer.utils.morphing, and the Morpher class was renamed PhysicsMorpher (since we also have a NuisanceMorpher class)
  • The madminer.sampling has changed in a number of ways. The high-level functions have been renamed: extract_samples_train_plain() -> sample_train_plain(), extract_samples_train_local() -> sample_train_local(), extract_samples_train_global() -> train_samples_density(), extract_samples_train_ratio() -> sample_train_ratio(), extract_samples_train_more_ratios() -> sample_train_more_ratios(), extract_samples_test() -> sample_test(), extract_cross_sections() -> cross_sections(). In addition to the physical parameters theta, they all now take descriptions of the nuisance parameters nu as input argument, for which new helper functions exist.
  • The helper functions in madminer.sampling are also different: constant_benchmark_theta() -> benchmark(), multiple_benchmark_thetas() -> benchmarks(), constant_morphing_theta() -> morphing_point(), multiple_morphing_thetas() -> morphing_points, random_morphing_thetas() -> random_morphing_points()
  • New default evaluation split of 0.2 (so with the defaults, there will be 60% train, 20% validation, 20% test events)

Internal changes:

  • madminer.ml largely rewritten
  • madminer.sampling largely rewritten
  • madminere.utils.analysis got removed, the old functions are now split between madminer.analysis and madminer.sampling