3D visualization of gene expression patterns
rm(list = ls()) library(rgl) library(misc3d) library(stringr) knitr::knit_hooks$set(webgl = hook_webgl)
Plot gene expression
Load gene expression
counts <- read.table("./data/Filtered/filtered_ST_matrix_and_meta_data/filtered_matrix.tsv", sep="\t", header=TRUE, row.names="X")
meta <- read.table("./data/Filtered/filtered_ST_matrix_and_meta_data/meta_data.tsv", sep="\t", header=TRUE)
gene_new <- read.table("genes_new.txt", sep=",", header=TRUE)
counts <- t(counts)
colnames(counts) <- gene_new$x
spots.table <- cbind(rownames(counts), data.frame(counts, row.names=NULL))
colnames(spots.table)[1] <- "X"
loc <- str_split_fixed(spots.table$X, "x", 2)[, 2]
slice <- str_split_fixed(spots.table$X, "x", 2)[, 1]
slice <- gsub("X", "", slice)
slice <- as.numeric(slice)
spots.table$slice <- slice
spots.table$X <- paste0(loc, "-slice", slice-5)
coor_3d <- read.table(paste0("./results_6PCW/3D_coordinates.csv"), sep=",", header=TRUE)
spots.table <- merge(spots.table, coor_3d, by=c("X"))
spots.table <- spots.table[spots.table$slice >= 5 & spots.table$slice <= 13,]
spots.table$x <- -spots.table$x
spots.table$z <- spots.table$z * 2
gene = "FOS" max = 20 # set maximum value #open 3D plot window open3d(windowRect = c(0, 0, 720, 720))
## glX ## 1
par3d(persp)
## NULL
um <- c(-0.8227578, -0.5278972, 0.2107004, 0,
-0.5608635, 0.8141541, -0.1502849, 0,
-0.0922074, -0.2418221, -0.9659296, 0,
0.0000000, 0.0000000, 0.0000000, 1)
view3d(userMatrix = matrix(um, byrow=TRUE, nrow=4))
idx_gene = (spots.table[gene]>0)
spheres3d(spots.table[idx_gene,]$x, spots.table[idx_gene,]$y, spots.table[idx_gene,]$z, col = '#7751A8',
radius=0.3, alpha=spots.table[idx_gene, gene] / max)
spheres3d(spots.table[!idx_gene,]$x, spots.table[!idx_gene,]$y, spots.table[!idx_gene,]$z, col = "gray", radius=0.3, alpha=0.1)
decorate3d()