# EntropyHub

*An Open-Source Toolkit For Entropic Time Series Analysis*

## Introduction

Welcome to **EntropyHub.jl**!

This is a toolkit that provides a wide range of functions to calculate different entropy statistics.

There is an ever-growing range of information-theoretic entropy measures presented in the scientific literature. Although many functions for estimating these entropies can be found in various corners of the internet, there is currently no toolkit to perform entropic time-series analysis in Julia with an extensive documentation and consistent syntax, that is also accessible in multiple programming languages (Matlab, Python).

The goal of **EntropyHub.jl** is to integrate the many established entropy methods into one package that is available for users of Julia.

### About

Information and uncertainty can be regarded as two sides of the same coin: the more uncertainty there is, the more information we gain by removing that uncertainty. In the context of information and probability theory, **Entropy** quantifies that uncertainty.

The concept of entropy has its origins in classical physics under the second law of thermodynamics, a law considered to underpin our fundamental understanding of time in physics. Attempting to analyse the analog world around us requires that we measure time in discrete steps, but doing so compromises our ability to measure entropy accurately. Various measures have been derived to estimate entropy (uncertainty) from discrete time series, each seeking to best capture the uncertainty of the system under examination. This has resulted in many entropy statistics from approximate entropy and sample entropy, to multiscale sample entropy and refined-composite multiscale cross-sample entropy.

As the number of statisitcal entropy measures grows, it becomes more difficult to identify, contrast and compare the performance of each measure. To overcome this, we have developed EntropyHub - an open-source toolkit designed to integrate the many established entropy methods into one package. The goal of EntropyHub is to provide a comprehensive set of functions with a simple and consistent syntax that allows the user to augment parameters at the command line, enabling a range from basic to advanced entropy methods to be implemented with ease.

It is important to clarify that the entropy functions herein described estimate entropy in the context of probability theory and information theory as defined by Shannon, and not thermodynamic or other entropies from classical physics.

## Installation

Using the Julia REPL:

`julia> using Pkg; Pkg.add("EntropyHub")`

or

```
julia> ]
pkg> add EntropyHub
```

To get the latest version of EntropyHub directly from GitHub:

```
julia> ]
pkg> add https://github.com/MattWillFlood/EntropyHub.jl
```

## Citing

EntropyHub is licensed under the Apache License (Version 2.0) and is free to use by all on condition that the following reference be included on any outputs realized using the software:

```
Matthew W. Flood and Bernd Grimm (2021),
EntropyHub: An Open-Source Toolkit for Entropic Time Series Analysis,
PLoS ONE 16(11):e0259448
DOI: 10.1371/journal.pone.0259448
www.EntropyHub.xyz
```

__________________________________________________________________

```
© Copyright 2021 Matthew W. Flood, EntropyHub
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For Terms of Use see https://github.com/MattWillFlood/EntropyHub
```

If you find this package useful, please consider starring it on GitHub and Julia Packages (or MatLab File Exchange and PyPI). This helps us to gauge user satisfaction.

## Functions

EntropyHub functions fall into 5 categories:

`Base`

functions for estimating the entropy of a single univariate time series.`Cross`

functions for estimating the entropy between two univariate time series.`Bidimensional`

functions for estimating the entropy of a two-dimensional univariate matrix.`Multiscale`

functions for estimating the multiscale entropy of a single univariate time series using any of the Base entropy functions.`Multiscale Cross`

functions for estimating the multiscale entropy between two univariate time series using any of the Cross-entropy functions.

## Contact

For general queries and information about EntropyHub, contact: `info@entropyhub.xyz`

If you have any questions or need help using the package, please contact us at: `help@entropyhub.xyz`

If you notice or identify any issues, please do not hesitate to contact us at: `fix@entropyhub.xyz`

We will do our best to help you with any relevant issues that you may have.

If you come across any errors or technical issues, you can raise these under the issues tab on the EntropyHub.jl GitHub page. Similarly, if you have any suggestions or recommendations on how this package can be improved, please let us know.

**Thank you for using EntropyHub,**

Matt

```
___ _ _ _____ _____ ____ ____ _ _
| _|| \ | ||_ _|| \| || || \ / | ___________
| \_ | \| | | | | __/| || __| \ \_/ / / _______ \
| _|| \ \ | | | | \ | || | \ / | / ___ \ |
| \_ | |\ | | | | |\ \ | || | | | | | / \ | |
|___||_| \_| |_| |_| \_||____||_| |_| _|_|__\___/ | |
_ _ _ _ ____ / |__\______\/ |
| | | || | | || \ An open-source | /\______\__|_/
| |_| || | | || | toolkit for | | / \ | |
| _ || | | || \ entropic time- | | \___/ | |
| | | || |_| || \ series analysis | \_______/ |
|_| |_|\_____/|_____/ \___________/
```

Documentation for EntropyHub.

`EntropyHub._ApEn.ApEn`

`EntropyHub._AttnEn.AttnEn`

`EntropyHub._BubbEn.BubbEn`

`EntropyHub._CoSiEn.CoSiEn`

`EntropyHub._CondEn.CondEn`

`EntropyHub._DispEn.DispEn`

`EntropyHub._DispEn2D.DispEn2D`

`EntropyHub._DistEn.DistEn`

`EntropyHub._DistEn2D.DistEn2D`

`EntropyHub._EnofEn.EnofEn`

`EntropyHub._EspEn2D.EspEn2D`

`EntropyHub._FuzzEn.FuzzEn`

`EntropyHub._FuzzEn2D.FuzzEn2D`

`EntropyHub._GridEn.GridEn`

`EntropyHub._IncrEn.IncrEn`

`EntropyHub._K2En.K2En`

`EntropyHub._MSEn.MSEn`

`EntropyHub._MSobject.MSobject`

`EntropyHub._PermEn.PermEn`

`EntropyHub._PermEn2D.PermEn2D`

`EntropyHub._PhasEn.PhasEn`

`EntropyHub._SampEn.SampEn`

`EntropyHub._SampEn2D.SampEn2D`

`EntropyHub._SlopEn.SlopEn`

`EntropyHub._SpecEn.SpecEn`

`EntropyHub._SyDyEn.SyDyEn`

`EntropyHub._XApEn.XApEn`

`EntropyHub._XCondEn.XCondEn`

`EntropyHub._XDistEn.XDistEn`

`EntropyHub._XFuzzEn.XFuzzEn`

`EntropyHub._XK2En.XK2En`

`EntropyHub._XMSEn.XMSEn`

`EntropyHub._XPermEn.XPermEn`

`EntropyHub._XSampEn.XSampEn`

`EntropyHub._XSpecEn.XSpecEn`

`EntropyHub._cMSEn.cMSEn`

`EntropyHub._cXMSEn.cXMSEn`

`EntropyHub._hMSEn.hMSEn`

`EntropyHub._hXMSEn.hXMSEn`

`EntropyHub._rMSEn.rMSEn`

`EntropyHub._rXMSEn.rXMSEn`