{ "info": { "author": "Dawid Laszuk", "author_email": "dawid@lasz.uk", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "[![codecov](https://codecov.io/gh/laszukdawid/PyEMD/branch/master/graph/badge.svg)](https://codecov.io/gh/laszukdawid/PyEMD)\n[![BuildStatus](https://travis-ci.org/laszukdawid/PyEMD.png?branch=master)](https://travis-ci.org/laszukdawid/PyEMD)\n[![DocStatus](https://readthedocs.org/projects/pyemd/badge/?version=latest)](https://pyemd.readthedocs.io/)\n[![Codacy](https://api.codacy.com/project/badge/Grade/5385d5ddc8e84908bd4e38f325443a21)](https://www.codacy.com/app/laszukdawid/PyEMD?utm_source=github.com&utm_medium=referral&utm_content=laszukdawid/PyEMD&utm_campaign=badger)\n\n# PyEMD\n\n## Links\n\n- HTML documentation: \n- Issue tracker: \n- Source code repository: \n\n## Introduction\n\nThis is yet another Python implementation of Empirical Mode\nDecomposition (EMD). The package contains many EMD variations and\nintends to deliver more in time.\n\n### EMD variations:\n* Ensemble EMD (EEMD),\n* \"Complete Ensemble EMD\" (CEEMDAN)\n* different settings and configurations of vanilla EMD.\n* Image decomposition (EMD2D & BEMD) (experimental)\n\n*PyEMD* allows to use different splines for envelopes, stopping criteria\nand extrema interpolation.\n\n### Available splines:\n* Natural cubic [default]\n* Pointwise cubic\n* Akima\n* Linear\n\n### Available stopping criteria:\n* Cauchy convergence [default]\n* Fixed number of iterations\n* Number of consecutive proto-imfs\n\n### Extrema detection:\n* Discrete extrema [default]\n* Parabolic interpolation\n\n## Installation\n\n### Recommended\n\nSimply download this directory either directly from GitHub, or using\ncommand line:\n\n> \\$ git clone \n\nThen go into the downloaded project and run from command line:\n\n> \\$ python setup.py install\n\n### PyPi\n\nPackaged obtained from PyPi is/will be slightly behind this project, so\nsome features might not be the same. However, it seems to be the\neasiest/nicest way of installing any Python packages, so why not this\none?\n\n> \\$ pip install EMD-signal\n\n## Example\n\nMore detailed examples are included in the\n[documentation](https://pyemd.readthedocs.io/en/latest/examples.html) or\nin the\n[PyEMD/examples](https://github.com/laszukdawid/PyEMD/tree/master/example).\n\n### EMD\n\nIn most cases default settings are enough. Simply import `EMD` and pass\nyour signal to instance or to `emd()` method.\n\n```python\nfrom PyEMD import EMD\nimport numpy as np\n\ns = np.random.random(100)\nemd = EMD()\nIMFs = emd(s)\n```\n\nThe Figure below was produced with input:\n$S(t) = cos(22 \\pi t^2) + 6t^2$\n\n![simpleExample](https://github.com/laszukdawid/PyEMD/raw/master/example/simple_example.png?raw=true)\n\n### EEMD\n\nSimplest case of using Ensemble EMD (EEMD) is by importing `EEMD` and\npassing your signal to the instance or `eemd()` method.\n\n```python\nfrom PyEMD import EEMD\nimport numpy as np\n\ns = np.random.random(100)\neemd = EEMD()\neIMFs = eemd(s)\n```\n\n### CEEMDAN\n\nAs with previous methods, there is also simple way to use `CEEMDAN`.\n\n```python\nfrom PyEMD import CEEMDAN\nimport numpy as np\n\ns = np.random.random(100)\nceemdan = CEEMDAN()\ncIMFs = ceemdan(s)\n```\n\n### Visualisation\n\nThe package contain a simple visualisation helper that can help, e.g., with time series and instantaneous frequencies.\n\n```python\nimport numpy as np\nfrom PyEMD import EMD, Visualisation\n\nt = np.arange(0, 3, 0.01)\nS = np.sin(13*t + 0.2*t**1.4) - np.cos(3*t)\n\n# Extract imfs and residue\n# In case of EMD\nemd = EMD()\nemd.emd(S)\nimfs, res = emd.get_imfs_and_residue()\n\n# In general:\n#components = EEMD()(S)\n#imfs, res = components[:-1], components[-1]\n\nvis = Visualisation()\nvis.plot_imfs(imfs=imfs, residue=res, t=t, include_residue=True)\nvis.plot_instant_freq(t, imfs=imfs)\nvis.show()\n```\n\n### EMD2D/BEMD\n\n*Unfortunately, this is Experimental and we can't guarantee that the output is meaningful.*\nThe simplest use is to pass image as monochromatic numpy 2D array. Sample as\nwith the other modules one can use the default setting of an instance or, more explicitly,\nuse the `emd2d()` method.\n\n```python\nfrom PyEMD import EMD2D #, BEMD\nimport numpy as np\n\nx, y = np.arange(128), np.arange(128).reshape((-1,1))\nimg = np.sin(0.1*x)*np.cos(0.2*y)\nemd2d = EMD2D() # BEMD() also works\nIMFs_2D = emd2d(img)\n```\n\n## Contact\n\nFeel free to contact me with any questions, requests or simply to say\n*hi*. It's always nice to know that I one's work have eased others and saved\nsomeone's time. Contributing to the project is also acceptable.\n\nContact me either through gmail (laszukdawid @ gmail) or search me through your\nfavourite web search.\n\n### Citation\n\nIf you found this package useful and would like to cite it in your work\nplease use following structure:\n\nDawid Laszuk (2017-), **Python implementation of Empirical Mode\nDecomposition algorithm**. .\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/laszukdawid/PyEMD", "keywords": "signal decomposition data analysis", "license": "Apache-2.0", "maintainer": "", "maintainer_email": "", "name": "EMD-signal", "package_url": "https://pypi.org/project/EMD-signal/", "platform": "", "project_url": "https://pypi.org/project/EMD-signal/", "project_urls": { "Homepage": "https://github.com/laszukdawid/PyEMD" }, "release_url": "https://pypi.org/project/EMD-signal/0.2.7/", "requires_dist": [ "numpy (>=1.12)", "numpydoc", "scipy (>=0.19)", "pathos (>=0.2.1)" ], "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "summary": "Implementation of the Empirical Mode Decomposition (EMD) and its variations", "version": "0.2.7" }, "last_serial": 5315227, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "5865d60fd0e49a46bff535324d6a33e7", "sha256": "60dbb7dca1fbb57e138dd26317f2020846cb9f4c96859d63895ad71e5487639e" }, "downloads": -1, "filename": "EMD_signal-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5865d60fd0e49a46bff535324d6a33e7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30988, "upload_time": "2017-04-28T19:54:59", "url": "https://files.pythonhosted.org/packages/d3/61/a0d0e941bc094f6510161652235c844e2ea87806ef2d021262d42078c809/EMD_signal-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29d8be804ce2a6d0dae82cc2d4028a1b", "sha256": "8568481e381bacfb2d6f1df7679b372005904267c8f2d9295bdf196a0119f5c6" }, "downloads": -1, "filename": "EMD-signal-0.1.1.tar.gz", "has_sig": false, "md5_digest": "29d8be804ce2a6d0dae82cc2d4028a1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29511, "upload_time": "2017-04-28T19:55:04", "url": "https://files.pythonhosted.org/packages/a0/6b/4b6c83eb24ec7412ae8b12004e79152a7997ccf0877e0396a50b748dbd59/EMD-signal-0.1.1.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "cb23f19e71716eeec43e5a20aca98f31", "sha256": "4a089b8bd0879a600f5d0a0a04b28b0548039a67a2227ae8adf960b1fb5dc0d0" }, "downloads": -1, "filename": "EMD-signal-0.1.11.tar.gz", "has_sig": false, "md5_digest": "cb23f19e71716eeec43e5a20aca98f31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29431, "upload_time": "2017-05-10T09:31:08", "url": "https://files.pythonhosted.org/packages/0c/ea/299f6383a2fda9088e28506a4a98a48f1b1385f7923ccb4bdceef121470f/EMD-signal-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "d5474f0648dcb6a48c01cbbc48651e83", "sha256": "f90fe96e4bff54bd41ca6cde667013ade9e66e7fdd61a3bab6e19f9974e746af" }, "downloads": -1, "filename": "EMD-signal-0.1.12.tar.gz", "has_sig": false, "md5_digest": "d5474f0648dcb6a48c01cbbc48651e83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29595, "upload_time": "2017-05-10T09:42:40", "url": "https://files.pythonhosted.org/packages/31/bb/2403454defcf2a1acea9f9f169a6b71b0b93b9a565f983a758c3434c18fd/EMD-signal-0.1.12.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "3bae265cf7a8fbe7072efa420e278e26", "sha256": "5bae32364d8f4eb9cbc203ede8aec0f61e65696fd8bf4fd993fd3e16c31c8e18" }, "downloads": -1, "filename": "EMD_signal-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3bae265cf7a8fbe7072efa420e278e26", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36294, "upload_time": "2017-07-07T16:42:22", "url": "https://files.pythonhosted.org/packages/9a/fb/b8e05f1d076c1d88ea004dbdc7121d575222ccd1ff5991451083d999e773/EMD_signal-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "422de24bb1b5e61ae35be5fef284c0de", "sha256": "10f0f53c4b402ae55d2ea0ebcf25a73a18965ccba8b4790ae9da6085c57bfcc4" }, "downloads": -1, "filename": "EMD-signal-0.2.1.tar.gz", "has_sig": false, "md5_digest": "422de24bb1b5e61ae35be5fef284c0de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34828, "upload_time": "2017-07-07T16:42:24", "url": "https://files.pythonhosted.org/packages/dc/d2/e5f1c82d0800fbc6ac8d00c4d96314362b8f4ef5fc38c822cd51224eb18f/EMD-signal-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "9dfe6e01c96dc36ec7ca83a2bf72435e", "sha256": "5ecc2f2b1745a351c8bb4556467e6db057b5551eecd81199c9c13cb3ee6c6b4a" }, "downloads": -1, "filename": "EMD_signal-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9dfe6e01c96dc36ec7ca83a2bf72435e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36325, "upload_time": "2017-07-07T19:28:53", "url": "https://files.pythonhosted.org/packages/49/86/7f317b04478e27d1ee062dce0ee6f131d10a5d3c29e5ed15d9bb714d4749/EMD_signal-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ba933dde5b9ce9fa4ade24eb56cf77d", "sha256": "9c117505448162176fa579e113a6901e1b9e53d44f4c09cb46e9f73d4468c303" }, "downloads": -1, "filename": "EMD-signal-0.2.2.tar.gz", "has_sig": false, "md5_digest": "5ba933dde5b9ce9fa4ade24eb56cf77d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34880, "upload_time": "2017-07-07T19:28:54", "url": "https://files.pythonhosted.org/packages/3a/10/2ea7d2e082695847dd1505c3a57d9d8a40f15bb4000a8dd5cbed31a4fcd6/EMD-signal-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "16cde53646a31647cbec8bf39641a31b", "sha256": "c947c17dc952621c686529fc24c3f0d844f5dc44d0e98ec833d8268ea282daee" }, "downloads": -1, "filename": "EMD-signal-0.2.3.tar.gz", "has_sig": false, "md5_digest": "16cde53646a31647cbec8bf39641a31b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37004, "upload_time": "2017-10-21T16:54:00", "url": "https://files.pythonhosted.org/packages/37/03/55d83cc2e1052bb352b4450ec41aad1e58aaddbadc32b8bbb28a99b2d011/EMD-signal-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "7498992fe451802115ba11a8a29dcfd1", "sha256": "4b1c9371b4f93e31c21c49746a56a36360f1c69cc8b8d3cb8fc18d0e610fe2de" }, "downloads": -1, "filename": "EMD-signal-0.2.4.tar.gz", "has_sig": false, "md5_digest": "7498992fe451802115ba11a8a29dcfd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41291, "upload_time": "2017-11-17T03:09:07", "url": "https://files.pythonhosted.org/packages/e9/4b/869b30f74006fadc0c0190bed84acc19e0e96b757034b80c712d708439f9/EMD-signal-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "72913c3b786a1f6141eac4424ba63c04", "sha256": "ab2ac775eeaff4458f19fa07bf9b8fb689649eecfe05d6f1cc52d57c60dba19c" }, "downloads": -1, "filename": "EMD_signal-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "72913c3b786a1f6141eac4424ba63c04", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "size": 33218, "upload_time": "2018-05-08T04:25:22", "url": "https://files.pythonhosted.org/packages/02/c1/01529164755df43a96e7bb08e06129aea27846efab4cc825f2bc8fa01f0c/EMD_signal-0.2.5-py2.py3-none-any.whl" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "30363d3f8e583a0e3846f50bea978f84", "sha256": "967a035bdfcb6836b6f84fe39feb11b09a9e76edbd2a6fb45dcdbd67c0722002" }, "downloads": -1, "filename": "EMD_signal-0.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "30363d3f8e583a0e3846f50bea978f84", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "size": 35954, "upload_time": "2018-12-16T18:30:50", "url": "https://files.pythonhosted.org/packages/10/8d/74c8737f76478852510ef7f83f7431266fc100344c2f6eeaa27be7e938fb/EMD_signal-0.2.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4d596056aec8f9df94e423cdd4286018", "sha256": "ee32bf978fb61aa02e3b68d89b9eefabc8674eb9bb68bc32e50fce14b25e9da5" }, "downloads": -1, "filename": "EMD-signal-0.2.6.tar.gz", "has_sig": false, "md5_digest": "4d596056aec8f9df94e423cdd4286018", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "size": 40912, "upload_time": "2018-12-16T18:32:22", "url": "https://files.pythonhosted.org/packages/8f/08/9313243c9aff32f6778163a3cfdc3aa8d943c927797432f0a0a8f52ad821/EMD-signal-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "fd6e66e4ae2273ca6192a2eedf62b364", "sha256": "0c2e77115fff120c19cd33ef245afde0abd5bf9fd1dca9e42a844b40e678d824" }, "downloads": -1, "filename": "EMD_signal-0.2.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fd6e66e4ae2273ca6192a2eedf62b364", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "size": 36307, "upload_time": "2019-05-25T03:06:08", "url": "https://files.pythonhosted.org/packages/86/eb/b979a2e9f0b6eed816913731defaaaf5e9e26985dce9d33570dc08e94db9/EMD_signal-0.2.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "83e67a4ec25c55893d2ca75ba2d47654", "sha256": "7e02fb3a1b2b1e5ef91766203688e5f890f9410741296f425dd743ea88123462" }, "downloads": -1, "filename": "EMD-signal-0.2.7.tar.gz", "has_sig": false, "md5_digest": "83e67a4ec25c55893d2ca75ba2d47654", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "size": 41689, "upload_time": "2019-05-25T03:06:10", "url": "https://files.pythonhosted.org/packages/64/5b/1722c387b7e89b2995dff058b5816fcc670858a126ccf739ba21e22971db/EMD-signal-0.2.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fd6e66e4ae2273ca6192a2eedf62b364", "sha256": "0c2e77115fff120c19cd33ef245afde0abd5bf9fd1dca9e42a844b40e678d824" }, "downloads": -1, "filename": "EMD_signal-0.2.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fd6e66e4ae2273ca6192a2eedf62b364", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "size": 36307, "upload_time": "2019-05-25T03:06:08", "url": "https://files.pythonhosted.org/packages/86/eb/b979a2e9f0b6eed816913731defaaaf5e9e26985dce9d33570dc08e94db9/EMD_signal-0.2.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "83e67a4ec25c55893d2ca75ba2d47654", "sha256": "7e02fb3a1b2b1e5ef91766203688e5f890f9410741296f425dd743ea88123462" }, "downloads": -1, "filename": "EMD-signal-0.2.7.tar.gz", "has_sig": false, "md5_digest": "83e67a4ec25c55893d2ca75ba2d47654", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4", "size": 41689, "upload_time": "2019-05-25T03:06:10", "url": "https://files.pythonhosted.org/packages/64/5b/1722c387b7e89b2995dff058b5816fcc670858a126ccf739ba21e22971db/EMD-signal-0.2.7.tar.gz" } ] }