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, MSVC)

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.
0.0.5: May 12th 2014
  • Fix for building with MSVC (Jan Margeta).
  • Corrected second-order point update.
Copyright:Copyright 2014 The scikit-fmm team.
License:BSD-style license. See LICENSE.txt in the scipy source directory.

Project details

Release history Release notifications

History Node


History Node


History Node


History Node


This version
History Node


History Node


History Node


History Node


History Node


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
scikit-fmm-0.0.5.tar.gz (198.2 kB) Copy SHA256 hash SHA256 Source None May 12, 2014
scikit-fmm-0.0.5.win32-py2.7.exe (231.2 kB) Copy SHA256 hash SHA256 Windows Installer 2.7 May 12, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page