Skip to main content

Python package for information theory.

Project description

dit is a Python package for information theory.

Continuous Integration Status Continuous Integration Status (windows) Test Coverage Status Code Health Documentation Status Requirements Status DOI Join the Chat Say Thanks!

Documentation:

http://docs.dit.io

Downloads:

Coming soon.

Dependencies:
  • Python 2.7, 3.3, 3.4, 3.5, or 3.6

  • boltons

  • contextlib2

  • debtcollector

  • networkx

  • numpy

  • prettytable

  • six

Optional Dependencies:
  • cython

  • numdifftools

  • scipy

Note:

The cython extensions are currently not supported on windows. Please install using the --nocython option.

Install:

Until dit is available on PyPI, the easiest way to install is:

pip install git+https://github.com/dit/dit/#egg=dit

Alternatively, you can clone this repository, move into the newly created dit directory, and then install the package. Be sure to include the period (.) in the install command:

git clone https://github.com/dit/dit.git
cd dit
pip install .
Mailing list:

None

Code and bug tracker:

https://github.com/dit/dit

License:

BSD 2-Clause, see LICENSE.txt for details.

Quickstart

The basic usage of dit corresponds to creating distributions, modifying them if need be, and then computing properties of those distributions. First, we import:

>>> import dit

Suppose we have a really thick coin, one so thick that there is a reasonable chance of it landing on its edge. Here is how we might represent the coin in dit.

>>> d = dit.Distribution(['H', 'T', 'E'], [.4, .4, .2])
>>> print d
Class:          Distribution
Alphabet:       ('E', 'H', 'T') for all rvs
Base:           linear
Outcome Class:  str
Outcome Length: 1
RV Names:       None

x   p(x)
E   0.2
H   0.4
T   0.4

Calculate the probability of H and also of the combination H or T.

>>> d['H']
0.4
>>> d.event_probability(['H','T'])
0.8

Calculate the Shannon entropy and extropy of the joint distribution.

>>> dit.shannon.entropy(d)
1.5219280948873621
>>> dit.other.extropy(d)
1.1419011889093373

Create a distribution where Z = xor(X, Y).

>>> import dit.example_dists
>>> d = dit.example_dists.Xor()
>>> d.set_rv_names(['X', 'Y', 'Z'])
>>> print d
Class:          Distribution
Alphabet:       ('0', '1') for all rvs
Base:           linear
Outcome Class:  str
Outcome Length: 3
RV Names:       ('X', 'Y', 'Z')

x     p(x)
000   0.25
011   0.25
101   0.25
110   0.25

Calculate the Shannon mutual informations I[X:Z], I[Y:Z], and I[X,Y:Z].

>>> dit.shannon.mutual_information(d, ['X'], ['Z'])
0.0
>>> dit.shannon.mutual_information(d, ['Y'], ['Z'])
0.0
>>> dit.shannon.mutual_information(d, ['X', 'Y'], ['Z'])
1.0

Calculate the marginal distribution P(X,Z). Then print its probabilities as fractions, showing the mask.

>>> d2 = d.marginal(['X', 'Z'])
>>> print d2.to_string(show_mask=True, exact=True)
Class:          Distribution
Alphabet:       ('0', '1') for all rvs
Base:           linear
Outcome Class:  str
Outcome Length: 2 (mask: 3)
RV Names:       ('X', 'Z')

x     p(x)
0*0   1/4
0*1   1/4
1*0   1/4
1*1   1/4

Convert the distribution probabilities to log (base 3.5) probabilities, and access its probability mass function.

>>> d2.set_base(3.5)
>>> d2.pmf
array([-1.10658951, -1.10658951, -1.10658951, -1.10658951])

Draw 5 random samples from this distribution.

>>> dit.math.prng.seed(1)
>>> d2.rand(5)
['01', '10', '00', '01', '00']

Enjoy!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dit-1.0.0.dev11.tar.gz (225.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dit-1.0.0.dev11-py2.py3-none-any.whl (2.0 MB view details)

Uploaded Python 2Python 3

dit-1.0.0.dev11-cp36-cp36m-macosx_10_12_x86_64.whl (390.4 kB view details)

Uploaded CPython 3.6mmacOS 10.12+ x86-64

File details

Details for the file dit-1.0.0.dev11.tar.gz.

File metadata

  • Download URL: dit-1.0.0.dev11.tar.gz
  • Upload date:
  • Size: 225.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for dit-1.0.0.dev11.tar.gz
Algorithm Hash digest
SHA256 60a5a5ede0329300eca72481fbe9708dd7f2ddf41b09ddf7388c37fb409cf3dd
MD5 ae4ede27419b618219a94ec768ae18d3
BLAKE2b-256 b1cea283aff5ca4574846973827fc18fab0586bffda13aac5a8b26056d83ba8e

See more details on using hashes here.

File details

Details for the file dit-1.0.0.dev11-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for dit-1.0.0.dev11-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 15ddc325e279c408c5640b6c57dd1a67e1d569db27877014ef68f6dea3c481e0
MD5 a0411077c7fc3eaff8c1e2d6b9177ef1
BLAKE2b-256 df7c1d860a43388de8cf3a7895560dffcea3156d0da0e6d841e94cf536fc3247

See more details on using hashes here.

File details

Details for the file dit-1.0.0.dev11-cp36-cp36m-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dit-1.0.0.dev11-cp36-cp36m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 da15952e73d2d762b3726b1de1b202a7de6817443f625f15333e2da40ab96c3a
MD5 c41a02e22be5ed493fda126bb68cb983
BLAKE2b-256 0ef8d5f4fa6ca741eed929d12ebe06ea10a30f3f11dd2d39c54131b631e79902

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page