An open API service indexing awesome lists of open source software.

https://github.com/openworm/bionet

Artificial biological neural network
https://github.com/openworm/bionet

Last synced: 4 months ago
JSON representation

Artificial biological neural network

Awesome Lists containing this project

README

          

Bionet
======

#Artificial biological neural network

Bionet simulates a biologically inspired neural network composed of
sensory neurons, interneurons, and motor neurons which can be connected
in arbitrary configurations. Signals propagate through the network one
synapse at a time. A network behavior is defined as a sequence of
sensory-motor neuron firings.

Bionet also possesses a network morphogenesis capability:
An isomorphic network reproduces the behaviors of another network
without knowing its interneuron configuration. A homomorphic network
additionally mirrors the interneuron configuration of the other network.

Bionet was inspired by OpenWorm (openworm.org), a project to model the
C. elegans nematode worm in a high fidelity artificial creature. Although
the connectome (neural network) of the worm is known, it is not known
how it produces sensory-motor behaviors. Bionet is an attempt to do this.
A network containing the C. elegans connectome is supplied with
the distribution: CElegans_network.txt. This network has random weights
and can be used to produce sensory-motor behavior sequences. The goal
is to evolve other networks that perform the same behaviors, not
knowing the original network weights. Since C. elegans has more than
3000 synapses, this is a daunting task. However, accomplishing it would
be a significant step toward programming an artificial C. elegans.

In addition to Bionet, see the CElegans/Readme.txt for related projects
that are specific to C. elegans.

##Required packages:
```
1. UNIX: the gcc compiler, make command, and the bash shell.
2. Windows: Microsoft Visual C++ 2012 (or later) IDE.
3. Pthreads.
```
##Optional packages:
```
1. Fourier Transform undulation behavior evaluation:
FFTW3 Fourier Transform package: www.fftw.org
2. NEURON simulator evaluation:
a. Generate and export C. elegans simulation with NeuroConstruct:
github.com/openworm/OpenWorm/wiki/Running-the-C.-elegans-model-in-neuroConstruct
b. Evaluate with NEURON simulator: www.neuron.yale.edu/neuron/
c. If you have to compile sim/model/mod files for a new platform, see:
www.neuron.yale.edu/neuron/faq#compilemod
For example, to compile under UNIX/Linux:
Run "modlunit filename" on each mod file, then run nrnivmodl to compile.
3. c302 simulator evaluation:
a. Install python with neuroml, numpy, etc. packages. (Anaconda installs these).
b. Install jNeuroML using link from c302 README:
github.com/openworm/CElegansNeuroML/tree/master/CElegans/pythonScripts/c302
c. Download CElegansNeuroML from github.com/openworm/CElegansNeuroML
into sim directory and unzip.
d. Create sim/CElegansNeuroML/CElegans/pythonScripts/c302/c302_network.txt file with format:
Cells:

...
Synapses:

(Example: "ADAL AIBL 0.5")
...
Stimuli:

...
```
###To build:
```
UNIX:
1. 'make'
2. For Fourier Transform undulation behavior evaluation: 'make fft_undulation_eval'

Windows: use VC++ solution and project files.
```
###Commands:

**Create network:**
```
bionet
-createNetwork
-numNeurons
-numSensors
-numMotors
[-inhibitorDensity ]
[-synapsePropensity ]
[-minSynapseWeight ]
[-maxSynapseWeight ]
[-randomSeed ]
[-saveNetwork ]
[-graphNetwork ]
```
**Print network:**
```
bionet
-printNetwork
[-connectivity (also print connectivity)]
-loadNetwork
```
**Graph network:**
```
bionet
-graphNetwork
[-title ]
-loadNetwork
```
**Create network behaviors:**
```
bionet (create random behaviors)
-createNetworkBehaviors
-loadNetwork
-behaviorLengths
[-saveBehaviors ]
[-randomSeed ]
```

```
bionet (create motor outputs from given sensor inputs)
-createNetworkBehaviors
-loadNetwork
-loadSensorBehaviors
[-saveBehaviors ]
[-randomSeed ]
```

```
bionet (create undulation behavior movements)
-createNetworkBehaviors
-loadNetwork
-undulationMovements
[-saveBehaviors
(behavior 0: with light touch stimulation; behavior 1: without stimulation)]
[-randomSeed ]
```
**Test network behaviors:**
```
bionet
-testNetworkBehaviors
-loadNetwork
-loadBehaviors
[-motorDeltaTolerance ]
```

**Print network behaviors:**

```
bionet
-printNetworkBehaviors
-loadBehaviors
```
**Create homomorphic networks:**
```
bionet (new morph)
-createHomomorphicNetworks
-loadBehaviors
-loadNetwork
-populationSize
-numOffspring
[-parentLongevity ]
-numGenerations
[-behaveCutoff ]
[-behaveQuorum
(defaults to immediate testing of entire behavior sequences)
[]]
[-fitnessMotorList
(defaults to fitness evaluation of all motor outputs)]
-crossoverRate
-mutationRate
-synapseWeights
-synapseCrossoverBondStrength
-synapseOptimizedPathLength
-saveMorph and/or -saveNetworks []
[-randomSeed ]
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```
```
bionet (resume morph)
-createHomomorphicNetworks
-loadBehaviors
-loadMorph
-numGenerations
[-behaveCutoff ]
[-fitnessMotorList
(defaults to loaded list)]
[-crossoverRate (defaults to loaded value)]
[-mutationRate (defaults to loaded value)]
[-synapseCrossoverBondStrength ]
[-synapseOptimizedPathLength ]
-saveMorph and/or -saveNetworks []
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```

```
bionet (new undulation behavior morph)
-createHomomorphicNetworks
-undulationMovements
-loadNetwork
-populationSize
-numOffspring
[-parentLongevity ]
-numGenerations
-crossoverRate
-mutationRate
-synapseWeights
-synapseCrossoverBondStrength
-synapseOptimizedPathLength
-saveMorph and/or -saveNetworks []
[-randomSeed ]
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```

```
bionet (resume undulation behavior morph)
-createHomomorphicNetworks
-undulationMovements
-loadMorph
-numGenerations
[-crossoverRate (defaults to loaded value)]
[-mutationRate (defaults to loaded value)]
[-synapseCrossoverBondStrength ]
[-synapseOptimizedPathLength ]
-saveMorph and/or -saveNetworks []
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```

```
bionet (new morph with NEURON network simulator evaluation)
-createHomomorphicNetworks
-neuronExec
-simDir
-simHocFile
-loadNetwork
-populationSize
-numOffspring
[-parentLongevity ]
-numGenerations
-crossoverRate
-mutationRate
-synapseWeights
-synapseCrossoverBondStrength
-synapseOptimizedPathLength
-saveMorph and/or -saveNetworks []
[-randomSeed ]
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```

```
bionet (resume morph with NEURON simulator evaluation)
-createHomomorphicNetworks
-neuronExec
-simDir
-simHocFile
-loadMorph
-numGenerations
[-crossoverRate (defaults to loaded value)]
[-mutationRate (defaults to loaded value)]
[-synapseCrossoverBondStrength ]
[-synapseOptimizedPathLength ]
-saveMorph and/or -saveNetworks []
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```

```
bionet (new morph with c302 simulator evaluation)
-createHomomorphicNetworks
-jnmlCmd
-simDir
-loadNetwork
-populationSize
-numOffspring
[-parentLongevity ]
-numGenerations
-crossoverRate
-mutationRate
-synapseWeights
-synapseCrossoverBondStrength
-synapseOptimizedPathLength
-saveMorph and/or -saveNetworks []
[-randomSeed ]
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```

```
bionet (resume morph with c302 simulator evaluation)
-createHomomorphicNetworks
-jnmlCmd
-simDir
-loadMorph
-numGenerations
[-crossoverRate (defaults to loaded value)]
[-mutationRate (defaults to loaded value)]
[-synapseCrossoverBondStrength ]
[-synapseOptimizedPathLength ]
-saveMorph and/or -saveNetworks []
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```
**Merge homomorphic network populations:**
```
bionet
-mergeHomomorphicNetworks
-loadMorph
-saveMorph
[-randomSeed ]
```
**Create isomorphic networks:**
```
bionet (new morph)
-createIsomorphicNetworks
-loadBehaviors
-populationSize
-numMutants
-numGenerations
[-behaveQuorum
(defaults to immediate testing of entire behavior sequences)
[]]
-excitatoryNeurons
-inhibitoryNeurons
-synapsePropensities
-synapseWeights
-saveMorph and/or -saveNetworks []
[-randomSeed ]
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```
```
bionet (resume morph)
-createIsomorphicNetworks
-loadBehaviors
-loadMorph
-numGenerations
-saveMorph and/or -saveNetworks []
[-logMorph (instead of standard output)]
[-numThreads (defaults to system capacity)]
```