Practice and theory of brain imaging

The Nipraxis team


  1. Spring 2022 - full pilot version of course.
  2. Fall 2022 - first full version of course.

About the course

This is an online, but mostly live course on the practice and theory of brain imaging.

You can get an idea of what we cover from the developing online textbook for the course. You can also look at a 2016 version of this course at Berkeley .

We wrote up a similar course in Frontiers in Neuroimaging.

In order to work productively in imaging, you will need to be able to read and write simple code to manipulate images, move and modify files, and run analysis steps. You will need code.

But modern programming languages, such as Python, are not just an additional skill that you will need for intermediate and advanced work. They are — languages — in which you can express and explore the fundamental ideas that lie behind the analysis. These are ideas in signal processing, image processing, and, most obviously, in statistics. This course is not designed in order for you to learn to code, it is designed so that you use code to learn.

You may be able to do your work with code, and explain it, but your results will be full of error unless you organize your work carefully, and you can collaborate with others. We will teach you this organization and collaboration so you can work more effectively and productively with your mentors and peers. Along the way, you will find you have all the tools you need to do accurate, reproducible research. Collaboration and reproducibility are very close ideas.

Lastly, we will teach you to engage with your tools. Just as you collaborate with your peers to do your research, so you will learn to collaborate with your peers who are building and maintaining the code you use. We will teach you to become an owner and contributor to the common tools that we use. By contributing, you will help your field, and you will learn from others how to use code more effectively and to do a wider range of work.

The team

Your teachers are themselves researchers in brain imaging, and contributors to brain imaging tools. Between us, we have many decades of experience in teaching brain imaging, and in brain imaging research. The team are:

  • Matthew Brett
  • Chris Markiewicz
  • Oscar Estaban
  • Zvi Baratz


For the upcoming version of the Nipraxis course, we will assume that you either:

  • Have a reasonable working knowledge of Python and the Numpy array library for Python, or
  • Have a good knowledge of another array programming language, such as Matlab or R, and you are willing to work a bit harder at the start of the course, to catch up on the Python you need.

In particular, we will expect you to know about:

  • Using arrays (matrices in Matlab)
  • for loops
  • Writing your own functions on Python, or Matlab / R.

You will find the course easier if you have done some brain imaging analysis before, but that is not a requirement.


This is the preliminary sketch of what we cover:

  1. Using Python and Jupyter. What is an image?
  2. Images, arrays, and plotting.
  3. Arrays in three and four dimensions, time series.
  4. Python modules and scripts. The text editor.
  5. Version control and collaboration.
  6. Working reproducibly and collaborating with Github.
  7. Outlier detection. Testing.
  8. Correlation and regression. The general linear model.
  9. T tests. Analysis of variance
  10. Multiple comparison correction
  11. Convolution and the hemodynamic response.
  12. Interpolation and slice timing.
  13. Optimization and image registration.
  14. Affine transforms. Cross-modality registration.
  15. Cross-subject registration.

Capstone, homework

Expect to do exercises regularly, during the classes, and for homework. The main homework is working together in groups to use the tools we teach, for a substantial, independent and reproducible brain imaging project, with regular feedback and support from the team. There will be a small prize for the best project.