sorn

sorn: A Python package for Self Organizing Recurrent Neural Network - Published in JOSS (2021)

https://github.com/saran-nns/sorn

Science Score: 98.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

associative-networks autonomous-agents bolzmann-machines brain-inspired-computing complex-networks cortical-learning cortical-network hebbian-learning hopfield-network machine-learning neuro-computing neuroinformatics neuroplasticity point-neurons reinforcement-learning reservoir-computing self-organizing-criticality self-organizing-network sorn

Scientific Fields

Mathematics Computer Science - 84% confidence
Last synced: 4 months ago · JSON representation ·

Repository

PyPi Package of Self-Organizing Recurrent Neural Networks (SORN) and Neuro-robotics using OpenAI Gym

Basic Info
  • Host: GitHub
  • Owner: Saran-nns
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 33.2 MB
Statistics
  • Stars: 38
  • Watchers: 3
  • Forks: 3
  • Open Issues: 0
  • Releases: 14
Topics
associative-networks autonomous-agents bolzmann-machines brain-inspired-computing complex-networks cortical-learning cortical-network hebbian-learning hopfield-network machine-learning neuro-computing neuroinformatics neuroplasticity point-neurons reinforcement-learning reservoir-computing self-organizing-criticality self-organizing-network sorn
Created almost 7 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation Zenodo

README.md

Self-Organizing Recurrent Neural Networks

SORN is a class of neuro-inspired artificial network build based on plasticity mechanisms in biological brain and mimic neocortical circuits ability of learning and adaptation. SORN consists of pool of excitatory neurons and small population of inhibitory neurons which are controlled by 5 plasticity mechanisms found in neocortex, namely Spike Timing Dependent Plasticity (STDP), Intrinsic Plasticity (IP), Synaptic Scaling (SS),Synaptic Normalization(SN) and inhibitory Spike Timing Dependent Plasticity (iSTDP). Using mathematical tools, SORN network simplifies the underlying structural and functional connectivity mechanisms responsible for learning and memory in the brain

'sorn' is a Python package designed for Self Organizing Recurrent Neural Networks. It provides a research environment for computational neuroscientists to study the self-organization, adaption, learning,memory and behavior of brain circuits by reverse engineering neural plasticity mechanisms. Further to extend the potential applications of sorn, a demostrative example of a neuro-robotics experiment using OpenAI gym is also documented.

Build Status codecov Documentation Status PyPI version Code style: black Downloads DOI License: MIT Open In Colab status

SORN Reservoir

Installation

python pip install sorn

or to install the latest version from the development branch

python pip install git+https://github.com/Saran-nns/sorn

Dependencies

SORN supports Python 3.7+ ONLY. For older Python versions please use the official Python client. To install all optional dependencies,

python pip install 'sorn[all]'

Usage

Plasticity Phase

```python import sorn from sorn import Simulator import numpy as np

Sample input

numfeatures = 10 timesteps = 200 inputs = np.random.rand(numfeatures,timesteps)

Simulate the network with default hyperparameters under gaussian white noise

statedict, simdict = Simulator.run(inputs=inputs, phase='plasticity', state=None, noise=True, timesteps=time_steps, callbacks=["ExcitatoryActivation", "WEE", "EEConnectionCounts"])

Network Initialized Number of connections in Wee 3909 , Wei 1574, Wie 8000 Shapes Wee (200, 200) Wei (40, 200) Wie (200, 40) ```

Training Phase

```python from sorn import Trainer

NOTE: During training phase, input to sorn should have second (time) dimension set to 1. ie., input shape should be (input_features,1).

inputs = np.random.rand(num_features,1)

SORN network is frozen during training phase

statedict, simdict = Trainer.run(inputs= inputs, phase='training', state=statedict, noise=False, timesteps=1, ne=100, nu=numfeatures, lambdaee=10, etastdp=0.001, callbacks=["InhibitoryActivation", "WEI", "EIConnectionCounts"] ) ```

Network Output Descriptions

state_dict - Dictionary of connection weights (Wee, Wei, Wie) , Excitatory network activity (X), Inhibitory network activities(Y), Threshold values (Te, Ti)

sim_dict - Dictionary of network states and parameters collected during the simulation/training: Provided, all available options of the argument callbacks, then the sim_dict should contain the following;

  "ExcitatoryActivation" - Excitatory network activity of entire simulation period

  "InhibitoryActivation" - Inhibitory network activity of entire simulation period

  "RecurrentActivation" - Recurrent network activity of entire simulation period

  "EEConnectionCounts" - Number of active connections in the Excitatory pool at each time step

  "EIConnectionCounts" - Number of active connections from Inhibitory to Excitatory pool at each time step

  "TE" - Threshold values of excitatory neurons at each time step

  "TI" - Threshold values of inhibitory neurons at each time step

  "WEE" - Synaptic efficacies between excitatory neurons

  "WEI" - Connection weights from inhibitory to excitatory neurons

  "WIE" - Connection weights from excitatory to inhibitory neurons

Documentation

For detailed documentation about development, analysis, plotting methods and a sample experiment with OpenAI Gym, please visit SORN Documentation

Citation

Python @article{Nambusubramaniyan2021, doi = {10.21105/joss.03545}, url = {https://doi.org/10.21105/joss.03545}, year = {2021}, publisher = {The Open Journal}, volume = {6}, number = {65}, pages = {3545}, author = {Saranraj Nambusubramaniyan}, title = {`sorn`: A Python package for Self Organizing Recurrent Neural Network}, journal = {Journal of Open Source Software} }

Contributions

I am welcoming contributions. If you wish to contribute, please create a branch with a pull request and the changes can be discussed there. If you find a bug in the code or errors in the documentation, please open a new issue in the Github repository and report the bug or the error. Please provide sufficient information for the bug to be reproduced.

Owner

  • Name: Saranraj Nambusubramaniyan
  • Login: Saran-nns
  • Kind: user
  • Location: Chemnitz

Comp. Neuroscience, Deep RL, State-space & Generative models. Professional account @sarannns

JOSS Publication

sorn: A Python package for Self Organizing Recurrent Neural Network
Published
September 12, 2021
Volume 6, Issue 65, Page 3545
Authors
Saranraj Nambusubramaniyan ORCID
Indian center for Robotics Innovation and Smart-intelligence(IRIS-i), India, Institute of Cognitive Science, Universität Osnabrück, Germany
Editor
Rachel Kurchin ORCID
Tags
Spiking Neural Network OpenAI Gym Neuromorphic computing Neuroscience Self Organizing Networks Hebbian Learning Associative Networks

Citation (CITATION.cff)

cff-version: 1.1.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Nambusubramaniyan
    given-names: Saranraj
    orcid: https://orcid.org/0000-0002-7314-0261
title: Saran-nns/sorn: Stable pre-release of Self Organizing Recurrent Neural Network
version: v0.6.2-beta
date-released: 2021-09-08
doi: "10.5281/zenodo.5496017"
url: "https://github.com/saran-nns/sorn"

preferred-citation:
  type: article
  authors:
  - family-names: Nambusubramaniyan
    given-names: Saranraj
    orcid: https://orcid.org/0000-0002-7314-0261
  doi: "10.21105/joss.03545"
  journal: "JOSS"
  title: sorn: A Python package for Self Organizing Recurrent Neural Network

GitHub Events

Total
  • Watch event: 5
Last Year
  • Watch event: 5

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 948
  • Total Committers: 2
  • Avg Commits per committer: 474.0
  • Development Distribution Score (DDS): 0.363
Past Year
  • Commits: 10
  • Committers: 1
  • Avg Commits per committer: 10.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
saran_nns s****s@h****m 604
Saran-nns s****s@o****m 344

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 23
  • Total pull requests: 24
  • Average time to close issues: 28 days
  • Average time to close pull requests: about 13 hours
  • Total issue authors: 6
  • Total pull request authors: 3
  • Average comments per issue: 1.7
  • Average comments per pull request: 0.54
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 10 minutes
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Saran-nns (13)
  • janfreyberg (3)
  • janfb (3)
  • wardnath (2)
  • Delwddrylliwr (1)
  • pyup-bot (1)
Pull Request Authors
  • Saran-nns (19)
  • pyup-bot (5)
  • dependabot[bot] (1)
Top Labels
Issue Labels
bug (4) enhancement (3) question (3) duplicate (2) good first issue (2) invalid (1)
Pull Request Labels
enhancement (2) dependencies (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 1,338 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 64
  • Total maintainers: 1
pypi.org: sorn

Self-Organizing Recurrent Neural Networks

  • Versions: 64
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 1,338 Last month
Rankings
Dependent packages count: 10.1%
Stargazers count: 13.0%
Forks count: 16.9%
Average: 18.4%
Dependent repos count: 21.5%
Downloads: 30.6%
Maintainers (1)
Last synced: 4 months ago

Dependencies

docs/requirements.txt pypi
  • certifi ==2018.11.29
  • cycler ==0.10.0
  • ipykernel *
  • ipywidgets *
  • kiwisolver ==1.0.1
  • matplotlib ==3.0.3
  • nbsphinx *
  • networkx ==2.4
  • numpy ==1.16.2
  • pandas ==0.24.1
  • pyparsing ==2.3.1
  • python-dateutil ==2.8.0
  • pytz ==2018.9
  • scipy ==1.2.1
  • seaborn ==0.9.0
  • six ==1.12.0
  • sphinx-copybutton *
  • sphinxcontrib-bibtex *
  • sphinxcontrib-svg2pdfconverter *
  • tqdm ==4.31.1
  • wincertstore ==0.2
requirements.txt pypi
  • certifi *
  • configparser *
  • cycler *
  • kiwisolver *
  • matplotlib *
  • networkx *
  • numpy *
  • pandas *
  • pyparsing *
  • python-dateutil *
  • pytz *
  • scipy *
  • seaborn *
  • six *
  • tqdm *
  • wincertstore *
setup.py pypi
  • configparser *
  • networkx *
  • numpy *
  • pandas *
  • scipy *
  • seaborn *
.github/workflows/build.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • codecov/codecov-action v1 composite
.github/workflows/draft-pdf.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
Dockerfile docker
  • python 3.8 build