Skip to content

Latest commit

 

History

History
52 lines (43 loc) · 2.6 KB

HISTORY.rst

File metadata and controls

52 lines (43 loc) · 2.6 KB

History

Although the first commit to dit was in January of 2013, a much longer history has influenced the design of dit. Here we provide that historical context.

Originally, dit began as a single module in cmpy, a Python package for computational mechanics developed as part of the Complexity Sciences Center at UC Davis. In a sense, this was version -2.0. The commit which introduced information.py (on 2007-04-18) included the following statement:

Introducing some functions that compute information-theoretic quantities.
In the future, we might need to formalize a 'distribution' into a
dictionary-like class.

It was intentionally simple and cludgy, but it did what it needed to do---providing functions for calculating entropy, mutual information, conditional entropy, etc. As cmpy grew, this single module eventually became a subpackage which included even more functionality. However, it was already abundantly clear that a more formal information theory package would be needed.

This brings us to a fairly innocent commit message in January of 2010:

first stab at a Distribution class

This was a complete rewrite and, in hindsight, could be seen as dit -1.0. It was fresh, formal and exactly what cmpy needed. Its development continued and was eventually split off into a new infotheory subpackage. With the subpackage in place, features blossomed over the next few years to include multivariate generalizations of Shannon's information theory as well algorithms for calculating candidates measures for redundancy, synergy, and unique information.

Still, the growth of the infotheory subpackage was quite organic, and many of the original designs had been diluted due to unexpected use cases. Discussions on a rewrite were commonplace, but design is always tricky and so, a rewrite was delayed for some time.

In September of 2012, the first bits of dit were discussed over GChat (now known as Google Hangouts), and written to file. Then finally, the first commit made its way into the record books in January of 2013, now available as a completely separate package. Its development was slow but steady, and picked up quite a bit around September 2013.

This short outline is nowhere near detailed enough to give justice to the work and decisions made along the way, but dit has benefited immensely from these prior experiences---they helped determine the API, typical use patterns, and much more. Given the history, its not unlikely that dit might eventually be rewritten as well. Until then, it will continually grow to meet the needs of those who use it.