dit is a Python package for information theory on discrete random variables.
Project description
dit is a Python package for information theory.
- Documentation:
- Downloads:
Coming soon.
- Dependencies:
Python 2.7, 3.3, 3.4, 3.5, or 3.6
numpy
iterutils
six
contextlib2
prettytable
networkx
- Optional Dependencies:
cython
cvxopt
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=ditAlternatively, 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:
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dit-1.0.0.dev9-py2.py3-none-any.whl.
File metadata
- Download URL: dit-1.0.0.dev9-py2.py3-none-any.whl
- Upload date:
- Size: 2.0 MB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bfd7053700a4c8eab0e9331d910a7481d9489eeda84581ecf71468e98ecb1f4
|
|
| MD5 |
6c7746898b0fa2eeb0bb1c8f298aecc9
|
|
| BLAKE2b-256 |
74b31a30e999b43e93d4acf5e62fae025ba8b6d7fd8393c813e48be16feb309f
|