.. _what_is_deepgraph:
*****************
What is DeepGraph
*****************
DeepGraph is an open source `Python `_ implementation
of a network representation introduced
`here `_. Its purpose is to facilitate
data analysis by interpreting data in terms of
`network theory `_.
The basis of this software package is `Pandas `_, a
fast and flexible data analysis tool for the Python programming language.
Utilizing one of its primary data structures, the
`DataFrame `_,
we represent objects (i.e. the nodes of a network) by one DataFrame, and their
pairwise relations (i.e. the edges of a network) by another DataFrame.
One of the main features of DeepGraph is an efficient and scalable creation of
edges. Given a set of nodes in the form of a DataFrame (or an on disc
`HDFStore `_),
DeepGraph's :py:meth:`core class ` provides
:ref:`methods ` to iteratively compute pairwise relations
between the nodes (e.g. similarity/distance measures) using arbitrary, user-defined
functions on the nodes' features. These methods provide arguments to
parallelize the computation and control memory consumption, making them
suitable for very large data-sets and adjustable to whatever hardware you have
at hand (from netbooks to cluster architectures).
Furthermore, once a graph is constructed, DeepGraph allows you to partition its
:py:meth:`nodes `,
:py:meth:`edges ` or the entire
:py:meth:`graph ` by the
graph's properties and labels, enabling the aggregation, computation and
allocation of information on and between arbitrary *groups* of nodes. These
methods also let you express elaborate queries on the information contained in
a deep graph.
DeepGraph is not meant to replace or compete with already existing Python
network libraries, such as `NetworkX `_ or
`graph\_tool `_, but rather to combine and
extend their capabilities with the merits of Pandas. For that matter, the core
class of DeepGraph provides :ref:`interfacing methods ` to
convert to common network representations and graph objects of popular Python
network packages.
Deepgraph also implements a number of useful
`plotting methods `_,
including drawings on geographical map projections.
It's also possible to represent :ref:`multilayer networks ` by
deep graphs. We're thinking of implementing an interface to a suitable package
dedicated to the analysis of multilayer networks.
.. note::
Please acknowledge the authors and cite the use of this software when results
are used in publications or published elsewhere. Various citation formats are
available here:
https://dx.doi.org/10.1063/1.4952963
For your convenience, you can find the BibTex entry below:
::
@Article{traxl-2016-deep,
author = {Dominik Traxl AND Niklas Boers AND J\"urgen Kurths},
title = {Deep Graphs - A general framework to represent and analyze
heterogeneous complex systems across scales},
journal = {Chaos},
year = {2016},
volume = {26},
number = {6},
eid = {065303},
doi = {http://dx.doi.org/10.1063/1.4952963},
eprinttype = {arxiv},
eprintclass = {physics.data-an, cs.SI, physics.ao-ph, physics.soc-ph},
eprint = {http://arxiv.org/abs/1604.00971v1},
version = {1},
date = {2016-04-04},
url = {http://arxiv.org/abs/1604.00971v1}
}
**To get started, have a look at**
- :ref:`Installation of DeepGraph `
- :ref:`DeepGraph's Tutorials `
- :ref:`API Reference `
.. note::
This documentation assumes general familiarity with
`NumPy `_ and `Pandas `_.
If you haven’t used these packages, do invest some time in learning about
them first.
.. note::
DeepGraph is free software; you can redistribute it and/or modify it under
the terms of the BSD-3-Clause License. We highly welcome contributions from the community.