Biological neural networks
Table of Contents
1. Introduction
This is the web page associated with our seminar of October 10 2024 for the DU IRMIA++.
The seminar will be divided in 4 parts of 30 minutes (the following links point to the slides):
- Neurophysiology and working memory basics
- Model construction
- Putting the model to work (same link as above)
- A reproducible numerical implementation that lasts
2. Material for the 4th part
2.1. The code doing the simulation
- We have discussed the simulation algorithm already in Part 2. A "formal" description can be found in the
GitLab
repository of the code: a_system_of_interacting_neurons_with_short_term_plasticity in the code documentation on pp. 8-9. - A
C
version of the code is available - A
Python
version of the code is available as well
2.2. Things to keep in mind while developping code
- the KISS principle: "Keep it simple, stupid!"
- document your code either with tools like Doxygen or by implementing Literate programming as was done for the above documentation (using emacs and orgmode).
- write tests
- these tests will also serve as examples of how to use the code
- take care of your (pseudo)random number generator (PRNG), seed it explicitly:
- the PRNG of
Python
random module is not (anymore) the same as the one of numpy - R and the
Python
random module both use the Mersenne Twister, but not the same version of the algorithm! - So far we have just discussed the uniform generator, things are getting worse for the generator of specific distributions: exponential, normal, Poisson,etc.
- the PRNG of
- always split computation from graphics generation
- use text files as much as possible
- do not forget to include metadata in your code outputs
- use a build automation tool like GNU Make or Meson (there are many good ones) to make your compilation / analysis re-execute automatically (example).
2.3. Make it reproducible, make it last
- For a recent survey of Reproducible Research in English, check Reproducibility, Replicability, and Repeatability: A survey of reproducible research with a focus on high performance computing by B. Antunes and D. Hill and, in French, Recherche Reproductible : Comment les outils informatiques et le calcul scientifique impactent bien des disciplines by the same authors.
For online courses (MOOCS), check:
- Reproducible research: methodological principles for transparent science
- Reproducible Research II: Practices and tools for managing computations and data
by K. Hinsen, A. Legrand, C. Pouzat and many others.
- If you can, avoid using
Python
. - If you cannot, use a container like Apptainer, Docker or Guix, this will allow to manage the dependency nightmare.
- Use a checksum for every output of your code(s) as illustrated here.