{ "info": { "author": "Thomas M Bury", "author_email": "tombury182@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![PyPI version](https://badge.fury.io/py/ewstools.svg)](https://badge.fury.io/py/ewstools)\n[![Build Status](https://travis-ci.com/ThomasMBury/ewstools.svg?branch=master)](https://travis-ci.com/ThomasMBury/ewstools)\n[![Coverage Status](https://coveralls.io/repos/github/ThomasMBury/ewstools/badge.svg?branch=master&service=github)](https://coveralls.io/github/ThomasMBury/ewstools?branch=master&service=github)\n[![DOI](https://zenodo.org/badge/155786429.svg)](https://zenodo.org/badge/latestdoi/155786429)\n\n\n# ewstools\n**Python package for computing, analysing and visualising early warning signals (EWS)\nin time series data. Includes a novel approach to characterise bifurcations using Spectral EWS.**\n\n## Contents\n\n- [Overview](#overview)\n- [Repo Contents](#repo-contents)\n- [System Requirements](#system-requirements)\n- [Installation Guide](#installation-guide)\n- [Demos](#demos)\n- [Documentation](#documentation)\n- [License](./LICENSE)\n- [Issues](https://github.com/thomasmbury/ewstools/issues)\n- [Contribution](#contribution)\n\n\n## Overview\n\nMany natural and artificial systems have the capacity to undergo a sudden change in their dynamics. In the mathematical realm of dynamical systems, these changes corresopond to bifurcations, and theory therein suggests that certain signals, observable in time series data, should precede these bifurcations ([Scheffer et al. 2009](https://www.nature.com/articles/nature08227)). Two commonly used metrics include variance and autocorrelation, though there exist many others (see e.g. [Clements & Ozgul 2018](https://onlinelibrary.wiley.com/doi/full/10.1111/ele.12948)). Our objective with this package is to provide a user-friendly toolbox in Python to compute early warning signals from time series data. This complements another early warning signal toolbox written in R ([Dakos et al. 2012](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0041010)), and provides novel tools to extract information on the bifurcation from the power spectrum - results to be published soon.\n\n\nFunctionality of *ewstools* includes\n\n - Detrending using either\n - Gaussian smoothing\n - A Lowess filter\n\n - Computation of the following statistical properties over a rolling window:\n - Variance and its derivatives (standard deviation, coefficient of variation)\n - Autocorrelation (at specified lag times)\n - Higher-order moments (skewness, kurtosis)\n - Power spectrum (including maximum frequency, coherence factor and AIC weights csp. to canonical power spectrum forms)\n\n - Block-bootstrapping time-series to obtain confidence bounds on EWS estimates\n\n - Visualisation of EWS with plots of time-series and power spectra.\n\n\n## Repo Contents\n\n- [demos](./demos): interactive demos in Jupyter notebooks to illustrate use of package\n- [docs](./docs): version-controlled package documentation provided in ReadTheDocs\n- [ewstools](./ewstools): package code\n- [nat_comms](./nat_comms): supporting code for paper submission to *Nature Communications*\n- [tests](./tests): testing of package functions using pytest\n\n\n## System Requirements\n\n### Hardware Requirements\n\n*ewstools* can run on a standard computer with enough RAM to support the operations defined by a user. The software has been tested on a computer with the following specs\n\nRAM: 8G, CPU: 2.7 GHz\n\nthough the software should run as expected on computers with lower RAM. The runtimes outlined below were generated on the computer with these specs.\n\n### Software Requirements\n\n*ewstools* requires Python 3.7 or higher and has the following package dependencies:\n```\npandas==0.24.2\nnumpy==1.16.2\narch==4.7\nlmfit==0.9.12\n```\nThe Python package should be compatible with Windows, Mac, and Linux operating systems. The demonstrations require Jupyter notebook, which can be installed \n\n\n\n## Installation Guide\n\nFriendly instructions for downloading Python 3 on Linux, Mac OS and Windows are available [here](https://realpython.com/installing-python/).\n\nThen, the package *ewstools* may be installed using pip, by entering the following into Terminal (Mac/Linux) or Command Prompt (Windows)\n```\npip install ewstools\n```\nwhich includes all package dependencies. Installation of the package should take less than one minute on a standard computer. To interact with the demos, Jupyter notebook is required, which can be installed using\n```\npip install jupyterlab\n```\nand takes no longer than a minute to download.\n\n\n## Demos\n\nFor interacitve demonstrations on using *ewstools*, please refer to these [iPython notebooks](https://github.com/ThomasMBury/ewstools/tree/master/demos).\n\n## Documentation\n\nFull documentation is available on [ReadTheDocs](https://ewstools.readthedocs.io/en/latest/).\n\n## Contribution\n\nIf you are interested in being a contributer, or run into trouble with the package, please post on the [issue tracker](https://github.com/ThomasMBury/ewstools/issues).\n\n\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/ThomasMBury/ewstools", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ewstools", "package_url": "https://pypi.org/project/ewstools/", "platform": "", "project_url": "https://pypi.org/project/ewstools/", "project_urls": { "Homepage": "https://github.com/ThomasMBury/ewstools" }, "release_url": "https://pypi.org/project/ewstools/1.0.0/", "requires_dist": [ "lmfit (>=0.9)", "arch (>=4.7)" ], "requires_python": "", "summary": "Python package to compute early warning signals (EWS) from time series data", "version": "1.0.0" }, "last_serial": 5991916, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "2b19e3e654b9c03fcab7b95db68ac7d1", "sha256": "bc8bfd4f5828827f121925ae9c81a4876121fb2f14e51a56e36812878e9e6294" }, "downloads": -1, "filename": "ewstools-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2b19e3e654b9c03fcab7b95db68ac7d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17617, "upload_time": "2019-03-02T18:14:09", "url": "https://files.pythonhosted.org/packages/15/a2/450445cadce2a5d3d8e7dfc3d27ee27ab9ea03a7e2db8f645d61d5a7b5b5/ewstools-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce2031f3781f3ddc776073941e12a820", "sha256": "153aebc62fff49cf8537810d5b645c528db866caab7167ee00d1a0a95b57f818" }, "downloads": -1, "filename": "ewstools-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ce2031f3781f3ddc776073941e12a820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14061, "upload_time": "2019-03-02T18:14:11", "url": "https://files.pythonhosted.org/packages/da/98/01fdb4de8d17c331b08e11847da90cb3e86e7c1b5240c377f586feb4d0ab/ewstools-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "ac3ebd26e49fe8e89da88aca61272eb3", "sha256": "e4e52be755c5282fa93580ed78a451b36035b380b0082ec836cab5e3145f2ae3" }, "downloads": -1, "filename": "ewstools-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "ac3ebd26e49fe8e89da88aca61272eb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19030, "upload_time": "2019-10-09T21:05:47", "url": "https://files.pythonhosted.org/packages/58/89/9037d314829f0470263d9bb52711c3380d9a9500d0a08fdd5b6501b9586c/ewstools-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80e3f7e202f098173ff8e0d98464952f", "sha256": "948283db4a663450b8e63bc112cc038ebfeff0adcbb87578a0cb883371967bae" }, "downloads": -1, "filename": "ewstools-0.0.10.tar.gz", "has_sig": false, "md5_digest": "80e3f7e202f098173ff8e0d98464952f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18422, "upload_time": "2019-10-09T21:05:48", "url": "https://files.pythonhosted.org/packages/aa/60/21893f96f6b5407b0f04f22da1bbbe6fbe3c501215a6d66863b1f4762def/ewstools-0.0.10.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "765c0806f492561a940669706f637708", "sha256": "cb3da8c22981e0dd5bff3b57b44a3cf307530c5c9eab3fdd0c0d8c4801a2f437" }, "downloads": -1, "filename": "ewstools-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "765c0806f492561a940669706f637708", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17978, "upload_time": "2019-03-07T21:17:22", "url": "https://files.pythonhosted.org/packages/83/35/1577bb997297b1bf516b342a19af4ea653cc850f642e1f7f5757c1b244e7/ewstools-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3dda5df6563e6414d7df58844609297b", "sha256": "92b56353aa4850f0d819c3e13ecad021b071c054cd4085cbad46b2dbfd80fdfe" }, "downloads": -1, "filename": "ewstools-0.0.2.tar.gz", "has_sig": false, "md5_digest": "3dda5df6563e6414d7df58844609297b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14349, "upload_time": "2019-03-07T21:17:23", "url": "https://files.pythonhosted.org/packages/0e/5e/8bbf4998ef075037509f868b77bfd7caf3ce23db2e2667cd3a4aca125ff7/ewstools-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "ebf40446f1aed9e2a3c4bdf16c23d98c", "sha256": "6051456c1c3ac9b14445064bb7122314b55c4ab26f45294156cf0bfff8805a1e" }, "downloads": -1, "filename": "ewstools-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ebf40446f1aed9e2a3c4bdf16c23d98c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15457, "upload_time": "2019-03-19T23:04:11", "url": "https://files.pythonhosted.org/packages/6d/3c/09b50f93db4a150ba5cfa3661e0683b9019aeb138ac0680411d7e7ebfa1e/ewstools-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8aff8f06ad01f8a80a7ee0e827ea2261", "sha256": "b5a07699ec8921ef328c3392d2ca12c353c33f82c4682c5773843ef641b1359d" }, "downloads": -1, "filename": "ewstools-0.0.3.tar.gz", "has_sig": false, "md5_digest": "8aff8f06ad01f8a80a7ee0e827ea2261", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13542, "upload_time": "2019-03-19T23:04:13", "url": "https://files.pythonhosted.org/packages/ed/a4/94b23c9f2f4d0f00149895cb0a27a97ffe87290433c542ff5f05618d1c5d/ewstools-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "847437caa05771a5fd332fcdcbb9c8df", "sha256": "fc9c08f6cdbbf046112a3941bc4e6d02d7b87fd161da82e32042f4309f4288f5" }, "downloads": -1, "filename": "ewstools-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "847437caa05771a5fd332fcdcbb9c8df", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15534, "upload_time": "2019-06-27T03:26:48", "url": "https://files.pythonhosted.org/packages/5a/6d/1805887e69eafa458701e4c90dd9fbab290ba8e237eec56718c2d950cce1/ewstools-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50e99da03f5e06d17c3cad3aa31eee6a", "sha256": "de97e42066738c0e8f81e1bba143f018ef207b17fb22ed1361411be2d33befd9" }, "downloads": -1, "filename": "ewstools-0.0.4.tar.gz", "has_sig": false, "md5_digest": "50e99da03f5e06d17c3cad3aa31eee6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13629, "upload_time": "2019-06-27T03:26:50", "url": "https://files.pythonhosted.org/packages/3a/d8/8d71147fd69a6916bb863d2995fe815229dc64880d6ac241928cc3de80b6/ewstools-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2e64cb4d11bfd5d740b4dbc8f7ca9c4d", "sha256": "1d641eb40714672fbdf6a41e0f3d4ec1002975d887b5532647fd854a418b0921" }, "downloads": -1, "filename": "ewstools-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2e64cb4d11bfd5d740b4dbc8f7ca9c4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19709, "upload_time": "2019-08-24T18:03:53", "url": "https://files.pythonhosted.org/packages/32/71/6b67e668c1e91ac4751f86e8e5e56e27f059aafb0abd4215655b1c8513ad/ewstools-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1e446ad613d77d00fe29d32b37064c8", "sha256": "43213385fee612516c48ddb02852c979e0118b2221015ced023e9382357fc1c0" }, "downloads": -1, "filename": "ewstools-0.0.5.tar.gz", "has_sig": false, "md5_digest": "d1e446ad613d77d00fe29d32b37064c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17867, "upload_time": "2019-08-24T18:03:55", "url": "https://files.pythonhosted.org/packages/82/80/110cb27235082d9a31af39c8c8624fccd8f251886c84439cd84d57a01fe4/ewstools-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "29a483737f05da652a8218c12b7eaaab", "sha256": "e9e596b41d5c95f2c97a2760c05aca86aa127774b28efcb31169b7f5c34a1688" }, "downloads": -1, "filename": "ewstools-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "29a483737f05da652a8218c12b7eaaab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21293, "upload_time": "2019-08-24T19:06:06", "url": "https://files.pythonhosted.org/packages/78/11/27034045502b63b89032c8d5e258f8fa3081f94460982c70f931d7244a03/ewstools-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "796eb4a1502a72189c9afdfa016fc9b5", "sha256": "7ce5bbf68e04f6b142e9abd5e74eaaa3b9272b4ece6326eec2a7bc8efdaca769" }, "downloads": -1, "filename": "ewstools-0.0.6.tar.gz", "has_sig": false, "md5_digest": "796eb4a1502a72189c9afdfa016fc9b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18845, "upload_time": "2019-08-24T19:06:08", "url": "https://files.pythonhosted.org/packages/10/f7/bbdcfd7a0e561ac316ff6f331ea7411b0b5fa46e6e61c903e95a955b7791/ewstools-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "bcac317bc99dbe2471e29f175caec82e", "sha256": "55fc35491201ed73db514c8413a7358a3c8382bfef9319a2d0135cc0423fc701" }, "downloads": -1, "filename": "ewstools-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "bcac317bc99dbe2471e29f175caec82e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21274, "upload_time": "2019-08-24T19:17:27", "url": "https://files.pythonhosted.org/packages/28/87/b603fdfbc52b95ffe491492fa14e8c4074d89243061735abac3f49144ead/ewstools-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fb34237622a6e7f8ce64501b3ac5b47", "sha256": "660841b6a05745f7648ee77bf4799d89d6cac8def2f20169d9ac1b7001b65c81" }, "downloads": -1, "filename": "ewstools-0.0.7.tar.gz", "has_sig": false, "md5_digest": "5fb34237622a6e7f8ce64501b3ac5b47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18834, "upload_time": "2019-08-24T19:17:30", "url": "https://files.pythonhosted.org/packages/e8/7d/ef78dbf1b7c070ee84420ce002d370e5307663949496c131b507e3447648/ewstools-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "f010fa24c6a20e1c6becbd05b7134008", "sha256": "ae62d6525ac16889ba18ca383f1059f8c614d4f8e4083a04b620f6e1587db301" }, "downloads": -1, "filename": "ewstools-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "f010fa24c6a20e1c6becbd05b7134008", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18314, "upload_time": "2019-08-24T20:52:28", "url": "https://files.pythonhosted.org/packages/dd/32/ad740d5c70eaf037f798729797c68c90665f9f57ca09e46574f62d6316e7/ewstools-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0d2490d245f0c8072fea2d5ac62764b", "sha256": "d088c62bca3c1023b64c5b78d1f39c55bc82af7df4a06478af2df7b27d1e6dcf" }, "downloads": -1, "filename": "ewstools-0.0.8.tar.gz", "has_sig": false, "md5_digest": "d0d2490d245f0c8072fea2d5ac62764b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17730, "upload_time": "2019-08-24T20:52:29", "url": "https://files.pythonhosted.org/packages/6f/8a/81797b8cdc6f766500b4aad261af138926d7c645ef4da23db4a491e52495/ewstools-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "0198a916f0ca995b27eb3b0a9c6b81b9", "sha256": "17dcbb3f82e7a72244f8c5254b2cc71f4cba052af81ab2966c7f13e22a5018f5" }, "downloads": -1, "filename": "ewstools-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "0198a916f0ca995b27eb3b0a9c6b81b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18487, "upload_time": "2019-08-25T23:50:38", "url": "https://files.pythonhosted.org/packages/52/88/ad50d78eb7c162306579c22bbf49bb97e086df8f5a76df8dbd676d37970c/ewstools-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9179da9fe91638b768d5e6cd2c34a8da", "sha256": "287d801cf9833689d1cbc4d92d6143eb5ad474e526f3dc9a72dfaf0393872da5" }, "downloads": -1, "filename": "ewstools-0.0.9.tar.gz", "has_sig": false, "md5_digest": "9179da9fe91638b768d5e6cd2c34a8da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17875, "upload_time": "2019-08-25T23:50:39", "url": "https://files.pythonhosted.org/packages/4b/29/0257c3d36e5480f0eb27722a9db27578f86fc1961a2d97a4468444f4b25b/ewstools-0.0.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "77ef28619efe52967757a06b9acd5f4d", "sha256": "a3c7f3fa3c99f78f76fcd55021b67b719a4541b8c2cf07647dae0f4a4a781bf4" }, "downloads": -1, "filename": "ewstools-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "77ef28619efe52967757a06b9acd5f4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19014, "upload_time": "2019-10-17T19:20:07", "url": "https://files.pythonhosted.org/packages/c8/1f/c0eba315e1e56c6074b9a5980558c6094c63e9cc8b52714d1ecf13be2435/ewstools-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "460beda56ad8a1d0b682206a0fe37fc6", "sha256": "0731baa6fa9bbd2bb03735156c72d0aebbacd838970c7517cd01939746f24eb4" }, "downloads": -1, "filename": "ewstools-1.0.0.tar.gz", "has_sig": false, "md5_digest": "460beda56ad8a1d0b682206a0fe37fc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18417, "upload_time": "2019-10-17T19:20:09", "url": "https://files.pythonhosted.org/packages/35/d1/60b44e1892bc8609c05eb436e771d2b7e4c6c4b1818d8de19213324d64ea/ewstools-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "77ef28619efe52967757a06b9acd5f4d", "sha256": "a3c7f3fa3c99f78f76fcd55021b67b719a4541b8c2cf07647dae0f4a4a781bf4" }, "downloads": -1, "filename": "ewstools-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "77ef28619efe52967757a06b9acd5f4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19014, "upload_time": "2019-10-17T19:20:07", "url": "https://files.pythonhosted.org/packages/c8/1f/c0eba315e1e56c6074b9a5980558c6094c63e9cc8b52714d1ecf13be2435/ewstools-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "460beda56ad8a1d0b682206a0fe37fc6", "sha256": "0731baa6fa9bbd2bb03735156c72d0aebbacd838970c7517cd01939746f24eb4" }, "downloads": -1, "filename": "ewstools-1.0.0.tar.gz", "has_sig": false, "md5_digest": "460beda56ad8a1d0b682206a0fe37fc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18417, "upload_time": "2019-10-17T19:20:09", "url": "https://files.pythonhosted.org/packages/35/d1/60b44e1892bc8609c05eb436e771d2b7e4c6c4b1818d8de19213324d64ea/ewstools-1.0.0.tar.gz" } ] }