From 946be69790ec4a5e0d09894f15bdf601b87f5175 Mon Sep 17 00:00:00 2001 From: Luca Verginer Date: Fri, 13 Jul 2018 15:36:49 +0200 Subject: [PATCH] pip upload works #65 --- Makefile | 8 +- README.rst | 198 +++++++++++++++++++++++++++++---------------- pathpy/__init__.py | 2 +- setup.cfg | 10 +-- setup.py | 34 ++++---- 5 files changed, 155 insertions(+), 97 deletions(-) diff --git a/Makefile b/Makefile index 157fb3e..f7130d4 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,13 @@ test-all: ## run tests on every Python version with tox pytest --runslow coverage: ## check code coverage quickly with the default Python - pytest --cov pathpy --runslow --latex --cov-report html --cov-report term --doctest-modules + pytest --cov pathpy \ + --runslow \ + --latex \ + --networkx \ + --cov-report html \ + --cov-report term \ + --doctest-modules docs: ## generate Sphinx HTML documentation, including API docs rm -f docs/pathpy.rst diff --git a/README.rst b/README.rst index f8f58e5..1364fc4 100644 --- a/README.rst +++ b/README.rst @@ -1,71 +1,131 @@ -pathpy logo - -# Introduction - -`pathpy` is an OpenSource python package for the analysis of time series data on networks using **higher-order** and **multi-order** graphical models. - -The package is specifically tailored to analyze temporal networks as well as sequential data that capture multiple short, independent paths observed in an underlying graph topology. -Examples for data that can be analysed with `pathpy` include time-stamped social networks, user click streams in information networks, biological pathways, or traces of information propagating in social media. -Unifying the analysis of pathways and temporal networks, `pathpy` provides various methods to extract time-respecting paths from time-stamped network data. -It extends (and will eventually supersede) the package [`pyTempnets`](https://github.com/IngoScholtes/pyTempNets). - -`pathpy` facilitates the analysis of temporal correlations in time series data on networks. -It uses a principled model selection technique to infer higher-order graphical representations that capture both topological and temporal characteristics. -It specifically allows to answer the question when a network abstraction of time series data is justified and when higher-order network representations are needed. - -The theoretical foundation of this package, **higher-order network models**, was developed in the following research works: - -1. I Scholtes: [When is a network a network? Multi-Order Graphical Model Selection in Pathways and Temporal Networks](http://dl.acm.org/citation.cfm?id=3098145), In KDD'17 - Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, Halifax, Nova Scotia, Canada, August 13-17, 2017 -2. I Scholtes, N Wider, A Garas: [Higher-Order Aggregate Networks in the Analysis of Temporal Networks: Path structures and centralities](http://dx.doi.org/10.1140/epjb/e2016-60663-0), The European Physical Journal B, 89:61, March 2016 -3. I Scholtes, N Wider, R Pfitzner, A Garas, CJ Tessone, F Schweitzer: [Causality-driven slow-down and speed-up of diffusion in non-Markovian temporal networks](http://www.nature.com/ncomms/2014/140924/ncomms6024/full/ncomms6024.html), Nature Communications, 5, September 2014 -4. R Pfitzner, I Scholtes, A Garas, CJ Tessone, F Schweitzer: [Betweenness preference: Quantifying correlations in the topological dynamics of temporal networks](http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.110.198701), Phys Rev Lett, 110(19), 198701, May 2013 - -`pathpy` extends this approach towards **multi-layer graphical models** that capture temporal correlations at multiple length scales simultaneously. -An illustrative example for a collection of paths (left) and a multi-order graphical representation is shown below. -All mathematical details of the framework can be found in this [recent research paper](http://dl.acm.org/citation.cfm?id=3098145). - -[![Watch promotional video](https://img.youtube.com/vi/CxJkVrD2ZlM/0.jpg)](https://www.youtube.com/watch?v=CxJkVrD2ZlM) - -Illustration of Multi-Order Model - -# Download and installation - -`pathpy` is pure python code. It has no platform-specific dependencies and should thus work on all platforms. -It builds on `numpy` and `scipy`. -The latest version of `pathpy` can be installed by typing: - -`> pip install git+git://github.com/IngoScholtes/pathpy.git` - -# Tutorial - -A [comprehensive educational tutorial](https://ingoscholtes.github.io/pathpy/tutorial.html) which shows how you can use `pathpy` to analyze data on pathways and temporal networks is [available online](https://ingoscholtes.github.io/pathpy/tutorial.html). -Moreover, a tutorial which illustrates the abstraction of **higher-order networks** in the modeling of dynamical processes in temporal networks is [available here](https://www.sg.ethz.ch/team/people/ischoltes/research-insights/temporal-networks-demo/). -The latter tutorial is based on the predecessor library [`pyTempNets`](https://github.com/IngoScholtes/pyTempNets). Most of its features have been ported to `pathpy`. - -# Documentation - -The code is fully documented via docstrings which are accessible through python's built-in help system. Just type `help(SYMBOL_NAME)` to see the documentation of a class or method. A [reference manual is available here](https://ingoscholtes.github.io/pathpy/hierarchy.html). - -# Releases and Versioning - -The first public beta release of pathpy (released February 17 2017) is [v1.0-beta](https://github.com/IngoScholtes/pathpy/releases/tag/v1.0-beta.1). -Following versions are named MAJOR.MINOR.PATCH according to [semantic versioning](http://semver.org/). -The date of each release is encoded in the PATCH version. - -# Acknowledgements - -The research behind this data analysis framework was funded by the Swiss State Secretariat for Education, Research and Innovation [(Grant C14.0036)](https://www.sg.ethz.ch/projects/seri-information-spaces/). -The development of this package was generously supported by the [MTEC Foundation](http://www.mtec.ethz.ch/research/support/MTECFoundation.html) in the context of the project [The Influence of Interaction Patterns on Success in Socio-Technical Systems: From Theory to Practice](https://www.sg.ethz.ch/projects/mtec-interaction-patterns/). - -# Contributors - -[Ingo Scholtes](http://www.ingoscholtes.net) (project lead, development) -Luca Verginer (development, test suite integration) -Roman Cattaneo (development) -Nicolas Wider (testing) - -# Copyright - -`pathpy` is licensed under the [GNU Affero General Public License](https://choosealicense.com/licenses/agpl-3.0/). +Introduction +============ + +``pathpy`` is an OpenSource python package for the analysis of time +series data on networks using **higher-order** and **multi-order** +graphical models. + +The package is specifically tailored to analyze temporal networks as +well as sequential data that capture multiple short, independent paths +observed in an underlying graph topology. Examples for data that can be +analysed with ``pathpy`` include time-stamped social networks, user +click streams in information networks, biological pathways, or traces of +information propagating in social media. Unifying the analysis of +pathways and temporal networks, ``pathpy`` provides various methods to +extract time-respecting paths from time-stamped network data. It extends +(and will eventually supersede) the package +```pyTempnets`` `__. + +``pathpy`` facilitates the analysis of temporal correlations in time +series data on networks. It uses a principled model selection technique +to infer higher-order graphical representations that capture both +topological and temporal characteristics. It specifically allows to +answer the question when a network abstraction of time series data is +justified and when higher-order network representations are needed. + +The theoretical foundation of this package, **higher-order network +models**, was developed in the following research works: + +1. I Scholtes: `When is a network a network? Multi-Order Graphical Model + Selection in Pathways and Temporal + Networks `__, In KDD'17 - + Proceedings of the 23rd ACM SIGKDD International Conference on + Knowledge Discovery and Data Mining, Halifax, Nova Scotia, Canada, + August 13-17, 2017 +2. I Scholtes, N Wider, A Garas: `Higher-Order Aggregate Networks in the + Analysis of Temporal Networks: Path structures and + centralities `__, The + European Physical Journal B, 89:61, March 2016 +3. I Scholtes, N Wider, R Pfitzner, A Garas, CJ Tessone, F Schweitzer: + `Causality-driven slow-down and speed-up of diffusion in + non-Markovian temporal + networks `__, + Nature Communications, 5, September 2014 +4. R Pfitzner, I Scholtes, A Garas, CJ Tessone, F Schweitzer: + `Betweenness preference: Quantifying correlations in the topological + dynamics of temporal + networks `__, + Phys Rev Lett, 110(19), 198701, May 2013 + +``pathpy`` extends this approach towards **multi-layer graphical +models** that capture temporal correlations at multiple length scales +simultaneously. An illustrative example for a collection of paths (left) +and a multi-order graphical representation is shown below. All +mathematical details of the framework can be found in this `recent +research paper `__. + +|Watch promotional video| + +Download and installation +========================= + +``pathpy`` is pure python code. It has no platform-specific dependencies +and should thus work on all platforms. It builds on ``numpy`` and +``scipy``. The latest version of ``pathpy`` can be installed by typing: + +``> pip install git+git://github.com/IngoScholtes/pathpy.git`` + +Tutorial +======== + +A `comprehensive educational +tutorial `__ which +shows how you can use ``pathpy`` to analyze data on pathways and +temporal networks is `available +online `__. +Moreover, a tutorial which illustrates the abstraction of **higher-order +networks** in the modeling of dynamical processes in temporal networks +is `available +here `__. +The latter tutorial is based on the predecessor library +```pyTempNets`` `__. Most of +its features have been ported to ``pathpy``. + +Documentation +============= + +The code is fully documented via docstrings which are accessible through +python's built-in help system. Just type ``help(SYMBOL_NAME)`` to see +the documentation of a class or method. A `reference manual is available +here `__. + +Releases and Versioning +======================= + +The first public beta release of pathpy (released February 17 2017) is +`v1.0-beta `__. +Following versions are named MAJOR.MINOR.PATCH according to `semantic +versioning `__. The date of each release is encoded +in the PATCH version. + +Acknowledgements +================ + +The research behind this data analysis framework was funded by the Swiss +State Secretariat for Education, Research and Innovation `(Grant +C14.0036) `__. +The development of this package was generously supported by the `MTEC +Foundation `__ +in the context of the project `The Influence of Interaction Patterns on +Success in Socio-Technical Systems: From Theory to +Practice `__. + +Contributors +============ + +| `Ingo Scholtes `__ (project lead, + development) +| Luca Verginer (development, test suite integration) +| Roman Cattaneo (development) +| Nicolas Wider (testing) + +Copyright +========= + +``pathpy`` is licensed under the `GNU Affero General Public +License `__. (c) Copyright ETH Zürich, Chair of Systems Design, 2015-2017 + +.. |Watch promotional video| image:: https://img.youtube.com/vi/CxJkVrD2ZlM/0.jpg + :target: https://www.youtube.com/watch?v=CxJkVrD2ZlM diff --git a/pathpy/__init__.py b/pathpy/__init__.py index bc3de6c..4634464 100644 --- a/pathpy/__init__.py +++ b/pathpy/__init__.py @@ -2,7 +2,7 @@ __author__ = """Ingo Scholtes""" __email__ = 'ischoltes@ethz.ch' -__version__ = '2.0.0' +__version__ = '2.0.0.dev1' from .classes import DAG from .classes import Paths diff --git a/setup.cfg b/setup.cfg index 4f1a368..a62e93a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,16 +1,8 @@ [bumpversion] -current_version = 1.2.1 +current_version = 2.0.0 commit = True tag = True -[bumpversion:file:setup.py] -search = version='{current_version}' -replace = version='{new_version}' - -[bumpversion:file:pathpy/__init__.py] -search = __version__ = '{current_version}' -replace = __version__ = '{new_version}' - [bdist_wheel] universal = 1 diff --git a/setup.py b/setup.py index a12246f..fdb9adf 100644 --- a/setup.py +++ b/setup.py @@ -2,44 +2,44 @@ # -*- coding: utf-8 -*- """The setup script.""" + from setuptools import setup, find_packages +from pathpy import __version__ -with open('README.rst') as readme_file: - readme = readme_file.read() -with open('HISTORY.rst') as history_file: +with open('README.rst') as readme_file, open('HISTORY.rst') as history_file: + readme = readme_file.read() history = history_file.read() -requirements = ["numpy", "scipy"] +install_requirements = ['numpy', 'scipy'] setup_requirements = ['pytest-runner'] -test_requirements = ['pytest'] - setup( author="Ingo Scholtes", author_email='ischoltes@ethz.ch', + license='AGPL-3.0+', classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: Science/Research', 'Topic :: Scientific/Engineering :: Information Analysis', - 'License :: OSI Approved :: AGPL-3.0+ License', + 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', ], - description="A python package for the analysis of sequential data on pathways and temporal networks from the perspective of higher-order network models.", - install_requires=requirements, + description="A python package for the analysis of sequential data on pathways and " + "temporal networks from the perspective of higher-order network models.", + install_requires=install_requirements, + setup_requires=setup_requirements, long_description=readme + '\n\n' + history, include_package_data=True, - keywords='pathpy', + python_requires='>=3.5', + keywords='network analysis temporal networks pathways sequence modeling graph mining', name='pathpy', - packages=find_packages(include=['pathpy']), - setup_requires=setup_requirements, + packages=find_packages(), test_suite='tests', - tests_require=test_requirements, url='https://github.com/IngoScholtes/pathpy', - version='2.0.0', - zip_safe=False, - data_files=[('.', ['DESCRIPTION.rst', 'README.rst', 'HISTORY.rst'])] + version=__version__, + zip_safe=False )