Supplementary info for: State dependent computation using coupled recurrent networks

Copyright (c) 2006-2014 by Ueli Rutishauser, Rodney Douglas. All rights reserved.


This page contains supplementary information for our paper on using coupled recurrent maps to implement state dependent computations. Note that this is experimental software whose main purpose is to aid experimentation. The code offered here is a minimal version of what was used to generate the figures in the paper. It does not cover all the features shown in the paper.

The paper

U. Rutishauser, R.J. Douglas. State dependent computation using coupled recurrent networks. Neural computation, 21(2):478-509, 2009. (abstract) (pdf)

Demos and Source code

Download the package

The readme.txt

requirements: Java compiler+runtime, Matlab, JFLAP (see below)


The following two java packages were used:
  1. dk.brics.automaton, Java DFA implementation. Used to minimize DFAs (included in above download).
  2. JFLAP. Graphical tool (java) to modify DFAs. Our software uses the same XML format. We use JFLAP to edit/modify DFAs before converting them to weight matrices. 
DAISY Project: this project is part of the DAISY framework.


This tutorial gives a step-by-step demonstration of converting a DFA, designed in JFLAP, to a WTA. Please read the readme.txt file before going through this tutorial. Here, we assume that our DFAWTA package, java, matlab as well as JFLAP is installed and functional.

Step 0: Install and configure your software (assuming Java+Matlab are already installed)

Download the DFAWTA package (see above)
Download and install JFLAP (see above)
Configure the DFAWTA package (see readme.txt; adjust paths in getParams.m)

Step 1: Create DFA in JFLAP.

Start JFLAP: java -jar JFLAP.jar
Choose "Finite Automaton"
Design your DFA. For example, we designed the following DFA and store it as ex1.jff.


Step 2: Convert XML file (*.jff) to internal representation
Switch to Matlab.
Open mainRunSimulation.m, set fname='ex1.jff'.
Define a string of symbols that will lead to the accept state by setting. For this example, testString='aaabbaa'.
The functions convertJFLAPtoWeights.m and convertJFLAPtoMatlab.m are used to read the XML file and convert it into a weight matrix, using the rules described in the paper.

Step 3: Run simulation in matlab
Execute mainRunSimulation.m. This reads the XML file, creates the weight matrices and runs the simulation for the necessary number of timesteps to process the indicated test string. This will produce the screenshots shown below. The first one is the weight matrix which was created based on the description of the WTA. The second is the result of the simulation. See the paper for details about these plots.

Screenshot of weight matrix
Screenshot simulation result

Step 4: Additional utilities provided
Files which weren't used for the above simulation but which are useful for more advanced work are:

Functions to automatically generate random minimized DFAs as well as random teststrings that lead to the accept state:
generateRandomDFA.m, which uses
generateTestStrings.m, which uses
DFA functionality is implemented by calling functions inside the dk.brics.automaton package (automaton.jar, included).

For studying the fundamental properties of state dependence in WTA networks, a simplified version is provided:
mainSimpleRecurrence.m, runSimpleRecurrence.m

In this version, all differential equations are explicitely written out for every variable. Study this file first if you're trying to understand the mathematical properties of the network.


Authors: Ueli Rutishauser and Rodney Douglas.

Last modified: 10/26/08 urut