Load the library and the data

library(SpaGene)

load("MerFish/merfish_raw.rds")

Find spatially variable genes and patterns

merfish_sv<-SpaGene(count,location,knn=24)
#sort by adjp


merfish_sv_reorder<-merfish_sv$spagene_res[order(merfish_sv$spagene_res$adjp),]
# the most signifiant spatially variable genes
head(merfish_sv_reorder)
##          score      zval pval adjp
## Aqp4  33.67343 -40.46635    0    0
## Cd24a 29.66372 -66.91184    0    0
## Ermn  32.69815 -46.89872    0    0
## Gda   31.65402 -53.78514    0    0
## Mlc1  33.73963 -40.02976    0    0
## Prlr  33.98323 -38.42312    0    0
# the rank of Blank genes(negative controls)
grep("Blank",rownames(merfish_sv_reorder))
## [1] 150 152 153 160 161
pattern<-FindPattern(merfish_sv)

PlotPattern(pattern,location,pt.size = 0.3,max.cutoff = 1)

Top five genes falling into each pattern

top5<-apply(pattern$genepattern,2,function(x){names(x)[order(x,decreasing=T)][1:5]})
library(pheatmap)
pheatmap(pattern$genepattern[rownames(pattern$genepattern)%in%top5,])