从时间序列到图形的可见性算法。
visibility_graph的Python项目详细描述
此python包是 文章:From time series to complex networks: The visibility graph。
安装
安装库,可能在virtualenv中:
$ pip install visibility_graph
应用程序编程接口
将序列作为列表传递,可见性图将返回networkX 无向图。节点包含其时间点上的震级。
>>> from visibility_graph import visibility_graph >>> series = [0.87, 0.49, 0.36, 0.83, 0.87] >>> g = visibility_graph( series ) >>> >>> g.nodes() [0, 1, 2, 3, 4] >>> g.edges() [(0, 1), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] >>> >>> g.node[1] {'mag': 0.49}
系列到边缘列表
提供了一个命令行脚本:
$ series2edgelist.py series.csv
其中series.csv是一个每行包含一个时间点的文件。一个 可以指定多个系列文件:
$ series2edgelist.py series1.csv series2.csv seriesN.csv
脚本还将从标准输入中读取一个系列:
$ cat series.csv | series2edgelist.py
边缘列表将打印到标准输出。所以这也许是明智的 收件人:
$ cat series.csv | series2edgelist.py > series.edgelist
要点
在这个图中,每个节点以相同的顺序对应于串联数据,如果在对应的数据之间存在可见性,则连接两个节点,也就是说,如果存在一个连接串行数据的直线,只要这个“可见度线”不与任何中间数据高度相交。“更正式地说,我们可以建立以下可见性标准:如果放置在它们之间的任何其他数据(t c,yc)满足以下条件,则两个任意数据值(t a,ya)和(t b,yb)将具有可见性,并因此成为关联图的两个连接节点:”