Direct Reprogramming - Fibroblast to iEP

12,000 cellssingle-cellgenomicstrajectorycosine

A TMAP of 12,000 cells balance-sampled across a direct reprogramming time course (day 0 to day 28, from an initial Fibroblast state to induced endodermal progenitor-like iEP cells), built from a 20-neighbor SVD representation with cosine metric. TMAP tree pseudotime correlates with the reference pseudotime at Spearman 0.771. Cell-state boundaries are largely coherent (9,543/11,999 edges, 79.5%, connect same-labeled cells; subtree purity mean 0.788), and the iEP fraction rises steadily across pseudotime quintiles (41.4% to 70.1%) before dipping in the last quintile (47.5%) as later time points mix converted and non-converted cells. An example 151-hop path from a day-0 fibroblast to a day-28 iEP crosses 25 label transitions, with the Fibroblast marker program (Col1a1/Col1a2/Tagln) giving way to the epithelial program (Krt8/Krt18/Krt19) along the route.

Direct Reprogramming - Fibroblast to iEPOpen full page
Loading interactive demo…

How it was made

generate.pypython
import scanpy as sc
from tmap import TMAP

adata = sc.read_h5ad("reprogramming_fibroblast_iep.h5ad")
# 20-neighbor SVD representation of the balanced day-sampled subset
model = TMAP(metric="cosine", n_neighbors=20, seed=42)
model.fit(adata.obsm["X_tmap_svd"])

# Trajectory from a day-0 fibroblast to a day-28 iEP
path = model.path(fibroblast_root_idx, iep_target_idx)
day = adata.obs["reprogramming_day"].values[path]
cell_type = adata.obs["cell_type"].values[path]

viz = model.to_tmapviz()
viz.add_color_layout("cell type", adata.obs["cell_type"].tolist(), categorical=True)
viz.add_color_layout("day", adata.obs["reprogramming_day"].tolist(), color="plasma")
viz.write_html("reprogramming-trajectory.html")