Conedy is a scientific tool for the numerical integration of dynamical systems whose mutual couplings are described by a network. Its name is an abbreviation of “Complex Networks Dynamics”.

Conedy supports different dynamical systems with various integration schemes, including ordinary differential equations, iterated maps, stochastic differential equations, and pulse coupled oscillators which are handled via events. In addition, it provides a simple way to handle arbitrary node dynamics. Each dynamical system is associated with a node in a network and edges between such nodes represent couplings. Conedy provides functions to build a network from various node and edge types.

Initial conditions and parameters can be chosen individually or drawn from random distributions. Conedy can numerically integrate the coupled system while sampling user-defined observables in periodic intervals. Conedy was designed with focus on execution time and memory efficiency and allows the user to decide about performance issues at compile time.

Conedy can be interfaced via Python bindings (recommended) or with a built-in script interpreter, using a C-like syntax. The latter may be useful if you want to distribute computations onto a cluster as the interpreter can easily be linked statically (in contrast to Python) and also has support for the Condor job management system. Because the main syntax difference is that commands are separated by semicola instead of new lines, we only refer to the Python interface in most of this manual. However, there also is a chapter devoted to the script interpreter and its features.

In the following, a short example is given which shows how to use the Python bindings to obtain time series from coupled dynamical systems.

Short Example

We create a simple network with two nodes, one with Rössler and one with Lorenz dynamics. We add a directed edge, coupling the Rössler oscillator into the Lorenz oscillator, and observe the oscillators for some time:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import conedy as co

# Create an empty network, …
N =

# add the nodes, …
nodeNumberRoessler = N.addNode(co.roessler())
nodeNumberLorenz = N.addNode(co.lorenz())

# and connect them with a directed edge with weight 1.0 (Roessler to Lorenz).
N.addEdge(nodeNumberLorenz, nodeNumberRoessler, co.weightedEdge(1.))

# Set the oscillators’ intial states.
N.setState(nodeNumberRoessler, 0., 0., 0.)
N.setState(nodeNumberLorenz, 1., 1., 1.)

# Let 100.0 units of time pass, in order for transients to die out.
N.evolve(0., 100.)

# Set the time and each oscillator’s third component (zero-based) to be written to the file roesslerLorenzOut.
N.observe(nodeNumberRoessler, "roesslerLorenzOut", co.component(2))
N.observe(nodeNumberLorenz, "roesslerLorenzOut", co.component(2))

# Let 400.0 units of time pass.

Voilà: Now we have timeseries of the two coupled oscillators written to a text file.

Of course there are more ways to configure the desired network and dynamics. For a more detailed overview of Conedy’s features take a look at the tutorial.


conedy (0.264)

  • various bugfixes
  • added classes directedNetwork and undirectedNetwork classes which have differing algorithms for functions like randomNetwork or rewire
  • some streamlining between the python extension and the interpreter

conedy (0.263)

  • various bugfixes

—Alexander Rothkegel <> Wed, 08 May 2013 14:37:09 +0200

conedy (0.262)

  • fixed automatic compilation

—Alexander Rothkegel <> Sun, 14 Oct 2012 18:38:43 +0200

conedy (0.261)

  • various bugfixes

—Alexander Rothkegel <> Fri, 8 Jun 2012 12:46:55 +0100

conedy (0.260)

  • added defines variable to config.h, which allows to specify the desired numeric basetype (double, long double, etc.) and priority queue.
  • Conedy compiles now in userspace new taregts conedy-root python-conedy-root are introduced for system-wide installs.
  • global parameters like “samplingTime” now have sensible types

—Alexander Rothkegel <> Fri, 8 Jun 2012 12:46:55 +0100

conedy (0.251)

  • some bugfixes

—Alexander Rothkegel <> Fri, 27 Jan 2012 11:44:36 +0100

conedy (0.25)

  • aligned syntax of python bindings and script interpreter
  • complete overhaul of the documentation
  • more arithmetic in the script interpreter

—Alexander Rothkegel <> Tue, 04 Dec 2011 11:44:36 +0100

conedy (0.24)
  • changed names of some complicated tokens, e. g dynNetwork_ioNodedt ->

samplingTime * added setState function for templates * node templates can be created with user-defined parameters in python * ode, sde and map are coupled in the expected direction

– Alexander Rothkegel <> Tue, 08 Nov 2011 11:44:36 +0100

conedy (0.23-1)

  • added a calendar queue as alternative to the relaxed heap

—Alexander Rothkegel <> Sun, 31 Oct 2011 11:44:36 +0100

conedy (0.22-1)

  • added missing files
  • automatic testing of recompilation

—Alexander Rothkegel <> Sun, 09 Oct 2011 11:44:36 +0100

conedy (0.21-1)

  • various changes to allow compilation with msvc
  • match nodeblueprint if all parameter are the same.
  • adding setParam-function
  • added support for error-controlled integration by the gsl
  • renamed addVertex to addNode
  • added observeComponents
  • multiple sde/ode- integrators

—Alexander Rothkegel <> Mon, 29 Aug 2011 02:33:30 +0100

conedy (0.20-1)

  • containerNodes can now dynamically increase the size of the container
  • write files binary by setting streamOutNode_binary = 1

—Alexander Rothkegel <> Mon, 13 Jun 2011 02:33:30 +0100

conedy (0.19-1)

  • added missing file debian/conedy-src.install

—Alexander Rothkegel <> Mon, 28 Mar 2011 15:49:14 +0100

conedy (0.18-1)

  • recompilation support seems to be working
  • added /etc/conedy.config as global config file

—Alexander Rothkegel <> Thu, 17 Mar 2011 15:49:14 +0100

conedy (0.17-1)

  • various bug fixes/ all scripts in testing seem to be working
  • evolve now issues a snapshot at begin of simulation time

—Alexander Rothkegel <> Sun, 14 Mar 2011 15:49:14 +0100

conedy (0.16-1)

  • added many edges
  • various bug fixes

—Alexander Rothkegel <> Sun, 09 Mar 2011 15:49:14 +0100

conedy (0.15-1)

  • compiles on lenny 32 bit, at last

—Alexander Rothkegel <> Sun, 01 Mar 2011 15:49:14 +0100

conedy (0.14-1)

  • let config.h guess number of cpus
  • included createFromMatrix
  • varios bug fixes

—Alexander Rothkegel <> Sun, 22 Feb 2011 15:49:14 +0100

conedy (0.13-1)

  • varios bug fixes
  • included stdSdeIntegrator strong scheme 1.5 integrator for sdes
  • included gslOdeNode, numerical integration by the gsl

—Alexander Rothkegel <> Sun, 20 Feb 2011 15:49:14 +0100

conedy (0.12rc-1)

  • Initial release

—Alexander Rothkegel <> Tue, 09 Nov 2010 15:49:14 +0100

Free Software

Conedy is free software licensed under the GPL:

Conedy is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

Table Of Contents

Previous topic

Welcome to Conedy’s documentation!

Next topic