https://github.com/jbrea/netsim

https://github.com/jbrea/netsim

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.1%) to scientific vocabulary
Last synced: 8 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: jbrea
  • License: other
  • Language: Julia
  • Default Branch: master
  • Size: 11.7 KB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 9 years ago · Last pushed about 9 years ago
Metadata Files
Readme License

README.md

NetSim

A framework for fast prototyping of (rate-based and spiking neural) networks.

Installation

julia Pkg.clone("https://github.com/jbrea/NetSim")

To visualize networks install graphviz (e.g. brew install graphviz on OSX or apt-get install graphviz on Ubuntu).

Example

```julia using NetSim

Define neuron and parameter types

type NoNeuronParameters <: NeuronParameters end

type InputNeuron <: Neuron outp::Array{Float64, 1} end function InputNeuron(nof::Int64, parameters::NoNeuronParameters) InputNeuron(rand(nof)) end

type MyNeuronParameters <: NeuronParameters gamma::Float64 end

type MyNeuron <: Neuron parameters::MyNeuronParameters membranePotential::Array{Float64, 1} outp::Array{Float64, 1} end function MyNeuron(nof::Int64, parameters::MyNeuronParameters) MyNeuron(parameters, zeros(nof), zeros(n_of)) end

define update and message collection function

import NetSim.updateneuron! function updateneuron!(neuron::MyNeuron) for i in 1:length(neuron.outp) neuron.membranePotential[i] *= neuron.parameters.gamma neuron.outp[i] = clamp(neuron.membranePotential[i], 0, 1) end end import NetSim.collectmessages! function collectmessages!(neuron::MyNeuron, inputconnections) weightedprerates!(neuron.membranePotential, inputconnections[:default], 1 - neuron.parameters.gamma) end

create a network

net = SimpleNetwork() addlayer!(net, Layer(:inputlayer, InputNeuron, NoNeuronParameters(), 5)) addlayer!(net, Layer(:firstlayer, MyNeuron, MyNeuronParameters(.8), 5)) connect!(net, :inputlayer, :firstlayer, One2OneConnection) connect!(net, :firstlayer, :firstlayer, StaticDenseConnection)

Visualize network if installation of GraphViz was successful

visualizenet(net)

define variables to record

recordedvariables = [("potential", net.layers[:firstlayer].neurons.membranePotential, 1); ("outp", net.layers[:firstlayer].neurons.outp, 1); ("inp", net.layers[:inputlayer].neurons.outp, 1:5)]

initialize the state of the neurons and run the network for 10^2 steps

net.layers[:firstlayer].neurons.membranePotential[:] = -rand(5) data = monitor(net, recordedvariables, 10^2)

using PyPlot plot(data["potential"], label = "potential of neuron 1") plot(data["outp"], label = "output of neuron 1") plot(data["inp"][:, 1], label = "input") plt:legend ```

Owner

  • Login: jbrea
  • Kind: user

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels