Mr-Milk / SpatialEntropy

A python implementation of spatial entropy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SpatialEntropy

Test PyPI version

This is a python implementation of spatial entropy, inspired by the R package spatentropy. For now, two spatial entropy methods have been implemented:

  • Leibovici’s entropy
  • Altieri's entropy

Compare with shannon entropy

Compare

Installation

It's available on PyPI

pip install spatialentropy

Usage

Check out an example

Let's generate some fake data first:

import numpy as np

points = 100 * np.random.randn(10000, 2) + 1000
types = np.random.choice(range(30), 10000)

Here we have 10,000 points and then we assigned each point with a category from 30 categories.

Quick start

from spatialentropy import leibovici_entropy

e = leibovici_entropy(points, types)
e.entropy

Leibovici entropy

To calculate the leibovici entropy, we need to set up a distance or an interval to define the co-occurrences.

from spatialentropy import leibovici_entropy

# set the distance cut-off to 5
e = leibovici_entropy(points, types, d=5)
# if you want to change the base of log
e = leibovici_entropy(points, types, base=2)

e.entropy # to get the entropy value
e.adj_matrix # to get the adjacency matrix
e.pairs_counts # to get the counts for each pair of co-occurrences

Altieri entropy

To calculate the altieri entropy, we need to set up intervals to define the co-occurrences.

from spatialentropy import altieri_entropy

# set cut=2, it means we will create 3 intervals evenly from [0,max]
e = altieri_entropy(points, types, cut=2)

# or you want to define your own intervals
e = altieri_entropy(points, types, cut=[0,4,10])

e.entropy # to get the entropy value, e.entropy = e.mutual_info + e.residue
e.mutual_info # the spatial mutual information
e.residue # the spatial residue entropy
e.adj_matrix # to get the adjacency matrix

About

A python implementation of spatial entropy

License:MIT License


Languages

Language:Python 100.0%