About This Course
This course will be delivered online due to new measures that are currently in place to slow the spread of COVID-19. The course will be taught virtually, with classes led online by an Enthought trainer in real-time on GoToWebinar.
We endeavour to deliver these virtual programs as we would a face-to-face program. Interaction with the trainer is encouraged.
This class is intended for scientists and engineers interested in using Python for their day-to-day computational tasks. These five days of highly interactive training will give you a rock solid base to build high-quality software in terms of both readability and performance.
This class is intended for scientists and engineers interested in using Python for their day-to-day computational tasks.
- It begins with a one-day introduction to the Python language focusing on standard data structures, control constructs, and code organization.
- After a brief overview of the Scientific Python ecosystem, we dive into techniques for numeric data processing, including efficiently manipulating and processing large data sets using NumPy arrays and data visualization with 2D plots using Matplotlib.
- Next up is an introduction to time series and data wrangling with Pandas.
- The fourth day covers the necessary tools to write robust and efficient Python code: a unit test framework, the Python debugger, and more. The second half presents how to create interfaces between Python and other languages such as C and C++.
- The week wraps up on day five with a one-day module on building scientific Graphical User Interfaces (GUIs).
"This workshop was EXCELLENT and has inspired me to use what I have learned to improve my scientific work flow and improve the efficiency of data analysis in my laboratory."
- Christopher W.
"The class will be immediately useful in my current research, and it will be exceptionally helpful in several developmental projects I have been planning. In the end, this course saved me lots of time I would have wasted looking for the right way to implement my code."
- Brett M.
Course Syllabus & Topics
Due to social distancing measures currently in place to slow the spread of COVID-19, we will be teaching this course online, running virtual classes in real-time on GoToWebinar with an Enthought trainer. The content and prerequisites for the virtual course do not differ from the face-to-face program.
Experience with Python is helpful (but not required). However, programming experience in some language (such as R, MATLAB, SAS, Mathematica, Java, C, C++, VB, or FORTRAN) is expected. In particular, participants need to be comfortable with general programming concepts like variables, loops, and functions.
1. Introduction to Python
We kick off the class by exploring the functionality of the IPython Shell, an enhanced interactive science-centric console. Next we review the Jupyter Notebook, a cell-based environment that renders scripts, plots, and rich media in a web-like interface, making it ideal for sharing and publishing analysis with peers. You’ll leave with a mastery of these tools that will accelerate your productivity and facilitate collaboration.
- Data-Types (strings, lists, dictionaries and more)
- Control Flow (if-then statements, looping)
- Organizing code (functions, modules, packages)
- Reading and writing files
- Overview of Object-Oriented Programming (OOP)
2. Introduction to NumPy and 2D plotting
- Plotting with matplotlib
- Understanding the N-dimensional data structure
- Creating arrays
- Indexing arrays by slicing or more generally with indices or masks
- Basic operations and manipulations on N-dimensional arrays
3. Time series analysis and data manipulation with Pandas
Built on top of NumPy arrays, the Python Data Analysis Library (Pandas) is a powerful and convenient package for dealing with multi-dimensional datasets. Participants will learn about its powerful data aggregation and reorganization capabilities for data set explorations, including support for labeling data along each dimension, missing values, and time series manipulations.
- Pandas I/O operations
- Pandas 1D and 2D data structures (Series and DataFrame)
- Data alignment, aggregation, and summarization
- Computation and analysis with Pandas
- Dealing with dates and times
1. Software Craftsmanship in Python
We review important concepts from software engineering and place them in the context of coding in Python. Participants will receive guidance and gain experience to help improve the quality, robustness and reliability of their code and develop solutions faster.Data-Types (strings, lists, dictionaries and more)
- Python coding standards and organization
- Testing code
- Timing execution and profiling tools
- Monitoring execution
2. Interfacing with Other Languages
One of Python’s most powerful features is its ability to integrate seamlessly with other languages such as C and C++. In this module, you will learn how to use tools for integrating Python with legacy code in C/C++ as well as optimizing new Python code with compiled modules. Key topics include:
1. Scientific GUIs and Interactive 2D/3D Visualization
Day five provides an overview of creating graphical UIs and visualization applications using Traits and Chaco. Participants will also learn to quickly visualize data in 3D with Mayavi.
Students will learn to drive their code with a visual interface: They will build basic Graphical User Interfaces with drop-down menus, buttons, checkboxes, and other GUI widgets and create simple interactive 2D visualizations with Chaco to provide a more fluid user workflow. Finally, students will learn how to extend such interfaces.
2. Building GUIs with Traits
- Creating reactive classes with initialization, validation, delegation, and notification
- Building a graphical view of a Traits class
- Organizing GUIs following the Model / View / Controller pattern
3. Interactive 2D visualization with Chaco
- Integration into Traits UI
- Scatter and line plots
- Image plots
- Containers for layout
- Simple tool creation for event handling
- Introduction to overlays
4. Interactive 3D visualization with Mayavi
- Interactive 3D plotting from IPython using mlab
- Overview of Mayavi’s capabilities
Open Class Schedule
If you registered to attend this course online, the session times will be sent to you one week before your program start date. The course will be held on GoToWebinar.
Onsite corporate classes are also available. Discounts are available for 3 or more attendees and academics currently at a degree-granting institution. Contact us using the form on this page to learn more.
|Where||When||Price (per person)||Reserve a Seat|
|Online - Live Virtual||June 8-12, 2020 | 8:30AM - 5:00PM MDT||SOLD OUT||Contact us with the form to the right to be added to the waiting list.|
|Online - Live Virtual||July 6-10, 2020 | 8:30AM - 5:00PM MDT||$2000||Register Online|
|Online - Live Virtual||August 17-21, 2020 | 8:30AM - 5:00PM MDT||$2000||Register Online|