Enthought Home
Enthought Training

1-Day Training Modules

Registration  |  General Course Information

We recommend Python for Scientists and Engineers as a prerequisite for all of our 1-day modules. Students with equivalent experience (thorough knowledge of Python, experience with NumPy, and a solid grasp of OOP) may also consider attending, but should be advised that these advanced training modules are handled at an accelerated speed.


Signal and Image Processing

SciPy contains many canned routines for doing advanced signal and image processing. In this course we describe both techniques and tools for processing digital signals with NumPy and SciPy.

  • Filter_design and filtering (time-domain and frequency-domain, FIR and IIR)
  • Block-based (streaming) filtering
  • Tools for linear system analysis and simulation
  • Waveform generation
  • General N-dimensional filtering (median, order, convolution)
  • Advanced interpolation and implications of sampling
  • Applications of ndimage (morphology, segmentation, filtering, interpolation)

Return to top

Statistics with Python

With the NumPy and SciPy extensions, Python can be used to do sophisticated statistical calculations. This one-day module will illustrate by example and exercises how to use tools in Python to do statistics. Topics to be covered include:

  • An interface to continuous and discrete random variable objects including capability to construct pdf, cdf, and random variates
  • How to simulate arbitrary discrete RVs
  • Tools and techniques for Monte Carlo simulation
  • Regression and curve fitting
  • A variety of statistical tests
  • Time series analysis
  • Bayesian analysis of data

Return to top

Optimization with Python

Many problems in science and engineering have an optimization step as a core component. In this course, techniques and tips for optimization using Python are taught. Because no optimization method is appropriate for every problem, each optimization method is prefaced by a description of the method and when it is appropriate to use. Methods covered in this course include:

Unconstrained

  • Nelder-Mead Simplex
  • Powell's level-set
  • Polak-Ribiere non-linear conjugate gradient
  • Quasi-Newton Broyden-Fletcher-Goldbarg-Shanno (BFGS)
  • Line-search Newton CG
  • Introduction to Trust Region Methods
  • Levenburg-Marquardt
  • Line search using strong Wolfe conditions

Constrained

  • L-BFGS-B
  • Truncated Newton
  • Constrained Optimization by Linear Approximation
  • Sequential Least Squares Programming
  • Non-negative least-squares

Global optimizers

  • Brute Force
  • Simulated Annealing
  • Introduction to Monte Carlo methods

Additional optimization resources

  • Root-finding and its relationship to optimization
  • CVXOPT
  • OpenOpt

Return to top

Reading and Writing Technical Data

The beginning and end of any data-processing workflow is data input and output. One of the strengths of Python and its many extension modules is that it can be very easy to read and write arbitrary binary and ascii data files. In addition, there are many specialized modules for reading and writing all kinds of data. In this module you will learn best-practice methods for reading and writing both ascii and binary data efficiently. In addition, the reading and writing of specialized data sets will be covered from the following list:

  • Excel
  • HDF
  • Web
  • NetCDF
  • PyTables
  • MATLAB
  • SQLite and integration with other databases

Return to top

Interfacing with C / C++ and Fortran

One of Python's greatest features is its ability to integrate seamlessly with C, C++, and Fortran. In this module you will learn how to use a variety of tools that have emerged for efficiently integrating with legacy code as well as optimizing new code with compiled modules. This module extends the material covered on the third day of the Python for Scientists and Engineers course. Topics to be covered can be modified to suit participants interest but can include:

  • Integrating with Fortran using f2py
  • Integrating legacy C / C++ code using SWIG
  • In-lining C/C++ in a Python application using weave
  • Calling arbitrary shared-libraries with ctypes
  • Creating new extension modules with Cython
  • Overview of other tools
  • Use of the NumPy C-API
  • Managing memory and dealing with C++ objects
  • Embedding Python in a C/C++ application.

Return to top

Introduction to UIs and Visualization for Scientific Applications

This one day course is a condensed version of portions of the 3-day course which covers just the basics of Traits and Chaco. Students will learn the basics of Traits and how to build simple interactive visualizations with Chaco. Topics included:

Traits

  • Notification
  • Visualization
  • Validation
  • Initialization
  • Delegation

Chaco

  • Integration into Traits UI
  • Scatter and line plots
  • Image plots
  • Containers for layout
  • Simple tool creation for event handling
  • Introduction to overlays

Return to top

MultiProcessing / Parallel Processing

Some approaches to concurrency are not appropriate in Python because of CPython's Global Interpreter Lock. In this 1/2-day course, techniques for creating concurrent programs with Python are discussed particularly as they relate to task parallel (embarassingly parallel) problems. We cover both on-machine as well as cluster-based parallel processing.

  • Subprocess
  • Multiprocessing
  • IPython kernel
  • Additional modules
    • mp4pi
    • parallel python (pp)
    • rthread

Return to top

Linear Algebra

NumPy and SciPy provide a rich array of tools for solving sophisticated linear algebra problems. Tools for small dense systems as well as large sparse systems are available.

  • Matrix objects: sparse and dense
  • Matrix Decompositions: eigenvector, qr, lu, schur, svd, etc.
  • Matrix Functions
  • Solving Linear Systems
  • Iterative Solvers: cgs, qmr, gmres, bicg, bicgstab
  • Raw Interface to LAPACK
  • Raw Interface to BLAS
  • Speeding up linear algebra with vendor-tuned BLAS

Return to top

Migrating from MATLAB to Python (1/2-day module + 1/2-day consulting)

With Python's high-level of expressiveness and expanding warehouse of libraries and scientific modules, many scientists and engineers are finding that they can replace their use of Matlab with Python plus extensions. This 1-day course is a combination of 1/2-day of training and 1/2-day of customer specific migration consulting. It provides guidance specific to people transitioning from Matlab to Python. Topics for the 1/2-day of training include:

  • Reading and writing .mat files in Python
  • Translating typical Matlab commands to Python equivalents
  • Toolbox equivalents in Python
  • How to manage any gaps in functionality
  • Getting the most out of available documentation
  • Subtle differences between Matlab's matrices and NumPy's arrays
  • Porting .mex extensions
  • Tips and tricks
  • Understanding and exploiting Python's strengths
  • Plotting with matplotlib
  • Brief introduction to Python UI construction with the Enthought Tool Suite

Return to top

Tour of Python Libraries

One of Python's strengths is the vast array of Python libraries that are available both in the standard library and in distributions like the Enthought Python Distribution. This one-day course presents the most commonly used tools such as those in the following incomplete list:

  • re: regular expressions
  • os, sys, os.path, shutil: system manipulation and filesystem operations
  • datetime: date and time manipulations
  • math, cmath: math on floats and complex numbers
  • decimal, fraction: arbitrary precision float and rational numbers
  • urllib2: module for accessing URLs
  • struct: module for accessing raw binary data
  • httplib, ftplib, socket, poplib, email: modules for internet protocols
  • gzip, bz2, zipfile, tarfile: compression and archiving formats
  • csv, netrc, json, config, xml: reading and writing basic file formats
  • htmlib, BeautifulSoup: parsing HTML
  • profile, cProfile, timeit: Python profilers
  • collections, heapq, bisect, blist: CS algorithms and data structures
  • email, smtplib: email messaging including MIME types
  • threading, Queue, subprocess: introduction to concurrency
  • pickle, cPickle: object serialization and persistence
  • argparse: parsing command line arguments
  • sqlite3, SQLAlchemy: database integration

Return to top

Software Craftmanship in Python

The art of computer programming develops in concert with the tools available for coding. This course reviews important concepts from software engineering and places them in the context of coding in Python. This course can be targeted particularly towards a technical audience or developers who interact with a technical audience. Participants will receive guidance and experience to help improve the quality of their code.

  • Coding modes and basic concepts
  • Naming variables
  • Documenting code
  • Coding standards
  • Python programming style
  • Code evolution
  • Testing code

Return to top

Consultation (1/2-day)

This module provides an opportunity for students to work with experts on a coding project of their choosing. The instructor and/or additional members of the Enthought development team will work with students for half a day to review design ideas, offer suggestions, and even pitch in on development

Return to top