In Silico Fate Mapping



License BSD-3 PyPI Python Version tests codecov napari hub

Interactive in silico fate mapping from tracking data.

This napari plugin estimates the cell fates from tracking data by building a radial regression model per time point. The user can select an area of interest using a Points layer; the algorithm will advent the probed coordinates forward (or backward) in time, showing the estimated fate.

Video example below:


We suggest you create a fresh conda environment to avoid conflicts with your existing package. To do this, you need to:

conda create -n fatemap python=3.11
conda activate fatemap

And then, you can install in-silico-fate-mapping via pip and other additional useful packages:

pip install ultrack napari-ome-zarr napari[all] in-silicio-fate-mapping

To install the latest development version :

pip install git+

IO file format

This plugin does not depend on a specific file format, the only requirement is using a Track layer from napari.

Despite this, we ship a reader and writer interface. It supports .csv files with the following reader TrackID, t, (z), y, x, z is optional. Such that each tracklet has a unique TrackID and it's composed of a sequence o time and spatial coordinates.

This is extremely similar to how napari store tracks, more information can be found here.

Divisions are not supported at the moment.

Usage Example

Minimal example

Minimal example using a track file following the convention described above.

import napari
import pandas as pd
from in_silico_fate_mapping.fate_mapping import FateMapping

tracks = pd.read_csv("tracks.csv")

fate_map = FateMapping(radius=5, n_samples=25, bind_to_existing=False, sigma=1) = tracks[["TrackID", "t", "z", "y", "x"]]

source = tracks[tracks["t"] == 0].sample(n=1)

tracks = fate_map(source[["t", "z", "y", "x"]])


Zebrahub example

Zebrafish embryo tail example. This example requires the package napari-ome-zarr.

import napari
import pandas as pd
from in_silico_fate_mapping import FateMappingWidget

image_path = ""
tracks_path = ""

viewer = napari.Viewer()
viewer.window.add_dock_widget(FateMappingWidget(viewer)), plugin="napari-ome-zarr")

tracks = pd.read_csv(tracks_path)
viewer.add_tracks(tracks[["TrackID", "t", "z", "y", "x"]])
viewer.add_points(name="Markers", ndim=4)


If used please cite:

  title={Zebrahub-Multimodal Zebrafish Developmental Atlas Reveals the State Transition Dynamics of Late Vertebrate Pluripotent Axial Progenitors},
  author={Lange, Merlin and Granados, Alejandro and VijayKumar, Shruthi and Bragantini, Jordao and Ancheta, Sarah and Santhosh, Sreejith and Borja, Michael and Kobayashi, Hirofumi and McGeever, Erin and Solak, Ahmet Can and others},
  publisher={Cold Spring Harbor Laboratory}


If you encounter any problems, please file an issue along with a detailed description.


  • 0.1.2

Last updated:

  • 10 April 2024

First released:

  • 27 February 2023


Supported data:

  • Information not submitted

Open extension:

Save extension:

Save layers:

GitHub activity:

  • Stars: 5
  • Forks: 0
  • Issues + PRs: 1

Python versions supported:

Operating system:


  • numpy
  • pandas
  • scikit-learn
  • zarr
  • magicgui
  • qtpy
  • napari
  • click

Sign up to receive updates