Release Notes



  • Fixed typo in MODDataset code that caused abs_gen_jet_y and abs_get_jet_eta to be invalid selectors.


  • Added mass option to ptyphims_from_p4s to mirror ptyphims_from_pjs.


  • EMD module now uses Wasserstein package for optimal transport computations by default. This should yield some speed and stability improvements while being mostly transparent to the user.
  • EMD Demo updated to use Wasserstein package for EMD computation and correlation dimension calculation.
  • remap_pids now works on arrays of events (rather than arrays of padded events only.)



  • Keras is now imported via Tensorflow.
  • Added the ability to concatenate global features directly into the F funciton of an EFN/PFN model. See the num_global_features option of the EFN/PFN models.
  • In list of tensors in EFN/PFN models, changed how input tensors are listed in order to produce a flattened list.
  • Modified internals so that DNN and EFN/PFN models use the same code to construct fully-connected network fragments.



  • Added phi_ref option to ptyphims_from_pjs.
  • Simplified pjs_from_ptyphims to use fastjet.PtYPhiM.
  • Simplified multiprocessing usage to avoid setting global start context when trying to use fork.
  • Added EFN regression example.


  • Remove extraneous warning from setting multiprocessing start method on OSX.


  • Try to set multiprocessing start method to 'fork' in order for EMD multicore functionality to work, warn if the context has already been set otherwise.


  • Changed default EFP behavior when kappa‚Ȇ1 and added option to revert to original behavior if desired. See the EFP Measures page for more details.
  • Explicitly cast some numpy arrays as object arrays to avoid deprecation warnings.
  • Cached EFP file info after the first time it is accessed to improve speed.
  • Added Python 3.8 to Travis CI testing.
  • Deployment to PyPI via Travis CI.



  • Increased the speed of pjs_from_ptyphims.
  • Channels now default to the last axis for images to accomodate the limitations of newer versions of Keras/Tensorflow.
  • pixelate, standardize, zero_center functions now designed to work with channels_last.
  • Added EMD animation example.


  • Added ptyphims_from_pjs function in fastjet_utils.
  • Removed eroneous print statement in D2 when using strassen.


  • Added Pythia/Herwig + Delphes samples used for OmniFold unfolding study to the datasets submodule of EnergyFlow.
  • Added beta option to EMD module.


  • Reintroduced EFMs, with full documentation, testing, and integration with the core EFP code.
  • Fixed bug in qg_nsubs where cache_dir was set to None which caused an error. Thanks to Serhii Kryhin for catching this!
  • Fixed bug where emd module could modify the inputs in place.
  • Changed the emds function to use global arrays in order to consume less memory when using multiple jobs.
  • Updated the eval_filters method of the EFN class to adjust for new Keras behavior.
  • Implemented the D2, C2, and C3 observables using EFPs.
  • Two new demos, EFM Demo and Counting Leafless Multigaphs with Nauty.



  • Keras 2.2.5 fixes a bug in their batch_dot function that is used by their Dot layer which is used by the EFN and PFN classes. This necessitates adjusting our code to account for the new behavior.


  • When loading MOD HDF5 files, jets are now made from copies of the particle arrays rather than from views, enabling the large arrays to be freed and only the selected jets to remain in memory (which can have substantial memory savings).


  • Added support for downloading and reading MOD datasets containing CMS Open Data and Simulation from Zenodo.
  • EMD module now has support for spherical measure.
  • Added particle utility functions to map PDG IDs to electric charges.
  • Added sum_ptyphims and sum_ptyphipids functions to sum four-vectors given in hadronic coordinates.
  • Added scheme choices for summing four-vectors of particles.
  • Added preprocessing functions to particle utilities, including center_ptyphims, rotate_ptyphims and reflect_ptyphims.
  • A ~ is now expanded to the user's home directory properly in the filepath option to architectures.
  • Added h5py install dependency for MOD Datasets.
  • Improved binder environment with fastjet, latex, and default matplotlib settings.
  • Added observables submodule which currently includes image_activity and zg.
  • EMD module now imported when importing toplevel energyflow.



  • Set allow_pickle to True explicitly in Generator (recently changed default in NumPy).
  • Added Herwig7.1 dataset to qg_jets. A big thanks to Aditya Pathak for generating these Herwig samples!
  • Quark and gluon dataset files can now be obtained from Zenodo in addition to Dropbox.
  • Changed internals of EFN to use standalone functions for easier use of subnetwork components.
  • Added some particle utility functions to deal with PDG IDs.
  • Added particle utilities to deal with pseudorapidities.
  • Changed gen_random_events_mcom to have positive energies (momenta still sum to zero).
  • Added l2 regularization to layers in EFN and PFN architectures. Thanks to Anders Andreassen for submiting this pull request!
  • Added tests for particle utils.
  • Particle utilities now accept arrays of events.


  • Added another periodic phi test for event EMD.
  • Changed gdim default to None (to reduce potentially unexpected behavior).
  • Increased numerical stability of EMD computation by including an internal change of units.
  • Added verbosity functionality to EFP Generator.


  • Named lambda functions inside EFNs and PFNs (necessary for saving models).
  • Fixed typo in archbase code.
  • Added tests for architecture code.


  • Fixed potential issue involving the Keras Masking layer not functioning as documented. This is not expected to affect any EFN models that were padded with zeros, nor any PFN models for which the padding was consistent across training and testing sets. Thanks to Anders Andreassen for pointing this out!
  • Added arbitrary attribute lookup in the underlying model for all EnergyFlow architectures.
  • Deprecated old EFN/PFN parameter names.
  • Built-in support for ModelCheckpoint and EarlyStopping callbacks for neural network models.
  • Made naming of neural network layers optional, allowing pieces to be reused more easily.
  • Support for periodic phi values in EMD module.
  • Added support for passing arbitrary compilation options to Keras models.
  • Added EMD Demo notebook



  • Added advanced activations support for neural network architectures. Thanks to Kevin Bauer for this suggestion!


  • Fixed issue when using Python 2 caused by not importing division in dataset loading code. Thanks to Matt LeBlanc for pointing this out!
  • Added n_iter_max option to EMD functions.


  • Added emd module to EnergyFlow. This new module is not imported by default and relies on the Python Optimal Transport library and SciPy.
  • Included binder support for the jupyter notebook demos. Thanks to Matthew Feickert for contributing this feature!



  • Minor improvement and fixes. Thanks to Preksha Naik for pointing out a typo!


  • Updates to the documentation and enhanced examples provided.


  • Finalized initial documentation pages.
  • Minor improvement and fixes.


  • Minor improvement and fixes.


  • Minor improvement and fixes.


  • Added archs module containing EFN, PFN, DNN, CNN, and Linear models.


  • Rapid development of EFP code.