Central (co)moment calculation/manipulation
Project description
cmomy
A Python package to calculate and manipulate Central (co)moments. The main
features of cmomy are as follows:
- numba accelerated computation of central moments and co-moments
- Routines to combine, and resample central moments.
- Supports numpy array and xarray DataArray or Dataset based data.
- Routines to convert between central and raw moments.
Overview
cmomy is an open source package to calculate central moments and co-moments in
a numerical stable and direct way. Behind the scenes, cmomy makes use of
numba to rapidly calculate moments. A good introduction to the type of
formulas used can be found here.
Features
- Fast calculation of central moments and central co-moments with weights
- Support for scalar or vector inputs
- numpy and xarray api's
- bootstrap resampling
Status
This package is actively used by the author. Please feel free to create a pull request for wanted features and suggestions!
Example usage
>>> import numpy as np
>>> import cmomy
>>> rng = cmomy.default_rng(seed=0)
>>> x = rng.random(100)
>>> m = x.mean()
>>> mom = np.array([((x - m) ** i).mean() for i in range(4)])
>>> c = cmomy.wrap_reduce_vals(x, mom=3, axis=0)
>>> np.testing.assert_allclose(c.cmom(), mom, atol=1e-8)
>>> c.cmom()
array([ 1. , 0. , 0.0919, -0.0061])
# break up into chunks
>>> c = cmomy.wrap_reduce_vals(x.reshape(-1, 2), mom=3, axis=0)
>>> c
<CentralMomentsArray(mom_ndim=1)>
array([[ 5.0000e+01, 5.3019e-01, 8.0115e-02, -4.3748e-03],
[ 5.0000e+01, 5.6639e-01, 1.0297e-01, -8.9911e-03]])
# Reduce along an axis
>>> c.reduce(axis=0).cmom()
array([ 1. , 0. , 0.0919, -0.0061])
# unequal chunks
>>> x0, x1, x2 = x[:20], x[20:60], x[60:]
>>> cs = [cmomy.wrap_reduce_vals(_, mom=3, axis=0) for _ in (x0, x1, x2)]
>>> c = cs[0] + cs[1] + cs[2]
>>> np.testing.assert_allclose(c.cmom(), mom, atol=1e-8)
>>> c.cmom()
array([ 1. , 0. , 0.0919, -0.0061])
Installation
Use one of the following
pip install cmomy
or
conda install -c conda-forge cmomy
Note on caching
This code makes extensive use of the numba python package. This uses a jit
compiler to speed up vital code sections. This means that the first time a
function called, it has to compile the underlying code. However, caching has
been implemented. Therefore, the very first time you run a function, it may be
slow. But all subsequent uses (including other sessions) will be already
compiled. You can pre-compile the cmomy by running
python -m cmomy.compile
If you'll be using cmomy in parallel (e.g., using multiprocessing), make
sure to pre-compile cmomy, or to turn off caching by setting the environment
variable CMOMY_NUMBA_CACHE=0.
Documentation
See the documentation for a look at cmomy in action.
What's new?
See changelog.
License
This is free software. See LICENSE.
Related work
This package is used extensively in the newest version of thermoextrap.
See here.
Contact
The author can be reached at wpk@nist.gov.
Credits
This package was created using Cookiecutter with the usnistgov/cookiecutter-nist-python template.
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 Distribution
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 cmomy-1.0.3.tar.gz.
File metadata
- Download URL: cmomy-1.0.3.tar.gz
- Upload date:
- Size: 165.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82c3ba8ce426d81c5947e55963b9231858552d997c04c2851b0f0dfe9112df42
|
|
| MD5 |
2bc8af0b685fe6adc9dd238e5554d103
|
|
| BLAKE2b-256 |
76d0fae4a93607f96e342a03b4bb14622cd91a30b63d642c54700b120d7cdf18
|
Provenance
The following attestation bundles were made for cmomy-1.0.3.tar.gz:
Publisher:
publish.yml on usnistgov/cmomy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cmomy-1.0.3.tar.gz -
Subject digest:
82c3ba8ce426d81c5947e55963b9231858552d997c04c2851b0f0dfe9112df42 - Sigstore transparency entry: 871324683
- Sigstore integration time:
-
Permalink:
usnistgov/cmomy@b7669fcbf48bd5eebcf84eb8ed3e05c55b5f2e8a -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/usnistgov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b7669fcbf48bd5eebcf84eb8ed3e05c55b5f2e8a -
Trigger Event:
release
-
Statement type:
File details
Details for the file cmomy-1.0.3-py3-none-any.whl.
File metadata
- Download URL: cmomy-1.0.3-py3-none-any.whl
- Upload date:
- Size: 152.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c908e0d16aa0e2d6cf65e8593d34856659006f55762dd4299ccc014312d87c6
|
|
| MD5 |
0cc6d3f4217147475149e42a93e37eb1
|
|
| BLAKE2b-256 |
29fb14ab78c690b2d938cbe891ac61b8723a4f84708711867a0ebe6b71e255de
|
Provenance
The following attestation bundles were made for cmomy-1.0.3-py3-none-any.whl:
Publisher:
publish.yml on usnistgov/cmomy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cmomy-1.0.3-py3-none-any.whl -
Subject digest:
7c908e0d16aa0e2d6cf65e8593d34856659006f55762dd4299ccc014312d87c6 - Sigstore transparency entry: 871324685
- Sigstore integration time:
-
Permalink:
usnistgov/cmomy@b7669fcbf48bd5eebcf84eb8ed3e05c55b5f2e8a -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/usnistgov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b7669fcbf48bd5eebcf84eb8ed3e05c55b5f2e8a -
Trigger Event:
release
-
Statement type: