Constrained least-squares fitting with Python
Friday, March 5th, 2010 Posted in Python, Scientific computing | No Comments »Scipy contains a good least-squares fitting routine, leastsq(), which implements a modified Levenberg-Marquardt algorithm. I just learned that it also has a constrained least-squared routine called fmin_slsqp(). I am using simple upper and lower bound constraints, but it's also possible ...
Storing large Numpy arrays on disk: Python Pickle vs. HDF5
Sunday, January 10th, 2010 Posted in Python, Scientific computing, Software development | No Comments »In a previous post, I described how Python's Pickle module is fast and convenient for storing all sorts of data on disk. More recently, I showed how to profile the memory usage of Python code. In recent weeks, I've uncovered ...
f2py: binding Fortran and Python
Wednesday, September 23rd, 2009 Posted in Fortran, Python, Software development | No Comments »I have recently started using f2py to call Fortran from Python. I have found this useful for two reasons: speeding up Python scripts by calling compiled Fortran code, and using Python as a unit testing framework for Fortran modules. Unfortunately, ...
Profiling memory usage of Python code
Friday, April 17th, 2009 Posted in Linux, Python, Scientific computing, Software development | 2 Comments »In a previous post, I explained how to use the Python profiler. The profile is great for finding out which parts of the code run the slowest, or are called most often. However, the profiler doesn't give any information about ...
Lookup tables and spline fitting in Python
Wednesday, April 8th, 2009 Posted in Python, Scientific computing, Software development | No Comments »Lookup tables and spline fitting are widely used by scientific programmers. A particular function may not have an analytic solution--in other words, it can't be expressed as an equation of elementary functions. This might happen if the function were empirically ...
3D Plotting Software for Python::Part 1::PyX
Friday, March 20th, 2009 Posted in Python, Scientific computing, Software development | 3 Comments »There are lots of good open-source tools that you can use to make high-resolution, publication-quality 2D plots. Personally, I like to use Python, numpy, and matplotlib. Unfortunately, it is much harder to find a good tools to make 3D plots. ...
Updated Python class for writing Paraview (VTK) (.vtu) files
Friday, January 23rd, 2009 Posted in Python, Scientific computing | No Comments »I have released a new version of my Python class that generates VTK data files in the .vtu format, which is compatible with Paraview and other VTK applications. If you have downloaded the old one, please get the latest version, ...
Deploying Python applications on Windows
Thursday, January 15th, 2009 Posted in Linux, Python, Software development | No Comments »Writing applications in Python on a Linux system is almost too easy. Deploying Python apps on other Linux systems is not hard, because most Linux systems already have Python, with its core libraries and tools, installed. Most Linux systems also ...
Scipy.integrate ODEPACK import error solved!
Wednesday, January 14th, 2009 Posted in Linux, Python, Scientific computing | No Comments »I recently found a solution to a problem that had been vexing me for about a year. In order to successfully import anything from scipy.integrate, I had edit the file scipy/integrate/__init__.py and comment out the line from odepack import * If ...
Optimizing Python code for fast math
Friday, January 9th, 2009 Posted in Python, Scientific computing, Software development | 1 Comment »I spent some time today profiling a Brownian dynamics simulation written in Python to see how I could make it faster before starting some long runs on a Linux cluster. In the sections below, I have attempted to quantify ...
Redirecting standard output from Python: another example
Wednesday, January 7th, 2009 Posted in Python, Software development | No Comments »I wrote a previous post about how to redirect standard output from a Python script to a GUI window. In this post, I will give an even simpler example of to redirect standard output to a log file. During the ...
Tools for Python software development
Tuesday, January 6th, 2009 Posted in Linux, Python, Software development | No Comments »I have found a few tools over the years that I find extremely useful for developing software. Python is my language of choice at the moment, but I'm sure these tools will be handy for any language. Subversion is an ...
A lookup table for fast Python math
Thursday, December 11th, 2008 Posted in Python, Scientific computing | 2 Comments »EDIT: the UnivariateSpline class from Scipy is much faster! Numerical programming frequently requires the use of look-up tables. A look-up table is a collection of pre-computed values. When given an "x" value, the table returns a pre-computed "y" value. ...
Update 2: building 64-bit Numpy with Intel compilers and MKL
Tuesday, December 9th, 2008 Posted in Linux, Python, Scientific computing | No Comments »In a previous post I described how I built Numpy with Intel compilers and the Math Kernel Library on a 64-bit cluster. Today I upgraded to Numpy-1.2.1 and I made a few improvements to my install process. Please ...
Using Python to generate XML files for visualization in Paraview
Thursday, November 13th, 2008 Posted in Linux, Python, Software development | No Comments »VTK is an open-source software system for "3D computer graphics, image processing, and visualization" developed by by Kitware. VTK is the foundation of Paraview, an industrial-strength CFD visualization tool that I have found to be very useful. I ...
Unexpected integer/float math behavior in Python
Thursday, November 6th, 2008 Posted in Python, Software development | No Comments »I wasted some time today tracking down a bug in one of my programs. It turned out to be "unexpected behavior" rather than a bug. I was aware of this aspect of the language, but I made an assumption and ...
Profiling Python code
Friday, October 24th, 2008 Posted in Python | 1 Comment »"Speed" is a complicated term when used in the context of software. Does it mean raw speed of execution, or reducing the amount of time until a correct result is obtained? Python is not the first language that comes to ...
Updated: building 64-bit Numpy with Intel compilers (icc)
Friday, October 17th, 2008 Posted in Linux, Python | 1 Comment »I had to re-build Numpy because our cluster was upgraded and the Intel compilers and libraries were moved to a different directory. This turned out to be a half-day affair of trial-and-error. I learned a few important things, which I ...
Even faster collision detection in Python using Numpy
Thursday, October 16th, 2008 Posted in Python, Scientific computing, Software development | No Comments »Last night, in the shower, I realized that my collision detection routine could be even faster. Here is a representative snippet of code from my previous post: d2 = (x-self.x[0:i])*(x-self.x[0:i]) + (y-self.y[0:i])*(y-self.y[0:i]) + (z-self.z[0:i])*(z-self.z[0:i]) For some reason, I ...
Speeding up Python math with Numpy: collision detection example
Sunday, October 12th, 2008 Posted in Python, Software development | 1 Comment »Python is a very-high-level language. That makes it easy to write code quickly, but the program may not be as fast as a program compiled from a lower-level language. For this reason, many scientific programs are written in Fortran or ...

