#!/usr/bin/env python # coding: utf-8 # Open In Colab   Open in Kaggle # # Introduction # # Welcome to the Neuromatch computational neuroscience course! #

# ## Orientation Video # In[ ]: # @markdown from ipywidgets import widgets from IPython.display import YouTubeVideo from IPython.display import IFrame from IPython.display import display class PlayVideo(IFrame): def __init__(self, id, source, page=1, width=400, height=300, **kwargs): self.id = id if source == 'Bilibili': src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}' elif source == 'Osf': src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render' super(PlayVideo, self).__init__(src, width, height, **kwargs) def display_videos(video_ids, W=400, H=300, fs=1): tab_contents = [] for i, video_id in enumerate(video_ids): out = widgets.Output() with out: if video_ids[i][0] == 'Youtube': video = YouTubeVideo(id=video_ids[i][1], width=W, height=H, fs=fs, rel=0) print(f'Video available at https://youtube.com/watch?v={video.id}') else: video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W, height=H, fs=fs, autoplay=False) if video_ids[i][0] == 'Bilibili': print(f'Video available at https://www.bilibili.com/video/{video.id}') elif video_ids[i][0] == 'Osf': print(f'Video available at https://osf.io/{video.id}') display(video) tab_contents.append(out) return tab_contents video_ids = [('Youtube', 'cV2q-vpdKUA'), ('Bilibili', 'BV1Zg4y1A7tJ')] tab_contents = display_videos(video_ids, W=854, H=480) tabs = widgets.Tab() tabs.children = tab_contents for i in range(len(tab_contents)): tabs.set_title(i, video_ids[i][0]) display(tabs) # ## Concepts map # # Concept map overview of curriculum # # *Image made by John Butler, with expert color advice from Isabelle Butler* # ## Curriculum overview # # Welcome to the comp neuro course! # # We have curated a curriculum that spans most areas of computational neuroscience (a hard task in an increasingly big field!). # We will expose you to both theoretical modeling and more data-driven analyses. This section will overview the curriculum. # # We will start with several optional pre-reqs refreshers. # # The **Neuro Video Series** is a series of 12 videos that covers basic neuroscience concepts and neuroscience methods. These videos # are completely optional and do not need to be watched in a fixed order so you can pick and choose which videos will help you # brush up on your knowledge. # # The pre-reqs refresher days are asynchronous, so you can go through the material on your own time. # You will learn how to code in Python from scratch using a simple neural model, the leaky integrate-and-fire model, as a motivation. # Then, you will cover linear algebra, calculus and probability & statistics. # The topics covered on these days were carefully chosen based on what you need for the comp neuro course. # # After this, it’s the start of the proper course! You will start out with the module on **Intro to Modeling**. On the first day, # you’ll learn all about the broad types of questions we can ask with models in neuroscience (*Model Types*). You will learn # that we can use models to ask what happens, how it happens, and why it happens in the brain. Importantly, we classify models # into ‘what’, ‘how’, and ‘why’ models, not based on the toolkit used, but on the questions asked! # # After this solid grounding in what questions you can ask with models and the process to start doing so, you will move to the module on **Machine Learning**. # This module covers fitting models to data and using them to ask and answer questions in neuroscience. We can pose all sorts of questions # (including what, how, and why questions) using machine learning — we focus especially on more data-driven analyses that often result # in asking what is happening in the brain. You will learn about key principles behind fitting models to data (*Model Fitting*), # how to use generalized linear models to fit encoding and decoding models (*Generalized Linear Models*), how to uncover underlying # lower dimensional structure in data (*Dimensionality Reduction*), and how to use deep learning to build more complex encoding models, # including comparing deep networks to the visual system (*Deep Learning*). You’ll then dive into projects and # learn about the process of modeling using a step-by-step guide to modeling that you will apply to your own projects (*Modeling Practice*). # # Next, you’ll move to the module on **Dynamical Systems**. In this module, you will learn all about dynamical systems and # how to apply them to build more biologically plausible models of neurons and networks of neurons. In *Linear Systems*, # you will cover a lot of the really foundational knowledge on dynamical systems that you will use throughout the rest of the course, # including a brief dive into stochastic systems which will underlie the next module. During *Biological Neuron Models*, # you will start to use this knowledge to build models of individual neurons that are more rooted in biology. In *Dynamic Networks*, # you will extend upon the previous day to start building and analyzing networks of neurons. We will often ask ‘how’ questions # using these models: how are things in the brain happening mechanistically? These models are often not directly fit to data # (in contrast to the machine learning models), but instead are built based on bottom up knowledge of the system. # # Next, you will move to the module on **Stochastic Processes**. We start with a day learning about Bayesian inference, within the context # of making decisions (*Bayesian Decisions*). Specifically, we are learning about how to estimate a state of the world from measurements. # In the next day, we extend this to include time: the state of the world is now changing over time (*Hidden Dynamics*). Next, we look # at how we can take actions to affect the state of the world (*Optimal Control* and *Reinforcement Learning*). Once again, these models # can be used as ‘what’, ‘how’, or ‘why’ models but we focus on asking ‘why’ questions (why should the brain compute this?). # # Finally, we end with learning all about causality (*Network Causality*). This covers one of the most important science questions: # when can we determine if something is causally related vs. just correlated?