前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >可以假装你的转录组测序有重复吗?

可以假装你的转录组测序有重复吗?

作者头像
生信技能树
发布2025-01-07 08:27:18
发布2025-01-07 08:27:18
7000
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

我们生信入门答疑群里有个小伙伴问了一个问题:如果我的转录组项目的每个分组里面的重复样品之间的相似性太高了,会有什么问题吗?对差异分析结果会有什么影响吗?

无独有偶,之前我们也分析过一个组内相关性超高的数据集,高到看起来像是造假的数据,一起来看看吧。

1组内相关性超高的数据集(GSE231835)

这个数据集有10个样本,每个有5个生物学重复:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE231835

代码语言:javascript
代码运行次数:0
复制
# cisplatin-sensitive T24 BC cells (IC50: 10 μM cisplatin) t
GSM7304666 RNAseq T24 Rep1
GSM7304667 RNAseq T24 Rep2
GSM7304668 RNAseq T24 Rep3
GSM7304669 RNAseq T24 Rep4
GSM7304670 RNAseq T24 Rep5
# cisplatin-resistant T24R2 BC cells (IC50: 100 μM cisplatin)
GSM7304671 RNAseq T24R2 Rep1
GSM7304672 RNAseq T24R2 Rep2
GSM7304673 RNAseq T24R2 Rep3
GSM7304674 RNAseq T24R2 Rep4
GSM7304675 RNAseq T24R2 Rep5

首先获取作者的表达矩阵

代码语言:javascript
代码运行次数:0
复制
# 批量读取featurecount的定量结果
list <- list.files("GSE231835_RAW/", full.names = T)
list
exp_list <- list()
for(i in 1:length(list)) {
    #i <- 1
    list[i]
    temp <- read.table(list[i],header = T,sep = "\t")
    exp_list[[i]] <- temp[,c(1,7:ncol(temp))]
}
# 整合成一张表格
data <- do.call(cbind,exp_list)
data$Geneid <- stringr::str_split(data[,1],pattern = "\\.",n=2,simplify = T)[,1]
data <- data[!duplicated(data$Geneid),]

mat <- data[, seq(2,ncol(data),by=2)]
rownames(mat) <- data$Geneid
mat[1:4,1:4]
# 简单过滤低表达
keep_feature <- rowSums (mat > 1) > 1 ;table(keep_feature)
ensembl_matrix <- mat[keep_feature, ]  
rownames(ensembl_matrix)=rownames(mat)[keep_feature]
ensembl_matrix[1:4,1:4]

# 基因ensemble 转换基因symbol
library(AnnoProbe)
head(rownames(ensembl_matrix))
ids=annoGene(rownames(ensembl_matrix),'ENSEMBL','human')
head(ids)
tail(sort(table(ids$biotypes)))
ids=ids[ids$biotypes=='protein_coding',]
ids=ids[!duplicated(ids$SYMBOL),]
ids=ids[!duplicated(ids$ENSEMBL),]
symbol_matrix= ensembl_matrix[match(ids$ENSEMBL,rownames(ensembl_matrix)),]
rownames(symbol_matrix) = ids$SYMBOL

symbol_matrix[1:4,1:4]
colnames(symbol_matrix)

获取样本分组

代码语言:javascript
代码运行次数:0
复制
group_list <- stringr::str_split(colnames(symbol_matrix),pattern = "[1-9]",n=2,simplify = T)[,1]
group_list <- factor(group_list, levels = c("T","R")) 
# [1] T T T T T R R R R R

# 保存
dat <- log10(edgeR::cpm(symbol_matrix)+1)
save(symbol_matrix,dat,group_list,file = 'step1-output.Rdata')

简单查看样本组间与组内相关性

如果我们对样本进行PCA分析以及相关性分析,可以看到,样本组间差异非常大,但是组内重复性却异常高:

样本组内相关性达到了0.99以上:

差异结果也非常的诡异:

2如何造假假设你有生物学重复呢?(只是做一个示范,与上面的进行比较)

首先我们选取其中的每个分组一个样本,然后随机生成每组五个生物学重复:GSE231835_RAW/目录中只保留两个文件

代码语言:javascript
代码运行次数:0
复制
# 批量读取featurecount的定量结果
list <- list.files("GSE231835_RAW/", full.names = T)
list
# [1] "GSE231835_RAW//GSM7304666_RNAseq-T24-Rep1-featureCounts.txt.gz"  
# [2] "GSE231835_RAW//GSM7304671_RNAseq-T24R2-Rep1-featureCounts.txt.gz"

然后重新走上面的代码拿到 symbol_matrix 矩阵,这个时候只有两个样本:

代码语言:javascript
代码运行次数:0
复制
head(symbol_matrix[1:4,])

          T1   R6
SAMD11   301  223
NOC2L   1587 1641
KLHL17   393  292
PLEKHN1  166   89

然后造一个矩阵,假如一个随机数进来:

代码语言:javascript
代码运行次数:0
复制
df <- data.frame(
    v1 <- symbol_matrix[,1],
    v2 <- symbol_matrix[,1] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v3 <- symbol_matrix[,1] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v4 <- symbol_matrix[,1] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v5 <- symbol_matrix[,1] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v6 <- symbol_matrix[,2] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v7 <- symbol_matrix[,2] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v8 <- symbol_matrix[,2] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v9 <- symbol_matrix[,2] + sample(1:10, nrow(symbol_matrix),replace = T ),
    v10 <- symbol_matrix[,2] + sample(1:10, nrow(symbol_matrix),replace = T )
  ) 
colnames(df) <- c("T1","T2","T3","T4","T5","R1","R2","R3","R4","R5")
rownames(df) <- rownames(symbol_matrix)

再来看看样本相关性,可以说与上面的数据非常相似了,很让人没有理由相信上面的数据是真的生物学重复分组。

但是大家一定不要学这里的代码去造假哦!!!

3没有生物学重复就没有办法做差异分析了吗?

两个样本的差异分析可以看我们之前写的一个帖子《没有生物学重复的转录组差异分析如何挑选基因呢:变化倍数与P值选谁?》。

4没有生物学重复就一定不能发表文章了吗?

随便搜了一篇2019年4月,在Genomics杂志发表题为《The transcriptome enables the identification of candidate genes behind medicinal value of Drumstick tree (Moringa oleifera)》的文章,这篇文章在实验设计时没有考虑生物学重复,但对每个组织,作者设置了两个技术重复。技术重复也是一种思路呀!

5关于生物学重复的问题

让人工智(https://kimi.moonshot.cn/)能回答我们开始的那个问题:

在转录组项目中,如果每个分组里面的重复样品之间的相似性太高,可能会带来以下问题和对差异分析结果的影响:

  1. 样本重复性过高可能掩盖真实的生物学变异:当样本间的相似性过高时,可能意味着实验操作误差或样本处理过程中的某种一致性偏差,这可能会掩盖样本间真实的生物学差异。因此,实验结果的可信度可能会降低。
  2. 影响统计检验的显著性:样本重复性不好会直接影响统计检验的显著性。如果组内重复样品之间的相似性过高,可能导致两组间的差异虽然很大,但在统计上却不显著,最终影响文章的主要结论。
  3. 影响差异基因的鉴定:样本间的高相似性可能会导致差异基因分析结果的假阳性率增高,因为高相似性可能减少了样本间应有的生物学变异,从而影响了差异基因的准确鉴定。
  4. 影响后续分析:高相似性可能导致后续的PCA分析、聚类分析等结果出现偏差,因为这些分析方法依赖于样本间的差异性来揭示数据的结构和模式。
  5. 可能需要剔除离群样本:如果某个样本与组内其他样本的相似性不好,可能需要考虑将该样本剔除,以避免其对整体分析结果的影响。
  6. 对文章发表的影响:如果样本间的相似性过高,可能需要在文章中解释这一现象,并采取相应的措施(如剔除离群样本)来确保分析结果的可靠性。这可能会影响文章的发表,尤其是在需要严格验证生物学重复性的领域。

综上所述,样本间的高相似性可能会对转录组项目的差异分析结果产生负面影响,需要通过增加生物学重复、仔细检查实验操作流程、以及在分析阶段采取适当的数据处理方法来解决这一问题。

此外,2016年英国邓迪大学的Geoffrey J. Barton教授在冷泉港出版的专业学术期刊《RNA》上发表了一篇非常经典的文章专门进行了评估,大家可以去看看:

论文标题:How many biological replicates are needed in an RNA-seq experiment and which differential expression tool should you use? 刊登日期:2016年06月 发表期刊:Journal of Extracellular Vesicles 影响因子:5.636 研究机构:英国邓迪大学生命科学学院计算生物学系 技术手段:RNA-seq、11款差异基因表达鉴定软件(baySeq、Cuffdiff、DEGseq、DESeq、DESeq2、EBSeq、edgeR、limma、NOISeq、PoissonSeq、SAMSeq) 原文链接:https://rnajournal.cshlp.org/content/22/6/839

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1组内相关性超高的数据集(GSE231835)
    • 首先获取作者的表达矩阵
    • 获取样本分组
    • 简单查看样本组间与组内相关性
  • 2如何造假假设你有生物学重复呢?(只是做一个示范,与上面的进行比较)
  • 3没有生物学重复就没有办法做差异分析了吗?
  • 4没有生物学重复就一定不能发表文章了吗?
  • 5关于生物学重复的问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档