# Supplementary info for: State dependent computation using coupled recurrent networks

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

## Introduction

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)

## Links

The following two java packages were used:

- dk.brics.automaton, Java DFA implementation. Used to minimize DFAs (included in above download).
- 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.

## Tutorial

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.

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 generateRandomDFAs.java

`generateTestStrings.m`

, which uses generateTestStrings.java

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.

## Contact

Authors: Ueli Rutishauser and Rodney Douglas.

Last modified: 10/26/08 urut