Skip to content

russellfunk/cdindex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cdindex

Documentation Status

cdindex is a Python package, written in C, for computing the CD index and other dynamic measures on evolving directed graphs.

Install

Install the latest version of cdindex:

$ pip install cdindex

Simple example

Create a graph with some dummy data and compute the CD index:

>>> import cdindex
>>> import datetime
>>> from dateutil.relativedelta import relativedelta

>>> def get_t_delta(vertex, years):
      vertex_datetime = cdindex.datetime_from_timestamp(graph.timestamp(vertex))
      future_datetime = vertex_datetime + relativedelta(years=years)
      difference = future_datetime - vertex_datetime
      return int(difference.total_seconds())

>>> # dummy vertices for python module tests
>>> pyvertices= [{"name": "0Z", "time": datetime.datetime(1992, 1, 1)},
                 {"name": "1Z", "time": datetime.datetime(1992, 1, 1)},
                 {"name": "2Z", "time": datetime.datetime(1993, 1, 1)},
                 {"name": "3Z", "time": datetime.datetime(1993, 1, 1)},
                 {"name": "4Z", "time": datetime.datetime(1995, 1, 1)},
                 {"name": "5Z", "time": datetime.datetime(1997, 1, 1)},
                 {"name": "6Z", "time": datetime.datetime(1998, 1, 1)},
                 {"name": "7Z", "time": datetime.datetime(1999, 1, 1)}, 
                 {"name": "8Z", "time": datetime.datetime(1999, 1, 1)},
                 {"name": "9Z", "time": datetime.datetime(1998, 1, 1)},
                 {"name": "10Z", "time": datetime.datetime(1997, 1, 1)}]

>>> # dummy edges for python module tests
>>> pyedges = [{"source": "4Z", "target": "2Z"},
               {"source": "4Z", "target": "0Z"},
               {"source": "4Z", "target": "1Z"},
               {"source": "4Z", "target": "3Z"},
               {"source": "5Z", "target": "2Z"},
               {"source": "6Z", "target": "2Z"},
               {"source": "6Z", "target": "4Z"},
               {"source": "7Z", "target": "4Z"},
               {"source": "8Z", "target": "4Z"},
               {"source": "9Z", "target": "4Z"},
               {"source": "9Z", "target": "1Z"},
               {"source": "9Z", "target": "3Z"},
               {"source": "10Z", "target": "4Z"}]


>>> # create graph
>>> graph = cdindex.Graph()

>>> # add vertices
>>> for vertex in pyvertices:
      graph.add_vertex(vertex["name"], cdindex.timestamp_from_datetime(vertex["time"]))

>>> # add edges
>>> for edge in pyedges:
      graph.add_edge(edge["source"], edge["target"])

>>> graph.cdindex("4Z", get_t_delta("4Z", years=5))

>>> graph.mcdindex("4Z", get_t_delta("4Z", years=5))

Bugs

Please report any bugs to <russellfunk@gmail.com>.

License

Released under the GNU General Public License (GPL) (see LICENSE):

Copyright (C) 2024 Russell J. Funk <russellfunk@gmail.com>

Other implementations

Below is a list of other (known) implementations of the cdindex. Please contact us if you know of others.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published