Python wrapper for cppEDM using pybind11
Project description
Empirical Dynamic Modeling (EDM)
This package provides a Python/Pandas DataFrame interface to the cppEDM library for EDM analysis. Introduction and documentation are are avilable online, or in the package API docs. A Jupyter notebook interface is available at jpyEDM.
Functionality includes:
- Simplex projection (Sugihara and May 1990)
- Sequential Locally Weighted Global Linear Maps (S-Map) (Sugihara 1994)
- Multivariate embeddings (Dixon et. al. 1999)
- Convergent cross mapping (Sugihara et. al. 2012)
- Multiview embedding (Ye and Sugihara 2016)
Installation
Python Package Index (PyPI)
Certain MacOS, Linux and Windows platforms are supported with prebuilt binary distributions hosted on PyPI pyEDM.
Command line using the Python pip module: python -m pip install pyEDM
Manual Install
If a pre-built binary distribution is not available the user can build the cppEDM library, then install the Python package using pip. On OSX and Linux this requires g++. On Windows, the mingw-w64 GCC is available as in MSYS2.
Note the LAPACK library is required to build cppEDM and pyEDM. As of version 1.15.1, LAPACK is not required on Windows.
OSX and Linux
- Download pyEDM:
git clone https://github.com/SugiharaLab/pyEDM
- Build cppEDM library:
cd pyEDM/cppEDM/src; make
- Build and install package:
cd ../..; python -m pip install . --user
Windows
- If a Windows binary is not available, these suggestions may be useful.
- mingw-w64 GCC is available in MSYS2.
- Prior to version 1.15.1, gfortran and OpenBLAS libraries are required.
- Download pyEDM:
git clone https://github.com/SugiharaLab/pyEDM
- Build cppEDM library:
cd pyEDM\cppEDM\src; make
- Adjust paths to find gfortran and openblas libraries (pyEDM/pyEDM/etc/windows/libopenblas.a). You may need to rename libEDM.a to EDM.lib, and openblas.a to openblas.lib.
- Build and install package in
pyEDM\
:python -m pip install . --user
Usage
Example usage at the python prompt:
>>> import pyEDM
>>> pyEDM.Examples()
References
Sugihara G. and May R. 1990. Nonlinear forecasting as a way of distinguishing chaos from measurement error in time series. Nature, 344:734–741.
Sugihara G. 1994. Nonlinear forecasting for the classification of natural time series. Philosophical Transactions: Physical Sciences and Engineering, 348 (1688) : 477–495.
Dixon, P. A., M. Milicich, and G. Sugihara, 1999. Episodic fluctuations in larval supply. Science 283:1528–1530.
Sugihara G., May R., Ye H., Hsieh C., Deyle E., Fogarty M., Munch S., 2012. Detecting Causality in Complex Ecosystems. Science 338:496-500.
Ye H., and G. Sugihara, 2016. Information leverage in interconnected ecosystems: Overcoming the curse of dimensionality. Science 353:922–925.
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 Distributions
Hashes for pyEDM-1.15.2.0-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bf6fe9585c5d826a66ec0667202607489e06e816704a423a5fd74fc7d3456d4 |
|
MD5 | 0f2108326632ff489c2d77eed629135e |
|
BLAKE2b-256 | 69fbe6adfe796e996b038bd3a532a5110735dfdbafb93e6e5d870f5e905164a0 |
Hashes for pyEDM-1.15.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8989a65fce74fe6cb36adc86de88f6c7ba7e61a32ba5d1da1229e603efdf3664 |
|
MD5 | 694780418e3b035291af29d7ab532f98 |
|
BLAKE2b-256 | 51edf250a36c745fa2b7d3d3adf99ed7b960260a0dd945ee189cd42be41cba6e |
Hashes for pyEDM-1.15.2.0-cp312-cp312-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a34de4f8de2af9d30efd169e70156d4f80d279a0ed3a0a6c23b45cf97ea4a24 |
|
MD5 | 51b94902649f83d939c50ab8e2010b72 |
|
BLAKE2b-256 | 1f57ee8a54d01769f2f3b869cad985174831809eda689b46aa6581b9b9d19014 |
Hashes for pyEDM-1.15.2.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5cebf47a0c42beefee400e56d6572b2b2f17c636c4eda7ddae69559dd24c51fd |
|
MD5 | 8f1632b5c96b749bb1f2ed2509e33419 |
|
BLAKE2b-256 | c25da9754250d6cbee869edcfd2a0643d85a8fd5ace32aa43e70351221699f0d |
Hashes for pyEDM-1.15.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5023260ed7695e007e10322cdb94f0aa992138d75b9d387861d3ce64f7edeaf |
|
MD5 | 8e7aae77fadccc070011cbaced4d412d |
|
BLAKE2b-256 | 3149b2331d5a2b45e9cb47a5b8e4acd4e5b44460521d414af5a4a36e2efcd187 |
Hashes for pyEDM-1.15.2.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa8c7de17f47d1520412caab9a411d4aa7f46614e84f24a0a8ed26b5363846b1 |
|
MD5 | 9cc98ba48456d6d804b726a8bcd1c218 |
|
BLAKE2b-256 | 7197bd53686b8d53622ca5bc67c053f7e4790e60efd4b059ef41da96f0462937 |
Hashes for pyEDM-1.15.2.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85575ed89fbcc3a99cbbfc5d487f1d94173909ae770350a1109edbb492ef2af1 |
|
MD5 | c580a139fda98b6339a5ef07cbff1306 |
|
BLAKE2b-256 | 57820459a1d2f4d60a2f4ad452608e22b9fadabb9b149f5e0d79e95954b9f5b2 |
Hashes for pyEDM-1.15.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44ec907441c4f951b13b96d534111dee3904753db52e7608164abc3888b5e2f0 |
|
MD5 | f63d4d61f23d11571b6ab6e290ec3515 |
|
BLAKE2b-256 | 429858eebcd0e5efa1619f8aa6015f2016d6d2116cd748b3c1ced8f04d048976 |
Hashes for pyEDM-1.15.2.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f81c50cf09576b856a7be9d982071298f2e5c4fca0d0daa2533aad27691796f8 |
|
MD5 | 3b964d6c198a204792690377a1d73c49 |
|
BLAKE2b-256 | 86a8159217f8eab7657a28ca0f27297813806a2ccac3a8126ff0ff966670afc2 |
Hashes for pyEDM-1.15.2.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d0a3811a222ec79d6813e196cfcc5cc7b0e336424c48d8d4583b99f28357828 |
|
MD5 | 73798444086082a552082a825e932054 |
|
BLAKE2b-256 | 896c0e57594f1bcd283b51903292ec1df3b2cdddc7eca0b9521af975eb581f45 |
Hashes for pyEDM-1.15.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e5db1848b01a5a9d7ff01527209d4a2c6e9fda2ec703bdca56804d1bf74a328 |
|
MD5 | 2059333b790496307b96836a5d39d6af |
|
BLAKE2b-256 | 88262353633f167debaf83090c6c8bf4b767864ef96fbcd93638d9c4598e7f3e |
Hashes for pyEDM-1.15.2.0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 753ba1a8e46a29d7a10c6a5b81fdfa294178fbe0a268775da3d3a2d17ac1798f |
|
MD5 | 0a29467213b110b2cf3eb97064e68252 |
|
BLAKE2b-256 | 0a08cc7ac43aa4b2ee514f43447ff27460dcdb53df2da0f407ab394bc0587a40 |
Hashes for pyEDM-1.15.2.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd9cffdcd6758b64ebcf89e43ef5f90230ba6b09563d9bf8cc87aa6e7b3d1e5b |
|
MD5 | 4b342c1a266cbe030ed0086e3bd3ca6e |
|
BLAKE2b-256 | f789067840c455e2602f5ebd8a4508d0434ebf08b48c1ae5fa6ef8ef743d202d |
Hashes for pyEDM-1.15.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83dc1ca2d9bb72045be9c09a6d2a98925cb5f47db43a7378ee04edc8133ae669 |
|
MD5 | 9715020d225e97edd55b25f6b25ad68b |
|
BLAKE2b-256 | fa21ba8025a480f42c368d885e094f67fa267217103ca131ef382a59def0c221 |
Hashes for pyEDM-1.15.2.0-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ed983adfb4adea1a68bd8e7b8879f7be0e7cf4aaea97d0a75f1e510042fadd2 |
|
MD5 | 981332aea28d9b44cd11886997175f45 |
|
BLAKE2b-256 | 8001db3c90dd4d83c6cee7e3fafabffd20e7cd62a12c4761bb7c7c89682d11dd |