Skip to content

Columbia-Neuropythonistas/IntroPythonForNeuroscientists2022

Repository files navigation

Intro to Python for Neuroscientists Fall 2022

Course description: This class will give students a general and applied introduction to Python within the context of neuroscience. Topics covered will include setting up python, using git to track and publicize work, programming basics, data manipulation and visualization, machine learning, and navigating existing codebases. The course will culminate in a project where students will analyze data of their choice in Python (options will be provided for students who don’t have their own datasets). Students will then work to understand each other’s projects to get experience reading and understanding each others’ code, and to incentivize good documentation. Students will present their work to the class.

Course Structure: Classes will consist of live programming and instruction, with minimal out-of-class homework (see important dates below for details). Pair and group-programming will be used in addition to individual programming. Please bring your laptop – if you do not have one / that will be an issue, please contact us.

Prerequisites: No background in programming or math is required. All we ask is that you come with a desire to learn :)

Grades will be based on participation and the final project.

Email: [email protected]

Important dates:

  • By 9/6: Setup computer following these instructions.
  • By 9/8: Watch pre-videos and make a github account following instructions.
  • Weeks 7-8: set up a time if you want to discuss your project with us
  • By 11/1: Submit 1-page project proposal
  • By 11/3: Install suite2p following these instructions.
  • Week 9: meet with us to discuss project proposal if necessary
  • By 11/29: Submit project
  • 12/8: presentation

Schedule:

Week Topic Lecturer
Week 1 (9/8) Python Workflow:
- Use python locally in VSCode in file form and as Jupyter Notebooks (hello world)
- Set up conda environment
- Git Basics – create a repo and commit to it
Jasmine
Week 2 (9/15) Python Basics:
- Why use python?
- Data Types & Variables (float, int, str, list, dict, tuple)
- Booleans & If/Else
- For Loops
Jasmine
Week 3 (9/22) Python Basics 2:
- input / output
- Control flow (while, break/continue, try/except)
- Functions
Jasmine
Week 4 (9/29) Numerical data with Numpy
- Why use numpy?
- Create and manipulate numpy arrays
Sam
Week 5 (10/6) Data analysis and Data visualization
- What is a dataframe?
- Creating dataframes with pandas
- Manipulating dataframes
- Basic plots with matplotlib
Sam
Week 6 (10/13) Data visualization 2: Seaborn
- Why use seaborn?
- Create a basic plot using seaborn
- Pros and cons of smoothing, histograms, and densities
- Pros and cons of different categorical plots
Sam
Week 7 (10/20) Object-Oriented Programming (OOP) in Python:
- What are the basics of OOP, why is it useful, and how is it implemented in Python?
- Classes/objects, inheritance, polymorphism, abstraction
- Creating modules
- Using OOP to organize neuroscientific data and analysis
- Creating modular workflows using themes from OOP
Abhi
Week 8 (10/27) Machine Learning using scikit-learn
- What are the conceptual basics of machine learning?
- Supervised (classification/regression)
- Unsupervised
- Using ML to analyze neural data
- How to pick up new ML techniques/work through documentation.
Abhi
Week 9 (11/3) Navigating an expert codebase:
- Given a problem/input and a desired output, how can we use existing resources to implement a solution?
- Working through documentation and online resources to learn a package
- Adapting prewritten pipelines to custom needs
Abhi
Week 10 (11/10) Project Day
Week 11 (11/17) Project Day
Skip for Thanksgiving (11/24) NO CLASS
Week 12 (12/1) Understanding Day
Week 13 (12/8) Presentations

Miscellaneous Resources

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published