我们生信技能树的一个学徒在看单细胞文献的时候,看到一篇文章在做单细胞数据预处理的时候,过滤了1514个基因!包括50个线粒体基因(通常我们做的时候都是^MT-开头,是13个基因对吧),178个热休克蛋白基因,1253个核糖体基因,以及33个解离相关基因(这个听都没听过啊)。相关的单细胞文献为《UPP1 promotes lung adenocarcinoma progression through the induction of an immunosuppressive microenvironment》,于2024年2月份发表在 Nature Communications杂志上。
问kimi(https://kimi.moonshot.cn/):人类基因名字里面的:mitochondria(50 genes), heat-shockprotein (178 genes), ribosome (1253genes), and dissociation (33 genes) 这些基因该如何拿到?
要获取人类基因组中与“线粒体(mitochondria)”“热休克蛋白(heat-shock protein)”“核糖体(ribosome)”和“解离(dissociation)”相关的基因信息,可以通过以下途径: 1. 线粒体相关基因(mitochondria genes)
2. 热休克蛋白相关基因(heat-shock protein genes)
3. 核糖体相关基因(ribosome genes)
4. 解离相关基因(dissociation genes)
其他建议
通过以上方法,可以较为全面地获取这些基因的相关信息。
人工智能大模型这里也没有很智能的给出这些相关基因列表,我们还是多看文献,从文献里面收集。
将这些基因下载并保存在一个txt文档中:
我们随便找一个单细胞数据看看去除前与后的情况,这里我们使用 GSE163558 数据:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE163558,这个数据的预处理以及基础分析见我们之前的帖子:《单细胞转录组降维聚类分群过滤基因和过滤细胞的区别》。
简单看一下数据的降为聚类umap图:
rm(list=ls())
library(Seurat)
library(tidyverse)
library(harmony)
# 加载之前的GSE163558单细胞数据分析结果
data.filt = readRDS('./inputs/sce.all_int.rds')
data.filt
# 24583 features across 7044 samples
head(data.filt)
table(data.filt$orig.ident)
DimPlot(data.filt,label = T)
# 加载注释结果
load('inputs/phe.Rdata')
data.filt$celltype <- phe$celltype
DimPlot(data.filt,group.by = 'celltype',label = T)
注释的umap结果如下:
读取基因过滤并进行降维聚类:
# 读取1514个基因
gs <- read.table('remov_gene_list.txt')[,1]
gs
gs_left <- rownames(data.filt)[rownames(data.filt) %in% gs]
gs_left
length(gs_left)
# [1] 232
# 常规方法查看需要过滤的基因
genes_mt = rownames(data.filt)[grepl("^MT-", rownames(data.filt))]
genes_mt
genes_ribo = rownames(data.filt)[grepl("^RP[SL]", rownames(data.filt))]
genes_ribo
genes_hsp = rownames(data.filt)[grepl("^HSP", rownames(data.filt))]
genes_hsp
data.filt
sce.all.filt <- data.filt[!rownames(data.filt) %in% gs ,]
sce.all.filt
# 24351 features across 7044 samples within 1 assay
###### step2: 基本的降维聚类分群 ######
sce <- sce.all.filt %>%
NormalizeData( ) %>%
FindVariableFeatures( ) %>%
ScaleData( ) %>%
RunPCA( ) %>%
RunHarmony( "orig.ident") %>%
FindNeighbors(dims = 1:15) %>%
FindClusters(resolution = 0.5) %>%
RunUMAP(dims = 1:15, reduction = "harmony")
# 对比两次结果
p1 <- DimPlot(data.filt,group.by = 'celltype',label = T) + ggtitle("Before remove")
p2 <- DimPlot(sce ,group.by = 'celltype',label = T) + ggtitle("After remove")
p1+p2
结果如下:基本上没有什么影响。
# 查看数据中 高变基因与这1514个基因的交集
length(VariableFeatures(data.filt))
gs_vsd <- intersect(VariableFeatures(data.filt),gs_left)
gs_vsd
length(gs_vsd)
# 展示其在数据中的变异情况
plot1 <- VariableFeaturePlot(data.filt)
plot2 <- LabelPoints(plot = plot1, points = gs_vsd, repel = TRUE)
plot2
# 查看这些基因在不同亚群中的表达情况
DoHeatmap(data.filt, features = gs_vsd, group.by = "celltype")