前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >外周血单细胞数据QC指标为什么定如此高的阈值:nFeature_RNA > 900?

外周血单细胞数据QC指标为什么定如此高的阈值:nFeature_RNA > 900?

作者头像
生信技能树
发布于 2025-05-23 02:42:35
发布于 2025-05-23 02:42:35
6800
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

今天又是来学习单细胞数据的时候啦,群里曾老板一下子布置了好多写作任务(其实手里还有超级多老板发的资料,学不完根本学不完55555555555)。话不多说,放上老板发布的信息如下:

【写作任务7】: 文献标题为《A single-cell RNA sequencing dataset of peripheral blood cells in long COVID patients on herbal Therapy 》文中在对单细胞进行数据过滤的时候,发现QC的指标定的超级高。这么大一群细胞的仅仅是质量值低吗?数据集是 GSE265753 ,为什么要如此高的阈值?

下面就来看看!

数据背景了解

细胞主要来自新冠病人的外周血,外周血里面主要都是免疫细胞,免疫细胞有一个特征就是每个细胞中表达的基因数比较低,一般的文献过滤指标范围都在200-3000左右。取样过程如下:

数据下载地址如下:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE265753,将提供的表达矩阵下载下来,共有20多w的原始细胞:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GSE265753_processed_counts_matrix.csv.gz 505.4 Mb (ftp)(http) CSV

数据预处理

这里读取数据的时候还有一个小技巧,GSE265753_processed_counts_matrix.csv.gz 文件并没有提供每个样本单独的ID,先读取进来看看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
###
### Create: Jianming Zeng
### Date:  2023-12-31  
### Email: jmzeng1314@163.com
### Blog: http://www.bio-info-trainee.com/
### Forum:  http://www.biotrainee.com/thread-1376-1-1.html
### CAFS/SUSTC/Eli Lilly/University of Macau
### Update Log: 2023-12-31   First version 
### Update Log: 2024-12-09   by juan zhang (492482942@qq.com)
### 
rm(list=ls())
options(stringsAsFactors = F)
library(ggsci)
library(dplyr) 
library(future)
library(Seurat)
library(clustree)
library(cowplot)
library(data.table)
library(ggplot2)
library(patchwork)
library(stringr)
library(qs)
library(Matrix)

# 创建目录
getwd()
gse <- "GSE265753"
dir.create(gse)

###### step1: 导入数据 ######   
ct <- data.table::fread("GSE265753/GSE265753_processed_counts_matrix.csv.gz",data.table = F)
ct[1:5, 1:5]
dim(ct)
rownames(ct) <- ct[,1]
ct <- ct[,-1]
ct[1:5, 1:5]

这里可以看出矩阵的barcode中可能有样本ID:

结合文章的table2,样本ID确实是存在矩阵的列名中:

处理一下,注意这里的字符切割技巧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
temp <- sub("(.*)_(.*)", "\\1 \\2", colnames(ct))
temp <- str_split(temp,pattern = " ", n=2,simplify = T)
head(temp)
meta <- data.frame(Sample=temp[,1],ID=temp[,2])
rownames(meta) <- colnames(ct)
head(meta)
tail(meta)
table(meta[,1])
length(table(meta[,1]))

创建Seurat对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建对象
sce.all <- CreateSeuratObject(counts = ct, meta.data = meta, min.cells = 3)
sce.all

# 查看特征
as.data.frame(sce.all@assays$RNA$counts[1:10, 1:2])
head(sce.all@meta.data, 10)
tail(sce.all@meta.data, 10)
table(sce.all$orig.ident)
table(sce.all$Sample)
length(table(sce.all$Sample))

library(qs)
qsave(sce.all, file="GSE265753/sce.all.qs")

学徒作业

现在数据处理最难的部分已经给大家做好了,接下来就是对这个数据的查看各种QC指标,除了常见的小提琴图,还有密度曲线分布等,做一下常规的阈值过滤:nFeature_RNA > 200 & nFeature_RNA < 3000,然后降维聚类分群看看,多出来的哪一群是不是可能会有新发现呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验