GraphPCA and clustering

GraphPCA

graphpca_spatialdata performs PCA on the ion intensity matrix with optional spatial smoothing via a k-nearest-neighbour graph on the pixel coordinates.

sdata = gp.graphpca_spatialdata(
    sdata,
    tables="maldi_adata",
    n_components=50,
    alpha=0.0,        # 0 = no smoothing, higher = more smoothing
    n_neighbors=10,
)

Results are stored in sdata["maldi_adata"].obsm["GraphPCA"].

Spatial smoothing

Setting alpha > 0 smooths the PCA scores over the tissue using a graph Laplacian regulariser. This reduces noise while preserving spatial structure.

sdata = gp.graphpca_spatialdata(sdata, n_components=30, alpha=0.5, n_neighbors=10)

A higher alpha produces smoother results but may over-smooth fine structures. Values between 0.1 and 1.0 are a good starting range.

K-means clustering

sdata = gp.get_kmean_clusters(
    sdata,
    n_clusters=8,
    cluster_key="GPCA_clusters",
)

Cluster labels are stored in sdata["maldi_adata"].obs["GPCA_clusters"] as a categorical column.

Visualising clusters as a pseudo-image

sdata = gp.Add_Pseudo_Image(sdata, "GPCA_clusters")

This creates a colour image in sdata.images["optical_image"] where each pixel is coloured by its cluster label.