In recent years there has been increased interest in using the scripting language Python for scientific programming. As well as Python packages such as SciPy (Scientific Python) there are several applications where Python is used to create a more user friendly and application specific environment for accessing highly tuned code such as linear solvers. The user can pose their problem in a natural way using Python module extensions and the interaction with sophisticated numerical packages or visualization is handled by the Python bindings.
A one day workshop on the use of Python in scientific computing was held on July 6, 2006 at James Cook University, Townsville, following the CTAC'06 conference.
There is to be no formal publication of proceedings of this workshop but presentations will be recorded informally at this site.
The organising committee includes:
The program for the day is as follows:
Slides from the talk are here.
The investigation of biochemical reactions with low copy numbers but many different species poses a collection of computational problems. I will discuss some of these problems and some solutions using Python. We chose Python as a vehicle as with a low initial investment it provides returns right from the start. Several basic concepts like object oriented programming, list processing and binding in Fortran or C code will be illustrated.
I will start with the implementation of a sparse grid function space
for modeling probability distributions on a discrete but infinite and
high dimensional state space. Besides the infinity of the state space
one also has to overcome the curse of dimensionality -- with sparse
grids of course. Then I will talk about how we bind in the Expokit
code by Roger Sidje for the solution of the master equations which are
large linear ordinary differential equations. Finally I will cover an
example of the application and implementation of a simple Python
matrix class using a Python wrapper (Lineal) around PetSC which was
created using pyrex and pyxelator by Simon Burton.
Slides of the talk are here.
Abstract:
Multiphysics models such as coupled climate models are typically built from
numerous separately-developed codes that are integrated into a single mutually
interacting system. The couplings between these codes pose their own software
architecture challenges, and object oriented programming (OOP) is one tool for
conquering this complexity. Python is the language of choice for fast prototyping
and assembly of codes from multiple components. Python is superior to languages
such as C and Fortran in its support of OOP. We have pursued this goal for
version 3.0 of the Community Climate System Model (CCSM), a coupled climate
model with a large international academic user base. CCSM uses a hub-and-spokes
architecture, with its subsystem models (atmosphere, ocean, sea-ice and land surface
existing as 'spokes' that communicate via a central hub (the flux coupler).
CCSM's coupler, CPL6 is a fairly flexible, modular, and extensible hub, and a
dramatic improvement in these aspects over its predecessor CPL5 found in CCSM 2.0.
Still, CPL6 is not sufficiently flexible nor configurable for many types of
climate studies that might be pursued using CCSM. A Python implementation of
CPL6, with better exploitation of object-oriented programming techniques can
meet these requirements. In this presentation we report on a proof-of-concept
Python implementation of CPL6--pyCPL--and describe the technical challenges
surmounted in its realization. We will discuss a Python API for CCSM's coupling
middleware, the Model Coupling Toolkit (MCT), pyMCT, outline how pyMCT was used
to build pyCPL, and subsequently how pyCPL has enabled a prototype Python-assembled
CCSM.