{"id":13936921,"url":"https://github.com/scikit-fmm/scikit-fmm","last_synced_at":"2025-10-21T20:54:46.397Z","repository":{"id":2396588,"uuid":"3363200","full_name":"scikit-fmm/scikit-fmm","owner":"scikit-fmm","description":"scikit-fmm is a Python extension module which implements the fast marching method.","archived":false,"fork":false,"pushed_at":"2024-09-16T14:05:20.000Z","size":859,"stargazers_count":271,"open_issues_count":11,"forks_count":63,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-10-28T12:38:01.740Z","etag":null,"topics":["boundaries","differential-equations","numpy-arrays","python","python-extension","scikit-fmm","surface-modeling","surface-reconstruction"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scikit-fmm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-02-06T00:24:57.000Z","updated_at":"2024-10-23T12:36:23.000Z","dependencies_parsed_at":"2022-07-21T04:39:03.808Z","dependency_job_id":"f86805a8-a0d9-4fd4-a57d-6b951a39fc1e","html_url":"https://github.com/scikit-fmm/scikit-fmm","commit_stats":{"total_commits":216,"total_committers":22,"mean_commits":9.818181818181818,"dds":"0.25462962962962965","last_synced_commit":"d50367468f23416db23c9bb4e135616cb67e22cd"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scikit-fmm%2Fscikit-fmm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scikit-fmm%2Fscikit-fmm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scikit-fmm%2Fscikit-fmm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scikit-fmm%2Fscikit-fmm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scikit-fmm","download_url":"https://codeload.github.com/scikit-fmm/scikit-fmm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226693903,"owners_count":17667757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boundaries","differential-equations","numpy-arrays","python","python-extension","scikit-fmm","surface-modeling","surface-reconstruction"],"created_at":"2024-08-07T23:03:07.253Z","updated_at":"2025-10-21T20:54:41.364Z","avatar_url":"https://github.com/scikit-fmm.png","language":"Python","funding_links":[],"categories":["Python","Raytracing"],"sub_categories":[],"readme":"![Linux build](https://github.com/scikit-fmm/scikit-fmm/actions/workflows/build.yaml/badge.svg) ![Windows build](https://github.com/scikit-fmm/scikit-fmm/actions/workflows/windows_build.yaml/badge.svg) [![PyPI version](https://badge.fury.io/py/scikit-fmm.svg)](http://pypi.python.org/pypi/scikit-fmm)[![Documentation Status](https://readthedocs.org/projects/scikit-fmm/badge/?version=latest)](https://scikit-fmm.readthedocs.io/en/latest/?badge=latest) ![Contributors](https://img.shields.io/github/contributors/scikit-fmm/scikit-fmm.svg)\u003ca href=\"https://pepy.tech/project/scikit-fmm\"\u003e\u003cimg alt=\"Downloads\" src=\"https://pepy.tech/badge/scikit-fmm\"\u003e\u003c/a\u003e\n\n# scikit-fmm: the fast marching method for Python\n\n`scikit-fmm` is a Python extension module which implements the fast marching method.\nThe fast marching method is used to model the evolution of boundaries\nand interfaces in a variety of application areas. More specifically,\nthe fast marching method is a numerical technique for finding\napproximate solutions to boundary value problems of the Eikonal\nequation:\n\nF(x) | grad T(x) | = 1\n\nTypically, such a problem describes the evolution of a closed curve as\na function of time T with speed F(x)\u003e0 in the normal direction at a\npoint x on the curve. The speed function is specified, and the time at\nwhich the contour crosses a point x is obtained by solving the\nequation.\n\nscikit-fmm is a simple module which provides functions to calculate\nthe signed distance and travel time to an interface described by the\nzero contour of the input array phi.\n\n```python\nimport skfmm\nimport numpy as np\nphi = np.ones((3, 3))\nphi[1, 1] = -1\nskfmm.distance(phi)\n```\n\n  ```python\n   array([[ 1.20710678,  0.5       ,  1.20710678],\n          [ 0.5       , -0.35355339,  0.5       ],\n          [ 1.20710678,  0.5       ,  1.20710678]])\n  ```\n---\n```python\nskfmm.travel_time(phi, speed = 3.0 * np.ones_like(phi))\n```\n\n   ```python\n   array([[ 0.40236893,  0.16666667,  0.40236893],\n          [ 0.16666667,  0.11785113,  0.16666667],\n          [ 0.40236893,  0.16666667,  0.40236893]])\n   ```\n---\n\nThe input array can be of 1, 2, 3 or higher dimensions and can be a\nmasked array. A function is provided to compute extension velocities.\n\n### Documentation\n* http://scikit-fmm.readthedocs.org/en/master/\n\n### PyPI\n* http://pypi.python.org/pypi/scikit-fmm\n\n### Requirements\n* NumPy\n* Building requires the pypa/build module\n  (https://github.com/pypa/build) and a C/C++ compiler\n### Bugs, questions, patches, feature requests, discussion \u0026 cetera\n* Open a GitHub pull request or a GitHub issue\n* Email list: http://groups.google.com/group/scikit-fmm\n  * Send an email to scikit-fmm+subscribe@googlegroups.com to subscribe.\n\n### Installing\n* Via pip: `pip install scikit-fmm`\n* Anaconda linux-64 and linux-ppc64le packages:\n  * `conda install scikit-fmm`\n* Ubuntu PPA\n  * https://launchpad.net/~nvidia-digits/+archive/ubuntu/dev\n* Debian\n  * https://tracker.debian.org/pkg/scikit-fmm\n\n### Building and installing from Source\n* `pip install build`\n* `python -m build`\n* `pip install .`\n\n\n### Running Tests\n* `python -c \"import skfmm; skfmm.test(True)\"` (Do not run the tests from the source directory.)\n* Tests are doctests in `skfmm/__init__.py`\n\n### Building documentation\n* Requires sphinx and numpydoc\n* `make html`\n\n### Publications using scikit-fmm\n\n* Akinola, I., J Varley, B. Chen, and P.K. Allen\n  (2018) \"Workspace Aware Online Grasp Planning\" arXiv:1806.11402v1\n  [cs.RO] 29 Jun 2018 https://arxiv.org/pdf/1806.11402.pdf\n\n* Bortolussi, V., B. Figliuzzi, F. Willot, M.\n  Faessel, M. Jeandin (2018) \"Morphological modeling of cold spray\n  coatings\" Image Anal Stereol 2018;37:145-158 doi:10.5566/ias.1894\n  https://hal.archives-ouvertes.fr/hal-01837906/document\n\n* Chalmers, S., C.D. Saunter, J.M. Girkin and J.G. McCarron (2016)\n  \"Age decreases mitochondrial motility and increases mitochondrial\n  size in vascular smooth muscle.\" Journal of Physiology, 594.15 pp\n  4283–4295.\n\n* Diogo Brandão Amorim (2014) \"Efficient path planning of a mobile\n  robot on rough terrain\" Master's Thesis, Department of Aerospace\n  Engineering, University of Lisbon.\n\n* Giometto, A., D.R. Nelson, and A.W. Murray (2018)\n  \"Physical interactions reduce the power of natural selection in\n  growing yeast colonies\", PNAS November 6, 2018 115 (45) 11448-11453;\n  published ahead of print October 23, 2018\n  https://doi.org/10.1073/pnas.1809587115\n\n* Joshua A. Taillon, Christopher Pellegrinelli, Yilin Huang, Eric D.\n  Wachsman, and Lourdes G. Salamanca-Riba (2014) \"Three Dimensional\n  Microstructural Characterization of Cathode Degradation in SOFCs\n  Using Focused Ion Beam and SEM\" ECS Trans. 2014 61(1): 109-120;\n  https://www.joshuataillon.com/pdfs/2015-08-06%20jtaillon%203D%20SOFC%20cathode%20degradation.pdf\n\n* Marshak, C., I. Yanovsky, and L. Vese (2017) \"Energy\n  Minimization for Cirrus and Cumulus Cloud Separation in Atmospheric\n  Images\" IGARSS 2018 - 2018 IEEE International Geoscience and Remote\n  Sensing Symposium DOI: 10.1109/IGARSS.2018.8517940\n  ftp://ftp.math.ucla.edu/pub/camreport/cam17-68.pdf\n\n* Moon, K. R., V. Delouille, J.J. Li, R. De Visscher, F. Watson and\n  A.O. Hero III (2016) \"Image patch analysis of sunspots and active\n  regions.\" J. Space Weather Space Clim., 6, A3, DOI:\n  10.1051/swsc/2015043.\n\n* Tao, M., J. Solomon and A. Butscher (2016) \"Near-Isometric Level Set\n  Tracking.\" in Eurographics Symposium on Geometry Processing 2016\n  Eds: M. Ovsjanikov and D. Panozzo. Volume 35 (2016), Number 5\n\n* Thibaut, R., Laloy, E., Hermans, T., 2021. A new framework for\n  experimental design using Bayesian Evidential Learning: The\n  case of wellhead protection area. J. Hydrol. 603, 126903.\n  https://doi.org/10.1016/j.jhydrol.2021.126903\n\n* Vargiu, Antioco, M. Marrocu, L. Massidda (2015) \"Implementazione e\n  valutazione su un caso reale del servizio di Cloud Computing per la\n  simulazione di incendi boschivi in Sardegna\" (Implementation and\n  evaluation on a real case of Cloud computing service for simulation\n  of Forest fires in Sardinia). Sardinia Department of Energy and\n  Environment. CRS4 PIA 2010 D5.4.\n\n* Wronkiewicz, M. (2018) \"Mapping buildings with help from machine\n  learning\" Medium article, June 29th 2018\n  https://medium.com/devseed/mapping-buildings-with-help-from-machine-learning-f8d8d221214a\n\n* Makki, K., Ben Salem, D., Ben Amor, B. (2021) \"Toward the Assessment\n  of Intrinsic Geometry of Implicit Brain MRI Manifolds\" IEEE Access,\n  volume 9, pages  131054 - 131071 (September 2021)\n  DOI: 10.1109/ACCESS.2021.3113611\n  https://ieeexplore.ieee.org/abstract/document/9540688\n\n### Version History:\n* 0.0.1: February 13 2012\n  * Initial release\n* 0.0.2: February 26th 2012\n  * Including tests and docs in source distribution. Minor changes to\n    documentation.\n* 0.0.3: August 4th 2012\n  * Extension velocities.\n  * Fixes for 64 bit platforms.\n  * Optional keyword argument for point update order.\n  * Bug reports and patches from three contributors.\n* 0.0.4: October 15th 2012\n   * Contributions from Daniel Wheeler:\n     * Bug fixes in extension velocity.\n     * Many additional tests and migration to doctest format.\n     * Additional optional input to extension_velocities() for FiPy compatibly.\n* 0.0.5: May 12th 2014\n   * Fix for building with MSVC (Jan Margeta).\n   * Corrected second-order point update.\n* 0.0.6: February 20th 2015\n   * Documentation clarification (Geordie McBain).\n   * Python 3 port (Eugene Prilepin).\n   * Python wrapper for binary min-heap.\n   * Freeze equidistant narrow-band points simultaneously.\n* 0.0.7: October 21st 2015\n   * Bug fix to upwind finite difference approximation for negative\n     phi from Lester Hedges.\n* 0.0.8: March 9th 2016\n   * Narrow band capability: an optional \"narrow\" keyword argument\n     limits the extent of the marching algorithm (Adrian Butscher).\n* 0.0.9: August 5th 2016\n   * Periodic boundaries: an optional \"periodic\" keyword argument\n     enables periodic boundaries in one or more directions (Wolfram Moebius).\n* 2019.1.30 January 30th 2019\n   * Abrupt change to version numbering scheme.\n   * Bugfix in setup.py to allow installing via pip with numpy (ManifoldFR).\n   * Handle C++ exceptions during fast marching (Jens Glaser).\n   * Accept a zero discriminant in travel time point update.\n* 2021.1.20 January 20th 2021\n   * Fix divide by zero bugs in travel_time and extension_velocities\n   * Contributions from Murray Cutforth, f-fanni, and okonrad\n* 2021.1.21 January 21st 2021\n   * Minor C++ change (removed the auto keyword) to fix the compile on TravisCI.\n* 2021.2.2 February 2nd 2021\n   * Add a pyproject.toml file to specify numpy as a build\n     requirement, this is needed to build with new version of pip\n     (David Parsson).\n* 2021.7.8 July 8th 2021\n   * Add a pyproject.toml file to the MANIFEST.in file to fix the\n     numpy build dependency (David Parsson). Fix numpy deprecation\n     warnings and improve source code formatting (Robin Thibaut).\n* 2021.9.23 September 23rd 2021\n   * Make the pyproject.toml file specify the oldest supported\n     numpy as a build requirement, to allow using wheels with any\n     numpy version.\n     (David Parsson).\n* 2021.10.29 October 29th 2021\n   * Fix for point update discriminant exactly equal to zero\n   * Fall back calculation for point update when discriminant becomes negative\n   * (Joshua Gehre)\n* 2022.02.02 February 2nd 2022\n   * Fixes for Python 3.10 compatibility\n   * (Amin Sadeghi, Xylar Asay-Davis, David Parsson)\n* 2022.03.26 March 26th 2022\n   * Following the breaking changes in setuptools v61.0.0 it is\n     suggested to set py_modules to disable auto-discovery behavior.\n   * (Daniel Ammar)\n* 2022.08.15 August 15th 2022\n   * Following the breaking changes in setuptools v65 pin setuptools\n     to v64\n   * (DorSSS)\n* 2022.04.02 April 2nd 2023\n   * Build fixes for Python 3.11 (update pheap cython wrapper)\n   * No solver changes\n* 2024.05.29 May 29th 2024\n   * Update build system to use meson\n   * Python 3.12 support\n   * No solver changes\n* 2025.01.29 January 29th 2025\n   * NumPy 2.0 support on Linux and Windows\n   * Update to Github workflows to use v4 api\n   * Windows wheels\n   * Support for Python 3.13\n* 2025.01.29 June 23rd 2025\n   * Fixes for deprecated NumPy API and Python 3.11\n   * Github Workflow fixes\n\n\n\nCopyright 2025 The scikit-fmm team.\n\nBSD-style license. See LICENSE.txt in the source directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscikit-fmm%2Fscikit-fmm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscikit-fmm%2Fscikit-fmm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscikit-fmm%2Fscikit-fmm/lists"}