SetDirectory@NotebookDirectory[];
Needs["IGraphM`"];

https://tabula-muris-senis.ds.czbiohub.org/limb-muscle/droplet/

Import UMAP coordinates.

points=Import["communities_at_different_resolutions.tsv",{"TSV","Data",2;;,{-2,-1}}];

Graphics[{AbsolutePointSize[1],Point[points]}]

Similarity graph

Import edge data:

edgeList=Import["edgelist.tsv",HeaderLines->1];
edgeList=MapAt[#+1&,edgeList,{All,1;;2}];

Length[edgeList]

Vertex count:

vmax=edgeList[[All,1;;2]]//Max

Build the graph:

simGraph=Graph[Range[vmax],edgeList[[All,1;;2]],EdgeWeight->edgeList[[All,3]],VertexCoordinates->points];

Find clusters with the Leiden algorithm using different resolution parameters.

clusterPlot[g_,r_]:=With[{clusters=IGCommunitiesLeiden[g,"Resolution"->r]["Communities"]},
Rasterize@Graphics[{
Opacity[0.3],
GraphicsComplex[GraphEmbedding[g],Thread@{ColorData[101]/@Range@Length[clusters],Point/@clusters}]
}]
]

SeedRandom[123];
Row[Image[#,Magnification->1]&/@{clusterPlot[simGraph,2^-9],clusterPlot[simGraph,2^-5],clusterPlot[simGraph,2^-1],clusterPlot[simGraph,2]}]

Create an animation with increasing resolution parameters.

frames=Table[
SeedRandom[42];
clusterPlot[simGraph,r],
{r,2^Range[-11,6,1/4]}
];//AbsoluteTiming

ListAnimate[frames,DefaultDuration->10]

SetDirectory@NotebookDirectory[];
Export["mma-clustering-animation.mp4",frames,FrameRate->7]

Geometric graph

Build Gabriel graph.

g=IGRelativeNeighborhoodGraph[points];
Graphics@GraphicsComplex[GraphEmbedding[g],Line@IGIndexEdgeList[g]]
wg=IGDistanceWeighted[g]//IGEdgeMap[Exp[-2#]&,EdgeWeight];

Create an animation of increasing resolution parameters.

SeedRandom[123];
Row[Image[#,Magnification->1]&/@{clusterPlot[wg,2^-12],clusterPlot[wg,2^-6.5],clusterPlot[wg,2^-2],clusterPlot[wg,2]}]

frames=Table[
SeedRandom[42];
clusterPlot[wg,r],
{r,2^Range[-15,5,1/4]}
];//AbsoluteTiming

ListAnimate[frames,DefaultDuration->10]

Export["mma-clustering-animation-geom.mp4",frames,FrameRate->7]