diff --git a/LICENCE.txt b/LICENSE.txt similarity index 100% rename from LICENCE.txt rename to LICENSE.txt diff --git a/MANIFEST.in b/MANIFEST.in index 436687e..8e15c80 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,9 @@ -include .travis.yml +include *.md +include *.py +include setup.cfg include MANIFEST.in -include README.rst +include README.md +include LICENCE.txt include requirements.txt -include PyEMD - -include PyEMD/tests/*.py +recursive-include PyEMD *.py +recursive-include example *.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..fd1fe97 --- /dev/null +++ b/README.md @@ -0,0 +1,150 @@ +[![codecov](https://codecov.io/gh/laszukdawid/PyEMD/branch/master/graph/badge.svg)](https://codecov.io/gh/laszukdawid/PyEMD) +[![BuildStatus](https://travis-ci.org/laszukdawid/PyEMD.png?branch=master)](https://travis-ci.org/laszukdawid/PyEMD) +[![DocStatus](https://readthedocs.org/projects/pyemd/badge/?version=latest)](https://pyemd.readthedocs.io/) +![Codacy](https://api.codacy.com/project/badge/Grade/5385d5ddc8e84908bd4e38f325443a21%0A%20:alt:%20Codacy%20Badge%0A%20:target:%20https://www.codacy.com/app/laszukdawid/PyEMD?utm_source=github.com&utm_medium=referral&utm_content=laszukdawid/PyEMD&utm_campaign=badger) + +# PyEMD + +## Links + +- HTML documentation: +- Issue tracker: +- Source code repository: + +## Introduction + +This is yet another Python implementation of Empirical Mode +Decomposition (EMD). The package contains many EMD variations and +intends to deliver more in time. + +### EMD variations: +* Ensemble EMD (EEMD), +* Image decomposition (EMD2D), +* "Complete Ensemble EMD" (CEEMDAN) +* different settings and configurations of vanilla EMD. + +*PyEMD* allows to use different splines for envelopes, stopping criteria +and extrema interpolation. + +### Available splines: +* Natural cubic [default] +* Pointwise cubic +* Akima +* Linear + +### Available stopping criteria: +* Cauchy convergence [default] +* Fixed number of iterations +* Number of consecutive proto-imfs + +### Extrema detection: +* Discrete extrema [default] +* Parabolic interpolation + +## Installation + +### Recommended + +Simply download this directory either directly from GitHub, or using +command line: + +> \$ git clone + +Then go into the downloaded project and run from command line: + +> \$ python setup.py install + +### PyPi + +Packaged obtained from PyPi is/will be slightly behind this project, so +some features might not be the same. However, it seems to be the +easiest/nicest way of installing any Python packages, so why not this +one? + +> \$ pip install EMD-signal + +## Example + +More detailed examples are included in the +[documentation](https://pyemd.readthedocs.io/en/latest/examples.html) or +in the +[PyEMD/examples](https://github.com/laszukdawid/PyEMD/tree/master/example). + +### EMD + +In most cases default settings are enough. Simply import `EMD` and pass +your signal to instance or to `emd()` method. + +```python +from PyEMD import EMD +import numpy as np + +s = np.random.random(100) +emd = EMD() +IMFs = emd(s) +``` + +The Figure below was produced with input: +$S(t) = cos(22 \pi t^2) + 6t^2$ + +![simpleExample](https://github.com/laszukdawid/PyEMD/raw/master/example/simple_example.png?raw=true) + +### EEMD + +Simplest case of using Ensemble EMD (EEMD) is by importing `EEMD` and +passing your signal to the instance or `eemd()` method. + +```python +from PyEMD import EEMD +import numpy as np + +s = np.random.random(100) +eemd = EEMD() +eIMFs = eemd(s) +``` + +### CEEMDAN + +As with previous methods, there is also simple way to use `CEEMDAN`. + +```python +from PyEMD import CEEMDAN +import numpy as np + +s = np.random.random(100) +ceemdan = CEEMDAN() +cIMFs = ceemdan(s) +``` + +### EMD2D + +Simplest case is to pass image as monochromatic numpy 2D array. As with +other modules one can use default setting of instance or more explicitly +use `emd2d()` method. + +```python +from PyEMD import EMD2D +import numpy as np + +x, y = np.arange(128), np.arange(128).reshape((-1,1)) +img = np.sin(0.1*x)*np.cos(0.2*y) +emd2d = EMD2D() +IMFs_2D = emd2d(img) +``` + +## Contact + +Feel free to contact me with any questions, requests or simply saying +*hi*. It's always nice to know that I might have contributed to saving +someone's time or that I might improve my skills/projects. + +Contact me either through gmail (laszukdawid @ gmail) or search me +favourite web search. + +### Citation + +If you found this package useful and would like to cite it in your work +please use following structure: + +Dawid Laszuk (2017-), **Python implementation of Empirical Mode +Decomposition algorithm**. . diff --git a/README.rst b/README.rst deleted file mode 100644 index dc11c22..0000000 --- a/README.rst +++ /dev/null @@ -1,169 +0,0 @@ -|codecov| |BuildStatus| |DocStatus| |Codacy| - - -***** -PyEMD -***** - -Links -***** -- HTML documentation: https://pyemd.readthedocs.org -- Issue tracker: https://github.com/laszukdawid/pyemd/issues -- Source code repository: https://github.com/laszukdawid/pyemd - -Introduction -************ - -This is yet another Python implementation of Empirical Mode -Decomposition (EMD). The package contains many EMD variations and intends to -deliver more in time. - -EMD variations: - - Ensemble EMD (EEMD), - - Image decomposition (EMD2D), - - "Complete Ensemble EMD" (CEEMDAN) - - different settings and configurations of vanilla EMD. - -*PyEMD* allows to use different splines for envelopes, stopping criteria -and extrema interpolation. - -Available splines: - - Natural cubic [default] - - Pointwise cubic - - Akima - - Linear - -Available stopping criteria: - - Cauchy convergence [default] - - Fixed number of iterations - - Number of consecutive proto-imfs - -Extrema detection: - - Discrete extrema [default] - - Parabolic interpolation - -Installation -************ - -Recommended -=========== - -Simply download this directory either directly from GitHub, or using command line: - - $ git clone https://github.com/laszukdawid/PyEMD - -Then go into the downloaded project and run from command line: - - $ python setup.py install - - -PyPi -==== -Packaged obtained from PyPi is/will be slightly behind this project, so some features might not be the same. However, it seems to be the easiest/nicest way of installing any Python packages, so why not this one? - - $ pip install EMD-signal - - -Example -******* - -More detailed examples are included in the documentation_ or in the `PyEMD/examples`_. - -EMD -=== - -In most cases default settings are enough. Simply -import ``EMD`` and pass your signal to instance or to ``emd()`` method. - -.. code:: python - - from PyEMD import EMD - import numpy as np - - s = np.random.random(100) - emd = EMD() - IMFs = emd(s) - -The Figure below was produced with input: -:math:`S(t) = cos(22 \pi t^2) + 6t^2` - -|simpleExample| - -EEMD -==== - -Simplest case of using Ensemble EMD (EEMD) is by importing ``EEMD`` and passing -your signal to the instance or ``eemd()`` method. - -.. code:: python - - from PyEMD import EEMD - import numpy as np - - s = np.random.random(100) - eemd = EEMD() - eIMFs = eemd(s) - -CEEMDAN -======= - -As with previous methods, there is also simple way to use ``CEEMDAN``. - -.. code:: python - - from PyEMD import CEEMDAN - import numpy as np - - s = np.random.random(100) - ceemdan = CEEMDAN() - cIMFs = ceemdan(s) - -EMD2D -===== - -Simplest case is to pass image as monochromatic numpy 2D array. -As with other modules one can use default setting of instance or -more explicitly use ``emd2d()`` method. - -.. code:: python - - from PyEMD import EMD2D - import numpy as np - - x, y = np.arange(128), np.arange(128).reshape((-1,1)) - img = np.sin(0.1*x)*np.cos(0.2*y) - emd2d = EMD2D() - IMFs_2D = emd2d(img) - -Contact -******* - -Feel free to contact me with any questions, requests or simply saying -*hi*. It's always nice to know that I might have contributed to saving -someone's time or that I might improve my skills/projects. - -Contact me either through gmail (laszukdawid @ gmail) or search me -favourite web search. - -Citation -======== - -If you found this package useful and would like to cite it in your work -please use following structure: - -Dawid Laszuk (2017-), **Python implementation of Empirical Mode Decomposition algorithm**. http://www.laszukdawid.com/codes. - - -.. |codecov| image:: https://codecov.io/gh/laszukdawid/PyEMD/branch/master/graph/badge.svg - :target: https://codecov.io/gh/laszukdawid/PyEMD -.. |BuildStatus| image:: https://travis-ci.org/laszukdawid/PyEMD.png?branch=master - :target: https://travis-ci.org/laszukdawid/PyEMD -.. |DocStatus| image:: https://readthedocs.org/projects/pyemd/badge/?version=latest - :target: https://pyemd.readthedocs.io/ - -.. |Codacy| image:: https://api.codacy.com/project/badge/Grade/5385d5ddc8e84908bd4e38f325443a21 - :alt: Codacy Badge - :target: https://www.codacy.com/app/laszukdawid/PyEMD?utm_source=github.com&utm_medium=referral&utm_content=laszukdawid/PyEMD&utm_campaign=badger -.. |simpleExample| image:: https://github.com/laszukdawid/PyEMD/raw/master/example/simple_example.png?raw=true -.. _documentation: https://pyemd.readthedocs.io/en/latest/examples.html -.. _`PyEMD/examples`: https://github.com/laszukdawid/PyEMD/tree/master/example diff --git a/doc/conf.py b/doc/conf.py index 33257e7..6495d1b 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -72,9 +72,9 @@ # built documents. # # The short X.Y version. -version = u'0.2.03' +version = u'0.2.5' # The full version, including alpha/beta/rc tags. -release = u'0.2.03' +release = u'0.2.5' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/example/simple_example.png b/example/simple_example.png index 83c217f..981aca8 100644 Binary files a/example/simple_example.png and b/example/simple_example.png differ diff --git a/requirements-extra.txt b/requirements-extra.txt new file mode 100644 index 0000000..19d4d9f --- /dev/null +++ b/requirements-extra.txt @@ -0,0 +1,6 @@ +numpy>=1.12 +numpydoc +scipy>=0.19 +matplotlib +pathos>=0.2.1 +scikit-image>=0.13 diff --git a/requirements.txt b/requirements.txt index 30785a7..817c804 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,4 @@ -numpy -numpydoc +numpy>=1.12 scipy>=0.19 -matplotlib -pathos +pathos>=0.2.1 scikit-image>=0.13 diff --git a/setup.py b/setup.py index 24c9dbe..5c61fc6 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -VERSION="0.2.4" +VERSION="0.2.5" DESCRIPTION = "Implementation of Empirical Mode Decomposition (EMD) and its variations" @@ -8,22 +8,15 @@ def main(): import io from setuptools import setup - with io.open('README.rst', encoding="utf8") as fp: + with io.open('README.md', encoding="utf8") as fp: long_description = fp.read().strip() with open('requirements.txt') as f: required = f.read().splitlines() classifiers=[ - "Development Status :: 4 - Beta", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", - "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.3", - "Programming Language :: Python :: 3.4", - "Programming Language :: Python :: 3.5", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Scientific/Engineering :: Mathematics" @@ -37,11 +30,13 @@ def main(): url="https://github.com/laszukdawid/PyEMD", author="Dawid Laszuk", author_email="laszukdawid@gmail.com", + license="Apache-2.0", classifiers=classifiers, keywords="signal decomposition data analysis", packages=["PyEMD"], install_requires=required, - test_suite="PyEMD.tests" + python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4', + test_suite="PyEMD.tests", ) dist = setup(**setup_params)