Skip to content
Tags give the ability to mark specific points in history as being important
  • v1.1.0
    Version 1.1.0
    
    Changes from 1.0.0:
    
    (taken from the changelog file, as we now have one!)
    
    ADDED
    
    - Added support for Generalized Information Bottleneck (GIB;
      introduced by [Strouse and Schwab
      2016](https://arxiv.org/abs/1604.00268)). This includes the
      "vanilla" IB and the Deterministic IB as special cases.
    - Improved performance by vectorizing some key sections of the code.
    - Added support for computing IB/DIB/GIB directly from a table giving
      a joint probability distribution p(x,y) rather than empirical data.
    - Added detailed example notebook for the Deterministic Information
      Bottleneck (`examples/Deterministic-Bottleneck.ipynb`).  This
      reproduces a key figure from the DIB paper and showcases how easy it
      now is to turn a knob and go from IB to DIB via various flavours of
      GIB.
    - Added example notebook (`examples/Compare-embo-dit.ipynb`) with a
      comparison vs [dit](https://doi.org/10.21105/joss.00738), another
      information theory package that also implements the IB.  Here we
      show that the two packages give matching results on a few sample
      problems (except when dit crashes), and we compare embo and dit
      speed-wise. Embo is much faster.
    - Added tests for GIB (actually just took most previous tests and made
      them to run over a range of IB types, from basic IB to DIB passing
      by some intermediate ones)
    - Added tests to check that our internal implementation of KL
      divergence and entropy give exactly the same results as the
      corresponding functions from SciPy (they should, as we use the same
      low-level functions from `scipy.special`).
    - Added tests on randomly-generated empirical data, sampled from a
      fixed probability distribution. This is better than what we had
      before because it makes it easier to catch corner cases.
    - Added tests on randomly-generated probability distributions of
      various shapes and sizes. This is motivated along the same lines as
      the previous point; only it's the whole distribution that is random
      here, not (just) the data.
    - Always run all tests with multiple versions of NumPy
      (1.18,1.19,1.20).
    - Add license notices to files containing the core code.
    - Added changelog file.
    
    CHANGED
    
    - Renamed `EmpiricalBottleneck` class to `InformationBottleneck`, and
      `get_empirical_bottleneck` method to `get_bottleneck`.
    - Made a small fix to the convergence criterion of the algorithm. This
      is nicer from a motivation standpoint (we monitor the loss function
      instead of the candidate pmf for changes), and also matches what is
      done in other papers such as Strouse.
    - Changed initialization rule for the bottleneck "encoder" (p(m|x)),
      using a recipe inspired by what was done in the DIB paper. This was
      done mostly to aid in the comparison with the figure from that paper
      in the example notebooks, but it seems like a nice thing to have in
      general so I've switched to that by default. The previous
      initialization method is still used when the dimensionality of M is
      lower than that of X.
    - Improved handling of corrupted input (NaNs, Infs, empty arrays)
    - Switched to [tox](https://tox.readthedocs.io/en/latest/index.html)
      for managing unit tests, as using pure setuptools via `python
      setup.py test` is now discouraged.
    - Removed usage of dtypes such as `np.int`, which were generating
      numpy deprecation warnings in NumPy 1.20.
    - Removed some somewhat misleading/unnecessary references to
      past/future bottleneck in the docstrings and comments, where more
      general notions of IB were involved.
  • v1.0.6
    4ff55a8f · Version bump ·
    Version 1.0.6
    
    Minor update to source dist and README
  • v1.0.5
    27f772eb · Version bump ·
    Version 1.0.5
    
    Add handling of NaNs and Infs in input data; improve documentation and testing.
  • v1.0.4
    Version 1.0.4
    
    Add build system configuration file.
  • v1.0.3
    Version 1.0.3
    
    Performance improvements, and dropped Scipy dependence.
  • v1.0.2
    f34cd9cc · Update version ·
    Version 1.0.2
    
    Enable setting size of bottlneck variable to minim size of X or Y
  • v1.0.1
    b06bb9a1 · Version bump ·
    Version 1.0.1
    
    Minor formatting tweaks for examples and README
  • v1.0.0
    66f96667 · Version bump ·
    Version 1.0.0
    
    Switch main interface to be object oriented (based on
    EmpiricalBottleneck class).
    
    Flip the direction in which time windows are taken on the X array, as
    a more useful convention when doing past-future bottleneck.
    
    Enable window size control when doing past-future bottleneck.
    
    Add noisy logic gate Markov chain example to notebooks, highlighting
    the use of time windowing.
    
    General improvements to documentation and examples.
  • v0.4.0
    dad178f3 · Version bump ·
    Version 0.4.0
    
    Breaking change: do not return marginal entropies by default (you now
    need to set an option for that).
    
    Fixed a bug that caused the last datapoint in X and Y to be discarded.
    
    Doc fixes.
  • v0.3.3
    58a0c003 · Version bump ·
    Version 0.3.3
    
    Version bump
  • v0.3.2
    842de191 · Remove stray file ·
    Vesion 0.3.2
    
    Added more examples using data generated from Markov chains.
    
    Improved documentation.
  • v0.3.1
    18146596 · Version bump ·
    Version 0.3.1
    
    Minor bugfix release to make sure version and license file are always
    distributed with the code.
  • v0.3.0
    Version 0.3.0
    
    This is the first version to get a public release on PyPI. Basic
    functionality and interface is in place, though more work is needed on
    documentation and code style.