Python workshop 2022
Organizer: Department of Chemistry and Biochemistry, University of South Carolina
Lecturers: Patrick Xian, Santosh Adhikari, Sourin Dey
Day 1 – August 3rd
Python basics, programming environment, software repositories
- “Hello world!” script
- distribution: Anaconda (https://www.anaconda.com/products/distribution)
- environment: Visual Studio Code (https://code.visualstudio.com/), Jupyter (https://jupyter.org/)
- repositories: GitHub (https://github.com/), PyPI (https://pypi.org/)
- common data structures (numeric, string, list, tuple, dictionary) and their usage
- variables and functions
- basic mathematical and logical expressions
- control flow
- errors and their handling
- basic file handling
References
[1] How to Think Like a Computer Scientist (https://buildmedia.readthedocs.org/media/pdf/howtothink/latest/howtothink.pdf)
[2] Software carpentry Python fundamentals (https://swcarpentry.github.io/python-novice-inflammation/)
[3] Awesome Python (https://github.com/vinta/awesome-python)
Day 2 – August 4th
Data visualization and data wrangling with Python. Bring your own data, if possible!
- matplotlib (https://matplotlib.org/)
- seaborn (https://seaborn.pydata.org/)
- pandas (https://pandas.pydata.org/)
References
[1] Python visualization (https://github.com/rougier/scientific-visualization-book)
[2] Matplotlib tutorial (https://matplotlib.org/stable/tutorials/index.html)
[3] Seaborn tutorial (https://seaborn.pydata.org/tutorial.html)
Day 3 – August 5th
Scientific Python software packages
- numpy (https://numpy.org/)
- scipy (https://scipy.org/)
Advanced programming in Python
- introduction to object-oriented programming (OOP) in Python (https://realpython.com/python3-object-oriented-programming/)
- code profiling and debugging
References
[1] Scipy 1.0, Nature Methods (2020) https://www.nature.com/articles/s41592-019-0686-2
[2] Numpy, Nature (2020) https://www.nature.com/articles/s41586-020-2649-2
[3] Numpy tutorial (https://cs231n.github.io/python-numpy-tutorial/)
[4] A somewhat pedantic intro to OOP in Python (https://docs.microsoft.com/en-us/learn/modules/python-object-oriented-programming/)
[5] Advanced concepts for OOP in Python (https://www.pythontutorial.net/python-oop/)
[6] Python design patterns (https://python-patterns.guide/)
Day 4 – August 8th
Common machine learning frameworks in Python
- scikit-learn (https://scikit-learn.org/)
- pytorch (https://pytorch.org/)
References
[1] Scikit-learn official tutorials (https://scikit-learn.org/stable/tutorial/index.html)
[2] Andreas Mueller’s scikit-learn tutorial (https://amueller.github.io/sklearn_tutorial/)
[3] Pytorch tutorials (https://brsoff.github.io/tutorials/index.html)
[4] Awesome python machine learning (https://github.com/sorend/awesome-python-machine-learning)
Day 5 – August 9th
Python packages for molecules and materials, focus on basic data structures and functionalities.
- mendeleev (https://github.com/lmmentel/mendeleev)
- RDkit (https://www.rdkit.org/)
- pymatgen (https://pymatgen.org/)
- ASE (https://wiki.fysik.dtu.dk/ase/)
- molecular visualization tools
Reference
[1] RDKit tutorials (https://github.com/rdkit/rdkit-tutorials/tree/master/notebooks)
[2] RDKit cookbook (https://www.rdkit.org/docs/Cookbook.html)
[3] Pymatgen tutorial videos (https://www.youtube.com/c/MaterialsProject/videos)
[4] ASE tutorials (https://databases.fysik.dtu.dk/ase/tutorials/tutorials.html)