# Computational Modelling in Neuroscience

## Administrivia

- This is the homepage for Neuroscience 9520: Computational Modelling in Neuroscience
- Class will be Mondays, 2:00pm - 3:30pm, and Thursdays, 11:30am - 1:00pm, in NSC 245A
- The instructor is Paul Gribble (email: pgribble [at] uwo [dot] ca)
- course syllabus.pdf
- We will use several chapters from a book on computational motor control: "The Computational Neurobiology of Reaching and Pointing" by Reza Shadmehr and Steven P. Wise, MIT Press, 2005. [ google books link ] [ cover info ]

## Course Notes

## Schedule & Topics

### Sep 10: Introductions & course schedule

- lecture slides: lecture1.pdf
- please read this: Trappenberg1.pdf
- please read this: OM1.pdf (1st Ed.) or CCNBook/Intro
- your first assignment: assignment1.pdf (due Sep 23)

### Sep 13: Getting your computer set up with Python & scientific libraries

- course notes 0: Setup Your Computer

### Sep 17 : Modelling Dynamical Systems I

- course notes 1: Dynamical Systems
- course notes 2: Modelling Dynamical Systems

### Sep 20: Modelling Dynamical Systems II

- more on dynamical systems
- assignment2.pdf (due Sep 30)
- code example for using optimization: optimizer_example.py
- cool demo of synchronization of metronomes (and japanese version), plus python code for simulating it

### Sep 24, 27 : no class (Paul away)

### Oct 1, 4 : Modelling Action Potentials - Hodgkin-Huxley models

- Ekeberg et al. (1991) (please read this)
- optional: see the original Hodgkin & Huxley 1952 paper reprinted in 1990: Hodgkin & Huxley 1952 (1990)
- optional: a chapter on Spiking Neuron Models for a general overview of the field
- course notes 3: Modelling Action Potentials
- refresher slides on action potentials
- YouTube videos on The Action Potential and Voltage Gated Channels and the Action Potential
- assignment3.pdf (due Oct 7) assignment3_params.py
- assignment2_sol.py
- assignment3_sol.py

### Oct 8, 11 : no class (thanksgiving, SFN)

### Oct 15, 18 : no class (SFN)

### Oct 22, 25 : Computational Motor Control: Kinematics

- course notes: 4: Computational Motor Control: Kinematics
- read
**at least two**of the papers listed in the course notes - read Shadmehr & Wise book, Chapter 18 and Chapter 19
- assignment4.pdf
- minjerk.py

### Oct 29, Nov 1 : Computational Motor Control: Dynamics

- assignment4_sol.py
- course notes: 5: Computational Motor Control: Dynamics
- read
**at least two**of the papers listed in the course notes - read Shadmehr & Wise book, Chapter 20 and Chapter 21 (and Chapter 22 if you are interested in the topic)
- twojointarm.py utility functions and Python code for doing inverse and forward dynamics of a two-joint arm in a horizontal plane (no gravity) with external driving torques, and animating the resulting arm motion
- twojointarm_game.py : try your hand at this game in which you have
to control a two-joint arm to hit as many targets as you can before
time runs out. Use the [d,f,j,k] keys to control [sf,se,ef,ee]
joint torques (s=shoulder, e=elbow, f=flexor, e=extensor). Spacebar
will "reset" the arm to its home position, handy if your arm starts
spinning out of control (though each time you use spacebar your
score will be decremented by one). Start the game by typing
`python twojointarm_game.py`

at the command line. At the end of the game your score will be printed out on the command line. - assignment5.pdf

### Nov 5, 8 : Computational Motor Control: Muscle Models

- assignment5_sol.py and assignment5_figures.pdf : coming soon …
- read Shadmehr & Wise book, Chapter 7 and Chapter 8 and supplementary documents: musclemodel.pdf
- course notes: 6: Computational Motor Control: Muscle Models
- assignment: catch up on readings.
**note**no class on Thurs Nov 8.

### Nov 12, 15 : Computational Models of Learning part 1

- some lecture slides: nn_slides.pdf
- Readings:
- Artificial Neural Networks: A Tutorial Jain & Mao, 1996
- Trappenberg5.pdf, Trappenberg6.pdf, Robinson92.pdf, Mitchell4.pdf (4.8 optional)
- Optional: Haykin0.pdf, Haykin1.pdf, Haykin4.pdf
- tutorial: Principles of training multi-layer neural network using backpropagation

- A classic reference: McClelland & Rumelhart PDP books PDP.pdf, PDP_Handbook.pdf
- Simulating Brain Damage
- for a really nice overview of all sort of NNs, see: Neural Networks for Machine Learning (Geoff Hinton, Univ Toronto, Coursera online course)
- for thoughts about motor learning, read Shadmher & Wise book, Chapter 24
- Software: PyBrain
- there is also this: FANN: Fast Artificial Neural Network Library

- code examples:
- xor_aima.py from Norvig & Russell's book
- xor.py my code, vectorized numpy matrices
- xor_plot.py same as above, plots during training to visualize network performance
- xor_cg.py my code, uses backprop to compute gradients and conjugate gradient descent to optimize weights

- MNIST Database of handwritten digits
- Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition
- NeuralNetworks2.pdf slides

### Nov 19, 22 : Computational Models of Learning part 2

- assignment6.py and traindata.pickle
- NeuralNetworks3.pdf slides
- more code demos of feedforward networks
- handwritten digit example mnist.tgz
- vowel classification example PetersonBarneyVowels.tgz
- facial expression example RadboudFaces.tgz

- recurrent neural networks (wiki)
- A guide to recurrent neural networks and backpropagation (M. Boden)
- Dynamic Recurrent Neural Networks (B.A. Pearlmutter)
- A tutorial on training recurrent neural networks (H. Jaeger)
- echo state networks scholarpedia
- Buonomano D. (2009) Harnessing Chaos in Recurrent Neural Networks. Neuron 63(4):423-425.
- Sussillo, D., & Abbott, L. F. (2009). Generating coherent patterns of activity from chaotic neural networks. Neuron, 63(4), 544-557.

- papers:
- Wada, 1993 A Neural Network Model for Arm Trajectory Formation Using Forward and Inverse Dynamics Models
- Lukashin, 1993 A dynamical neural network model for motor cortical activity during movement: population coding of movement trajectories
- Pearlmutter, 1989 Learning State Space Trajectories in Recurrent Neural Networks

- intro to unsupervised learning
- multi-layer generative networks
- Mark Schmidt's minFunc MATLAB routines for unconstrained optimization

### Nov 26, 29 : Computational Models of Learning part 3

- NeuralNetworks4.pdf slides
- self-organizing maps wiki, AflaloGraziano2006.pdf
- hopfield.tgz MATLAB demo code
- som1.m MATLAB demo code
- autoencoders & deep belief nets
- reinforcement learning wiki, Sutton & Barto book

### Dec 3 : student presentations

- each of the 12 students registered in the course will present one paper from the literature in their research area in which a computational modelling approach was used to address a question about how the brain works.
- presentations are limited to
**7 minutes each**! Note: this is difficult to pull off, you will have to practice your talk out loud. Also be careful to choose your slides carefully. There will be a timer and a loud gong. - Question period will be limited to 1 to 2 minutes per talk.
- The order of talks will be alphabetical by your last name. A first, Z last. We will need to start at 2pm sharp.
- Each student giving a talk must also submit a short essay on their chosen paper. Your essay should follow the "Content and Format" style of the "Journal Club" feature in the Journal of Neuroscience. You can choose any paper you want, it doesn't have to be a J. Neurosci. paper and it doesn't have to have been published within the past 2 months.
- Essays are due Sunday Dec 9th, 2012, no later than 11:59pm
EST. Please send your essay to me by email, as a single .pdf
file. The filename should be
`<lastname>_essay.pdf`

(e.g.`gribble_essay.pdf`

).

## Links

### Python Introductory Tutorials

- How to Think Like a Computer Scientist: Learning with Python
- Learn Python The Hard Way
- Dive Into Python
- Introduction to Scientific Computing with Python
- Online Python Tutor
- Python Bootcamp (github)
- Python Bootcamp August 2012 (YouTube playlist)
- Python Bootcamp August 2012 (list of topics & downloads)

### Numpy / SciPy / Matplotlib

### iPython

- iPython videos
- iPython in-depth: high productivity interactive and parallel python (youtube video) iPython Notebook stuff starts at about 1:15:40, and parallel programming stuff starts at around 2:13:00
- IPython Notebook Viewer

### Machine Learning Resources

- scikit-learn: machine learning in Python
- The MNIST Database of handwritten digits
- UCI Machine Learning Repository
- Some datasets for machine learning: digits, faces, text, speech
- Software tools for reinforcement learning, neural networks and robotics
- The Japanese Female Facial Expression (JAFFE) Database
- Radboud Faces Database
- Machine Perception Laboratory Demos
- Machine Perception Toolbox
- Geoff Hinton's Webpage (with lots of demos, tutorials, talks and papers on Neural Networks)
- Introduction to Neural Networks and Machine Learning (U of T course by Geoff Hinton)
- MikeNet Neural Network Simulator (C library)
- Deep Learning resource site for deep belief nets etc
- Learning Deep Architectures for AI (book) by Yoshua Bengio
- MATLAB neural network code demos by Dave Touretzky