I am running a single cell dataset (count data - exon) through Seurat. After running tsne I see a cluster (13) split in 3 different locations on the plot. Here are the commands I am running:
library('Seurat') ## rows (genes) that have 99% zeros were filtered out, ## and then columns (cells) that have 99% zeros were filtered out isp.data <- read.table(file = "genes.cells99.percent.filtered", sep = ",", row.names = 1, header=TRUE) isp <- CreateSeuratObject(raw.data = isp.data, project = "brain_regions") isp <- NormalizeData(object = isp, normalization.method = "LogNormalize",scale.factor = 10000) isp <- FindVariableGenes(object = isp, mean.function = ExpMean, dispersion.function = LogVMR,do.plot = FALSE) hv.genes <- head(rownames(email@example.com), 1000) isp <- ScaleData(object = isp, genes.use = hv.genes, num.cores = 3) isp <- RunPCA(object = isp, pc.genes = hv.genes, pcs.compute = 100, do.print = TRUE, pcs.print = 1:5, genes.print = 5) PCElbowPlot(object = isp, num.pc = 100) isp <- JackStraw(object = isp, num.replicate = 100, display.progress = FALSE, num.pc = 30) JackStrawPlot(object = isp, PCs = 1:30) isp <- FindClusters(object = isp, reduction.type = "pca", dims.use = 1:26, resolution= 0.75, print.output = 0, save.SNN = TRUE, force.recalc=TRUE) isp <- RunTSNE(isp, dims.use = 1:26, do.fast = T) TSNEPlot(isp, do.label = T, pt.size = 0.5)
Here is the tsne plot:
I have tried varying parameters for resolution in FindClusters (from 0.5-3.5), but that just increases the clusters found. Further I tried to play around with parameters min.dist (0.75,1), n_neighbors (10 to 30) and perplexity(5 to 50) but I still get at least 1-2 clusters split in the tsne plot.
Another thing I have tried is to reduce the dimension (dims.use=10) on which tsne is ran but the clusters seem to be too close together, like so:
Note: Dimensionality of dataset (after filtering) - 23824 genes across 8967 samples.
My question being why does such behavior happen? Is my filtering strategy not correct? Have I not normalized/scaled data correctly?