# How to Python in computational neuroscience, data mining, and more 
{:.no_toc}

<nav markdown="1" class="toc-class">
* TOC
{:toc}
</nav>

All the tutorials are tested with Python 3.11.x. Older version might have a problem with the new versions of type anotations. 

## Flow chart
* [Flow chart symbols](flow/overview/README.md)
* [Examples](flow/examples/README.md)
* [Flow chart for baking bread](flow/baking_bread/README.md)

## Workflow
* [Python installation](workflow/python_pure/README.md)
* [VS Code installation](workflow/vscode_install/README.md)
* [VS Code configuration](workflow/vscode_config/README.md)
* [VS Code Microsoft Tutorials](workflow/microsoft_tutorials/README.md)
* [VS Code Python Interactive window](workflow/vscode_interactive/README.md)
* [VS Code Markdown](workflow/vscode_markdown/README.md)
* [VS Code Debugging](workflow/vscode_debug/README.md)

Important VS Code notes:
* You can mark segments of source node with your mouse (or keyboard) and use the TAB key to increase the level of the indentation or use SHIFT + TAB do decrease the indentation level. ​
* CTRL + SHIFT + 7 toggles between comment and normal source code.​
* The function key F2 allows you to change variable and function names. VS Code goes through all the node in your Project directory and changes all occurrences of the function or variable name accordingly. The same is true if you change a file name in a project directory.   

## Python: The Basics of the basics
* [Overview](python_basics/where_to_start/README.md)
* [Hello, Python](python_basics/hello_python/README.md)
* [Style Rulez](python_basics/style_rulez/README.md)
* [Programming Recommendations](python_basics/programming_recommendations/README.md)
* [Basic Math Operations](python_basics/basic_math_operations/README.md)
* [Truth Value Testing](python_basics/truth_value_testing/README.md)
* [Formatted String Literals](python_basics/formatted_string_literals/README.md)
* [Flow Control Overview](python_basics/flow_control_overview/README.md)
  - [Flow Control: if, elif, else](python_basics/if/README.md)
  - [Flow Control: for-loop](python_basics/for/README.md)
  - [Flow Control: while, pass, break, continue](python_basics/while/README.md)
  - [Flow Control: match case](python_basics/match/README.md)
* Sequence Types
  - [Lists](python_basics/list/README.md)
  - [Tuple](python_basics/tuple/README.md)
* Mapping Types
  - [Dict​](python_basics/dict/README.md)
* [Functions](python_basics/functions/README.md)
* [Type annotations](python_basics/python_typing/README.md)
* [Files](python_basics/files/README.md)
* [JSON and dict for parameter files](python_basics/json/README.md)
* [Creating order via sub-directories: os.makedirs](python_basics/os_makedirs/README.md)
* [Finding files in a directory: glob](python_basics/glob/README.md)
* [Class](python_basics/class/README.md)
* [Exceptions (try / except)](python_basics/exceptions/README.md)
* [Importing Modules](python_basics/modules/README.md)
* [Built-in Functions](python_basics/built_in/README.md)
* [The Python Standard Library​](python_basics/standard_libraries/README.md)

## Numpy: The Basics of the basics
* [The N-dimensional array (ndarray)​](numpy/ndarray/README.md) 
* [Making a matrix from numerical ranges](numpy/numerical_ranges​/README.md) 
* [New matrix](numpy/new_matrix/README.md)
* [Reshape and flatten](numpy/reshape/README.md)
* [Slices and Views](numpy/slices_views/README.md)
* [Where](numpy/where/README.md)
* [Boolean matricies and logic functions](numpy/bool_matrix/README.md)
* [Advanced Indexing](numpy/advanced_indexing/README.md)
* [Available dtypes](numpy/dtype/README.md)
* [Constants](numpy/constants/README.md)
* [Math functions](numpy/math_functions/README.md)
* [Linear algebra](numpy/linear_alg/README.md)
* [Random numbers the non-legacy way](numpy/random/README.md)
* [Statistics](numpy/statistics/README.md)
* [FFT](numpy/fft/README.md)
  - [rfft and spectral power](numpy/numpy_fft_1/README.md)


## Matplotlib.pyplot
* [Simple plot and imshow examples](matplotlib/basics/README.md)
* [Overview of the available functions](matplotlib/overview/README.md)

## Numpy
* [Beyond normal np.save](numpy_save_special/README.md)
* [Dealing with Matlab files](numpy_mat_files/README.md)

## Sci-kit Learn 
* [Overview](scikit-learn/overview/README.md)

## Python: Data analysis
* [Remove a common signal from your data](SVD_data_cleaning/README.md)

## Python: Questions of spectral nature
* [scipy.signal: Butterworth low, high and band-pass](scipy.signal_butterworth/README.md)
* [PyWavelets: Wavelet Transforms in Python](pywavelet/README.md)


## Python: Daily little helper

* [TQDM: Make your progress visible](helper/TQDM/README.md)
* [Argh: Organize your command line arguments](helper/argh/README.md)

## OpenCV2 and Python
* [How to read a webcam with CV2](cv2/webcam/README.md)

## PyTorch 
* [Get CUDA ready!](pytorch/cuda/README.md)
* [Layers](pytorch/layers/README.md)
* [How to take advantage of an optimizer for your non-Pytorch project](pytorch/optimizer_special/README.md)
* [How to take advantage of a learning rate scheduler for your non-Pytorch project](pytorch/scheduler_special/README.md)

## Arduino
* [Basics with Python / Matlab](arduino/basics/README.md)

## Matlab: Basics

{: .topic-optional}
This pages are in a rough state. e.g. equations are broken. Don't know why...

* [Basic Structure of a Computer](matlab/1/README.md)
* [Representation of Numbers in the Computer](matlab/2/README.md)
* [Basic Commands and Variables](matlab/3/README.md)
* [Graphics](matlab/4/README.md)
* [Systematic Programming](matlab/5/README.md)
* [Vectorization and Vector Calculus in Matlab](matlab/6/README.md)
* [Integration and Differentiation](matlab/7/README.md)
* [Differential Equations](matlab/8/README.md)
* [Data Analysis](matlab/9/README.md)

{: .topic-optional}
Note: I will transfer the old pages to this new place (and update them). It will take some time but it will happen... 

