How to Self Study Coding for Computational Neuroscience

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
this video is sponsored by brilliant but more on them later so you want to start on the amazing quest of becoming a computational neuroscientist one of the first skills you will need to learn is programming in computational Neuroscience programming is not just a tool that we use but it's also a foundational element of how the brain is viewed to operate in the book The computational Brain it is said that the expression computational and computational Neuroscience reflects the role of a computer as a research tool in modeling complex systems such as networks ganglia and brains with the deep-seated conviction that what is being modeled by a computer is in itself a kind of computer so hi I'm Charlotte rasa a second year PhD student in computational neuroscience and today I really want to talk about programming and how to learn programming for computational Neuroscience so I already talked a little bit about the mathematics of computational Neuroscience and also about computational Neuroscience itself and how to learn it from scratch but a lot of you have asked how exactly you get the computational skills that are needed for computational neuroscience and especially if you are a beginner in programming it is sometimes a little bit overwhelming the amount of resources out there but even if you're a little bit more advanced in programming it may seem that it's quite easy to get started on computational Neuroscience but I think there are some challenges that you will need to overcome so in this video I will give you a four-step pathway to learning programming from scratch for computational Neuroscience so the four steps are to learn the basics of programming fast and first then to find a topic in computational Neuroscience that really speaks to you or that you like than to find a project within that topic and lastly to get the knowledge to fulfill this project or topic and I also made a blog post of the entire pathway that you can find Down Below on my finally launched website and I also if you're interested in Neuroscience you can also subscribe to the email list and I will try to post something about Neuroscience every single week such that you can keep updated with the news on Neuroscience but let's get straight into the first step learning the basics fast and first so if you want to learn computational Neuroscience of course the first thing you need to know is some basic programming but what I've noticed with students usually when they dive into computational neuroscience and the programming aspects they spend months learning the syntax of different languages trying to really deeply understand different algorithms but the big problem with this is that even though if you understand the theoretical aspect of a certain algorithm it is sometimes very different to apply this algorithm in the real world and that is because real neural Imaging data is messy it's not structured and you will have to alter your algorithm to fit your project so for example if you want to apply a k-means algorithm to MRI data you need to think about the pre-processing what kind of data you're going to use and all of these things will change how your K means l algorithm will look like in the end that's why the first step I would always recommend is to learn the basics of programming first and fast so in computational Neuroscience there are in general two languages that are mainly being used and that is RM Python and I usually recommend to my students to try python first and that's because I noticed that python is a little bit more intuitive there are a lot more resources online and I think it's a little bit easier in the syntax so if you want to Learn Python and you've never done python before there are two beginner courses that I quite like the first one is hundred days of code I recommended it before but I think it's an amazing course that really takes you through all the aspects of python and at the end there are also a few projects that you can try your skills on yourself and another one that I came across recently is this specialization in Python from Coursera I think if you have a little bit more time this is maybe also a nice way to go because the specializations and the courses from Coursera you can also upload them to your LinkedIn and kind of show that you've learned these skills which I personally think is really nice and I will link down all the resources below for if you want to try any of these out so after you've deep dived into one of these courses some of the libraries that you probably should know are for example numpy pandas SK learn Skippy and amongst others I think there are many libraries in Python and it will depend a lot on the project that you will finally choose which libraries you really need to know so after you've got these basic python skills down I do think there are a few other programming skills that are just kind of nice if you also get before you really dive deep into your project and that is to set up a GitHub first so why I always recommend to use GitHub is it's just such a nice place to put all your code and if you ever want to share your code you can do this on GitHub it's kind of this open science open data library for your own code so this is just a really a good way to manage your own code and also to share it with others another skill that I would definitely dive into a little bit is the command line and how to use the command line so if you use a Linux computer you probably know what the command line is but on Mac or Windows you can also access the command line and through the command line you can for example create different folders or you can read certain folders at a certain post structure and it is kind of nice and a good skill to have to get used to working with the terminal a little bit and that is because with Neuroscience we use a lot of really big data files and sometimes it's nicer to manage these files from the terminal it's a lot faster and a little bit less messy and error prone than if you have to do everything by hand and the last tool that I would also recommend to learn is Jupiter notebook so I use Jupiter notebooks a lot I think they are perfect for science because in between your coding blocks you also have these little explanation blocks and especially if you ever want to share your code or or you want to use your code for science this is a really nice and intuitive way to combine code with explanations so in general I would really try to pick one course for Python and stick to it and then learn these other skills and I wouldn't take more than two to three months to learn these skills because there's always more to learn and if you don't put yourself on a straight deadline before you know it you spend four years learning different programming skills but you haven't even touched any Neuroscience data yet and the big thing with courses is that usually the data they give you is nicely curated and perfect for you to use in a project but real life data is actually really messy and to really get used to it and to get over frustrations and to learn how to push through when coding gets hard that's why you need to go to step two and that's to pick a topic in Neuroscience so step two is to find a topic that you like within computational Neuroscience so when you first start entering in computational Neuroscience you may think that it's a really homogeneous field but if you actually work in computational Neuroscience you will learn quite quickly that the way you approach computational Neuroscience is really vast and quite different so the things you can learn and the topics you can choose in computational Neuroscience are really diverse so for example you can choose a particular area of the brain you want to study so you could choose the visual cortex the motor cortex the prefrontal cortex or you could look at different levels of organization so for example you could look at synapses neurons or large-scale networks also the type of questions you want to answer will really dictate how your research will go so your questions can be about the biological mechanisms underlying the brain or you just want to look at behavior and how your brain signals correlate with certain behavioral patterns or maybe you want to make a predictive model that can separate people with a certain type of mental disorder from healthy population and these type type of questions were really dictate the type of data and the type of algorithms you will use so then you might think like how am I gonna pick a topic if the field is so diverse so I wouldn't recommend to pick a book because I think a lot of the computational Neuroscience books even though they're really nice they're usually a little bit outdated because the field moves so fast so the thing that I usually recommend people to do if they're interested in computational neuroscience and they also want to really understand the field is to follow their favorite researchers on Twitter and this is because most researchers publish their latest papers or their latest reviews on Twitter and by following your favorite researchers on Twitter you kind of get your own curated little newsletter every day or every week from the latest Neuroscience news so also in the blog post that I made and it's linked down below I listed 10 neuroscientists that you can follow right now and kind of see where they're at but of course I wouldn't stop at decent neuroscientists I just kind of picked them randomly because I really like their work but also look at the people they are following and by doing this you kind of get an organic and more natural overview of the field of computational Neuroscience so for example if we look at three papers that I found recently that I really like in different areas of computational Neuroscience we will see the different skills that you will need to develop first maybe you want to look at machine learning so there's this paper called comparisons of deep neural networks to spatial temporal cortical dynamics of human visual object recognition reveals hierarchical correspondence so they really wanted to look how functional MRI signals related to artificial deep neural networks that they trained on the same type of visual data so the skills that you would need to create something like this is of course to make a deep neural network but you also need to understand and be able to curate functional MRI data and to form a 2d surface-based Searchlight analysis so another paper in a different field altogether is in dynamical systems and this paper is called a simple circuit model of visual cortex explains neural and behavioral aspects of attention so the type of skills you would need for this is quite different so you of course need to be able to make a simple model circuit or a stabilized super linear Network an SSN also you need to know about different theories of attention that come from psychology for example and they also used convolutional neural networks and the last field that I quite like and I'm quite following some papers in that is in reinforcement learning so this is a paper that is called prefrontal cortex as a meta reinforcement learning system and I would highly recommend reading this it's quite interesting so they really drawed on recent advances in artificial intelligence to introduce a new theory of reward-based learning and if thing or the skills that you would need for a paper like this is to know reinforcement learning they also use some concept of entropy and they used a little bit standard Concepts in machine learning such as gradient descent and prep propagation and as you can see the skills that you need for these topics are sometimes overlapping but sometimes they are really different and if you try to learn all the skills that are available in computational Neuroscience you will probably spend a couple of years really deep diving into it and you will at the end have not applied anything and I think it's really easy to then also forget what you have learned so after you've read about a month maybe every day a different paper on the topic try to really think about what inspires you and what really attracts you and also something that I always recommend people to do is to look at the limitations section of different papers because the limitation section usually gives you a really good idea of the limitations of the field and also where you as a possible future researcher could contribute to so after you picked a topic and you have your programming skills it's onto step three which is to find a project to really apply your newly found programming skills and to really discover the topic that interested you a little bit so I think in general there are a lot of benefits to project-based learning but before that I really consider super beneficial are that you will learn exactly what you need you will come in contact with the messiness of real data you can immediately reinforce your learning with coding and also you will have a project at the end that you can put in your CV or GitHub to really show people the kind of skills that you have and the kind of things that you learned so in general it is kind of hard to find a project in Neuroscience if you are not affiliated with a lab but there are some ways that I'm gonna teach you now that range from beginner level to a little bit more advanced such that you can all hopefully get a project at the end so the first thing you can do is to look at summer school so for example I worked at a summer school last summer for neuromatch and it's amazing summer school where they take you over all the topics in conversational Neuroscience but you also get the chance to work on a project for about three weeks and they give you access to a lot of data so for example I worked with this group on fmri data from the human connection project and they're kind of projects they came up with I was really impressed because it was of a really high level so that's probably a really good beginner friendly option to apply to different summer schools in Neuroscience that also have a project-based learning aspects so the second thing you can look at are these kind of kaggle competitions I personally really like that goal it is sometimes a little bit difficult to find something that's particular for Neuroscience but they have a lot of data science competitions and projects that you can work on and I do think data science and Neuroscience are actually quite similar so if you get some skills on a kaggle company decision you can usually then apply those skills to a more serious project later then the third option is to look at hackathons so in Neuroscience there are a lot of hackathons available online sometimes you have to apply so sometimes you do have to be a student but for example one hackathon that I really like if is from ohbm and I will list it down below and it's just a really nice hackathon that a lot of people apply to in the field of computational Neuroscience so the fourth thing you can look at are these open source coding projects so I will list a few down below but it is sometimes a little bit harder to really get into these so I think this is a more advanced option and that's because a lot of the tools that were created for computational Neuroscience have been created over so many years that the code is quite complex to understand as a beginner then another thing you can do of course is to apply at a lab for a lab rotation so for example when I was in my masters I emailed a few professors with the kind of skills I had and especially if you are already a little bit better at programming or you have worked in a lab previously a lot of professors do want to give you the opportunity to work with them for six months or a year and I think this is a really nice way to learn a lot in a short amount of time and even if you are in your undergraduate and you think I don't have any skills it's always nice to email a professor just to show them that you've really read that work you're interested you already learned some programming and usually they are quite kind and they sometimes will give you an amazing opportunity then the last thing you can try but I do think this is sometimes a little bit more advanced but is to apply for an internship at a company so there are different companies in computational Neuroscience that also have internships listed online so for example you can think of Google AI Facebook AI say no or the Allen Institute and these are just a few that I mentioned from the top of my head but there are of course a lot of other companies and by getting an internship and a company your growth Curve will be like super steep and you will learn a lot and then it's to the fourth and final step but I also sometimes called is the beginning step and that's because now it's time to find the knowledge that you need for your projects so probably if you've now found a project you will quickly realize all the skills that you are missing and instead of thinking oh I'm gonna give up I'm not good enough for this project this is actually where most good programmers come from so you will make a list of all the skills that you will need for your specific project and then Deep dive into them so for example for the work that I'm currently doing and if Master students apply to our lab usually the things that you will need to know are how to use a glm so General linear models how to do dimensionality reduction with PCA or ICA how to do deep learning so we're working a lot with auto encoders nowadays and also a little bit mcmc how to do graph Theory so graph theory is quite important and also patient statistics is used a lot in our lab which we call normative modeling so usually I recommend my students to take the machine learning course by Andrew nguing which is also down below and which is also down below and he also has this amazing machine learning specialization that I highly recommend if you're going in a field of computational Neuroscience that uses a little bit more machine learning but then again for a different type of Neuroscience project you may need entirely different skills and this is really the point where you're learning Journey will actually start and will also really start to diverge from other people's Learning Journey so for example Maxwell Cohen said even if we did know about all the synapses all the transmitters all the channels all the response patterns for each cell and so forth still we would not know how an animal sea smells and walks and I think this really shows where computational Neuroscience is at at the moment we know so much but we also still know so little so there's still so much more to uncover and to learn about the brain and I'm just really excited for you if you're gonna start on this journey to join us in how to learn about the brain and all the amazing things there is to learn about it so also to update your programming skills a little bit further I would also highly recommend brilliant I've been using brilliant for a little while now and I especially like their course on computer science fundamentals so I usually have this rule that I'm not really allowed to procrastinate when I'm coding or doing anything serious for my science but I am sometimes allowed to learn in another way and one way that I use is brilliant nowadays so for example I'm really deep diving into the fundamentals of programming and where some of the ideas actually come from because I'm not from a programming background my bachelor was in physics so I don't know that much about the fundamentals of programming so I am really enjoying Brilliance to learn about these kind of skills and I think this is one of the things I really appreciate about brilliant they don't really shy away from really difficult topics and they explain it in a really nice and intuitive manner so to get started for free visits brilliant.org Charlottes or click the link in the description down below the first 200 of you will get 20 of brilliant's annual premium subscription so every day if I'm bored instead of checking YouTube or Twitter I usually spend some time on the app Brilliance so if you've sticked around till this long thank you and I really hope you start learning a little bit more about compositional Neuroscience I'm also planning for the upcoming months to make a few more tutorial Style videos about computational Neuroscience so if you have any things you're curious about or want to learn please put it down in the comments below and otherwise see you next week bye
Info
Channel: Charlotte Fraza
Views: 37,265
Rating: undefined out of 5
Keywords: self learning, study tips, neuroscience, computational neuroscience, computational thinking, neuroscience crash course, psychology, coding, coding for beginners, programming, programming for beginners, python
Id: Kwtnrb0-bXw
Channel Id: undefined
Length: 19min 40sec (1180 seconds)
Published: Sat Oct 01 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.