Skip to main content

Ensemble averages

Project description

enstat

CI Documentation Status Conda Version PyPi release

Documentation: enstat.readthedocs.io

Hallmark feature

enstat is a library to compute ensemble statistics without storing the entire ensemble in memory. In particular, it allows you to compute:

Below you find a quick-start. For more information, see the documentation.

Ensemble average

The key feature is to store the sum of the first and second statistical moments and the number of samples. This gives access to the mean (and variance) at all times, while you can keep adding samples.

Suppose that we have 100 realisations, each with 1000 'items', and we want to know the ensemble average of each item:

import enstat
import numpy as np

ensemble = enstat.static()

for realisation in range(100):
    sample = np.random.random(1000)
    ensemble += sample

print(ensemble.mean())

which will print a list of 1000 values, each around 0.5.

This is the equivalent of

import numpy as np

container = np.empty((100, 1000))

for realisation in range(100):
    sample = np.random.random(1000)
    container[realisation, :] = sample

print(np.mean(container, axis=0))

The key difference is that enstat only requires you to have 4 * N values in memory for a sample of size N: the sample itself, the sums of the first and second moment, and the normalisation. Instead the solution with the container uses much more memory.

A nice feature is also that you can keep adding samples to ensemble. You can even store it and continue later.

Ensemble histogram

Same example, but now we want the histogram for predefined bins:

import enstat
import numpy as np

bin_edges = np.linspace(0, 1, 11)
hist = enstat.histogram(bin_edges=bin_edges)

for realisation in range(100):
    sample = np.random.random(1000)
    hist += sample

print(hist.p)

which prints the probability density of each bin (so list of values around 0.1 for these bins).

The histogram class contains two additional nice features.

  1. It has several bin algorithms that NumPy does not have.

  2. It can be used for plotting with an ultra-sort interface, for example:

    import enstat
    import numpy as np
    import matplotlib.pyplot as plt
    
    data = np.random.random(1000)
    hist = enstat.histogram.from_data(data, bins=10, mode="log")
    
    fig, ax = plt.subplots()
    ax.plot(hist.x, hist.p)
    plt.show()
    

    You can even use ax.plot(*hist.plot).

Average per bin

Suppose you have some time series (t) with multiple observables (a and b); e.g.;

import enstat
import numpy as np

t = np.linspace(0, 10, 100)
a = np.random.normal(loc=5, scale=0.1, size=t.size)
b = np.random.normal(loc=1, scale=0.5, size=t.size)

Now suppose that you want to compute the average a, b, and t based on a certain binning of t:

bin_edges = np.linspace(0, 12, 12)
binned = enstat.binned.from_data(t, a, b, names=["t", "a", "b"]m bin_edges=bin_edges)
print(binned["a"].mean())

Installation

  • Using conda

    conda install -c conda-forge enstat
    
  • Using PyPi

    python -m pip install enstat
    

Disclaimer

This library is free to use under the MIT license. Any additions are very much appreciated. As always, the code comes with no guarantee. None of the developers can be held responsible for possible mistakes.

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

enstat-0.9.6.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

enstat-0.9.6-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file enstat-0.9.6.tar.gz.

File metadata

  • Download URL: enstat-0.9.6.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for enstat-0.9.6.tar.gz
Algorithm Hash digest
SHA256 05153ffdb3c78f1354d7245a2c4b3b3b6e1087e3bc7952af7861663f21fa907a
MD5 e3fe1fe41a3a91e6f5a684124330c07b
BLAKE2b-256 0d1d34f3b793ba8739f5b7d516db276aeb34db7b81a7beedd7af26f87ae35d63

See more details on using hashes here.

File details

Details for the file enstat-0.9.6-py3-none-any.whl.

File metadata

  • Download URL: enstat-0.9.6-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for enstat-0.9.6-py3-none-any.whl
Algorithm Hash digest
SHA256 1eede0c691577c0c8ce61f061ac230d54e459d98d61a6fbc8411b23adbfd5c70
MD5 c03c587424ba20053ca29c71a87850d1
BLAKE2b-256 3f42264e7eef2cd58a6ecba4a8572a2e4ad4b176c0f0f6fd6522263999253c30

See more details on using hashes here.

Supported by

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