Skip to content

Commit

Permalink
pip upload works #65
Browse files Browse the repository at this point in the history
  • Loading branch information
verginer committed Jul 13, 2018
1 parent fb43574 commit 946be69
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 97 deletions.
8 changes: 7 additions & 1 deletion Makefile
Expand Up @@ -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
Expand Down
198 changes: 129 additions & 69 deletions README.rst
@@ -1,71 +1,131 @@
<img src="https://github.com/IngoScholtes/pathpy/blob/master/pathpy_logo.png" width="300" alt="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)

<img src="https://github.com/IngoScholtes/pathpy/blob/master/multiorder.png" width="500" alt="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`` <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|

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/>`__.

(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
2 changes: 1 addition & 1 deletion pathpy/__init__.py
Expand Up @@ -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
Expand Down
10 changes: 1 addition & 9 deletions 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

Expand Down
34 changes: 17 additions & 17 deletions setup.py
Expand Up @@ -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
)

0 comments on commit 946be69

Please sign in to comment.