Skip to main content

An extension module implimenting the fast marching method

Project description

scikit-fmm is a Python extension module which implements the fast marching method.

The fast marching method is used to model the evolution of boundaries and interfaces in a variety of application areas. More specifically, the fast marching method is a numerical technique for finding approximate solutions to boundary value problems of the Eikonal equation:

F(x) | grad T(x) | = 1.

Typically, such a problem describes the evolution of a closed curve as a function of time T with speed F(x)>0 in the normal direction at a point x on the curve. The speed function is specified, and the time at which the contour crosses a point x is obtained by solving the equation.

scikit-fmm is a simple module which provides functions to calculate the signed distance and travel time to an interface described by the zero contour of the input array phi.

>>> import skfmm
>>> import numpy as np
>>> phi = np.ones((3, 3))
>>> phi[1, 1] = -1
>>> skfmm.distance(phi)
array([[ 1.20710678,  0.5       ,  1.20710678],
       [ 0.5       , -0.35355339,  0.5       ],
       [ 1.20710678,  0.5       ,  1.20710678]])
>>> skfmm.travel_time(phi, speed = 3.0 * np.ones_like(phi))
array([[ 0.40236893,  0.16666667,  0.40236893],
       [ 0.16666667,  0.11785113,  0.16666667],
       [ 0.40236893,  0.16666667,  0.40236893]])

The input array can be of 1, 2, 3 or higher dimensions and can be a masked array. A function is provided to compute extension velocities.


Release Version: Development Version:


Source Code:

Requirements: Numpy and a C/C++ compiler (gcc/MinGW)

Bugs, questions, patches, feature requests, discussion & cetera:

Email list: Send an email to to subscribe.


$ python install

Testing (doctest):

$ python -c “import skfmm; skfmm.test()”

Building documentation (required sphinx and numpydoc):

$ make html

Version History:

0.0.1: February 13 2012

Initial release

0.0.2: February 26th 2012

Including tests and docs in source distribution. Minor changes to documentation.

0.0.3: August 4th 2012

Extension velocities. Fixes for 64 bit platforms. Optional keyword argument for point update order. Bug reports and patches from three contributors.

0.0.4: October 15th 2012
Contributions from Daniel Wheeler:
  • Bug fixes in extension velocity.

  • Many additional tests and migration to doctest format.

  • Additional optional input to extension_velocities() for FiPy compatibly.


Copyright 2012 The scikit-fmm team.


BSD-style license. See LICENSE.txt in the scipy source directory.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (210.8 kB view hashes)

Uploaded Source

Built Distribution

scikit-fmm-0.0.4.win32-py2.7.exe (238.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page