GEO单细胞测序数据挖掘全在这里

1. 首先GEO下载的数据可能会有问题:

1.1 genes.tsv文件只有一列,缺第一列和第三列,遇到这种情况第一列ENSG123433这种字符串补上即可,第三列全部写Gene Expression;

1.2 .mtx文件也可能有问题:主要是第一列和第二列顺序错误,需要调换。第一列是基因编号,第二列是细胞编号才对;另外第三列count必须是整数,如果不是整数要改为整数

1.3 下载的数据的分组信息在xxx_metadata.tsv里面,需要自己写代码整合到barcodes.tsv文件中,详见后面的代码

上述问题解决后,把文件改为barcodes.tsv.gz,features.tsv.gz,matrix.mtx.gz就可以使用Seurat包的Read10X正常读取。

这里以GSE151674的数据为例进行分析,代码如下:

```

############################################################################

#####chongzuo chongzuo chongzuo########

setwd('F://danxibaofenxi20230529//GSE151674//analysis')

#BiocManager::install('SoupX')

rm(list=ls())

library(dplyr)

#install.packages('dplyr')

library(Seurat)

#BiocManager::install('lazyeval')

library(patchwork)

## =============1.Load the PBMC dataset

data_dir <- "."

pbmc.data <- Read10X(data.dir = data_dir)

pbmc.data

pbmc <- CreateSeuratObject(counts = pbmc.data,

                          project = "pbmc3k",

                          min.cells = 3,

                          min.features = 200)

head(pbmc@meta.data)

library(tidyverse) #加载tidyverse

#BiocManager::install('tidyverse')

#nstall.packages("tidyverse")

rownames(pbmc@meta.data) -> pbmc@meta.data$rowLeo #反向赋值,增加了1列

head(pbmc@meta.data) #展示如下

str_split(pbmc$rowLeo,"_") 

head(str_split(pbmc$rowLeo,"_",simplify=T) [,3])

str_split(pbmc$rowLeo,"_",simplify=T) [,3] -> pbmc@meta.data$group #反向赋值,实现分组

head(pbmc@meta.data)

names(pbmc@meta.data)

unique(pbmc$group)

####

## =============3.QC

# The [[ operator can add columns to object metadata. This is a great place to stash QC stats

grep(pattern = "^mt-", rownames(pbmc), value = T)

pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^mt-")

##

# QC指标

head(pbmc@meta.data, 5)

summary(pbmc@meta.data$nCount_RNA)

# QC指标使用小提琴图可视化

#VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)

# 密度曲线图

data <- pbmc@meta.data

library(ggplot2)

p <- ggplot(data = data, aes(x=nFeature_RNA)) + geom_density()

p

# 两个指标之间的相关性

plot1 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "percent.mt")

plot2 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")

plot1 + plot2

# 过滤

pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)

## =============4.标准化

# LogNormalize

pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)

# 标准化后的值保存在:pbmc[["RNA"]]@data

normalized.data <- pbmc[["RNA"]]@data

normalized.data[1:20,1:4]

dim(normalized.data)

##5、选择高变基因

## =============5.鉴定高变基因

# 高变基因:在一些细胞中表达高,另一些细胞中表达低的基因

# 变异指标: mean-variance relationship

# 默认返回两千个高变基因,用于下游如PCA降维分析。

pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)

# 提取前10的高变基因

top10 <- head(VariableFeatures(pbmc), 10)

top10

all <- head(VariableFeatures(pbmc), 2000)

write.csv(all,'allGaoBianGene.csv')

# 展示高变基因

plot1 <- VariableFeaturePlot(pbmc)

plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)

plot1 + plot2

#6、Scaling the data 归一化数据

## =============6.Scaling the data

# 归一化处理:每一个基因在所有细胞中的均值变为0,方差标为1,对于降维来说是必需步骤

# 归一化后的值保存在:pbmc[["RNA"]]@scale.data

pbmc <- ScaleData(pbmc)

scale.data <- pbmc[["RNA"]]@scale.data

dim(scale.data)

scale.data[1:10,1:4]

# 可以选择全部基因归一化 !注意! !注意!

#all.genes <- rownames(pbmc)

#pbmc <- ScaleData(pbmc, features = all.genes)

## =============7.降维

# PCA降维,默认使用前面2000个高变基因,可以使用features改变用于降维的基因集

pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))

# 可视化

VizDimLoadings(pbmc, dims = 1:2, reduction = "pca")

DimPlot(pbmc, reduction = "pca")

DimHeatmap(pbmc, dims = 1, cells = 500, balanced = TRUE)

DimHeatmap(pbmc, dims = 1:6, cells = 500, balanced = TRUE)

## =============8.确定使用PC个数

# each PC essentially representing a ‘metafeature’

pbmc <- JackStraw(pbmc, num.replicate = 100)

pbmc <- ScoreJackStraw(pbmc, dims = 1:20)

JackStrawPlot(pbmc, dims = 1:20)

ElbowPlot(pbmc)

## =============9.对细胞聚类

# 首先基于PCA空间构建一个基于欧氏距离的KNN图

pbmc <- FindNeighbors(pbmc, dims = 1:20)

# 聚类并最优化

# resolution参数:值越大,细胞分群数越多,

# 0.4-1.2 typically returns good results for single-cell datasets of around 3K cells

# Optimal resolution often increases for larger datasets.

pbmc <- FindClusters(pbmc, resolution = 0.5)

# 查看聚类数ID

head(Idents(pbmc), 5)

# 查看每个类别多少个细胞

head(pbmc@meta.data)

table(pbmc@meta.data$seurat_clusters)

##

## =============10.将细胞在低维空间可视化UMAP/tSNE

pbmc <- RunUMAP(pbmc, dims = 1:20)

pbmc <- RunTSNE(pbmc, dims = 1:20)

DimPlot(pbmc,split.by = 'group')

# 可视化

#DimPlot(pbmc, reduction = "umap", label = T, label.size = 5)

#DimPlot(pbmc, reduction = "tsne", label = T, label.size = 5)

saveRDS(pbmc, file = "pbmc_tutorial.rds")

####

###1.细胞注释

############细胞注释2

# 清空当前环境变量

#rm(list=ls())

options(stringsAsFactors = F)

# 加载包

library(Seurat)

library(SingleR)

#BiocManager::install('celldex')

refdata <- HumanPrimaryCellAtlasData()

save(refdata,file = "refdata.RData")

load("./refdata.RData")

getwd()

refdata

head(colnames(refdata))

head(rownames(refdata))

# 查看共有多少种细胞类型

unique(refdata@colData@listData[["label.main"]])

# 加载pbmc结果

#pbmc <- readRDS("pbmc_tutorial.rds")

# 使用的数据为标化后的数据

testdata <- GetAssayData(pbmc, slot="data")

dim(testdata)

testdata[1:30,1:4]

clusters <- pbmc@meta.data$seurat_clusters

table(clusters)

cellpred <- SingleR(test = testdata, 

                    ref = refdata,

                    labels = refdata$label.main,

                    method = "cluster",

                    clusters = clusters,

                    assay.type.test = "logcounts",

                    assay.type.ref = "logcounts")

str(cellpred,max.level = 3)

metadata <- cellpred@metadata

head(metadata)

celltype = data.frame(ClusterID = rownames(cellpred),

                      celltype = cellpred$labels,

                      stringsAsFactors = F)

celltype

write.csv(celltype, "celltype_anno_SingleR.csv")

levels(pbmc)

new.cluster.ids <- c("Neutrophils","Neutrophils","DC",

                    "Neutrophils","Neutrophils","Neutrophils",

                    "Epithelial_cells","Monocyte","Neutrophils",

                    "HSC_-G-CSF","Fibroblasts","DC","Neutrophils",

                    "Neutrophils","DC","Neutrophils","Neutrophils",

                    "Neutrophils","Neutrophils","Macrophage","Neutrophils",

                    "Gametocytes","HSC_-G-CSF")

names(new.cluster.ids) <- levels(pbmc)

new.cluster.ids

pbmc <- RenameIdents(pbmc, new.cluster.ids)

###

VlnPlot(pbmc,features = c("Irak4", "Cdk9", 'Tyk2', 'Jak1', 'Jak2', 'Jak3'),idents = '0', split.by = 'group',split.plot = TRUE)

DotPlot(pbmc,features = "Irak4",split.by ='group',cols = c('blue','yellow','pink', 'green', 'orange'))

DimPlot(pbmc,split.by = 'group', reduction = "umap", cols = c('blue','yellow','pink', 'green', 'orange','black', 'purple', 'red'))

DimPlot(pbmc,split.by = 'group', reduction = "tsne", cols = c('blue','yellow','pink', 'green', 'orange','black', 'purple', 'red'))

###其他图

VlnPlot(pbmc,features = 'Jak2',split.by = 'group', cols = c('blue','yellow','pink'))

names(pbmc@meta.data)

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容