首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >你以为它是表达量芯片的原始信号值矩阵吗?

你以为它是表达量芯片的原始信号值矩阵吗?

作者头像
生信菜鸟团
发布于 2023-09-09 09:07:10
发布于 2023-09-09 09:07:10
26000
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

1-背景

顺着上周与大家分享的nanostring芯片原始数据的提取, 我看到了曾老师于20年布置的学徒作业~

链接如下:《Nanostring的表达矩阵分析也是大同小异》

Nanostring的表达矩阵分析也是大同小异 - 知乎 (zhihu.com)

就是要复现上图~ 草草一看应该是提取原始数据,取差异基因然后绘图吧。

文章的最后看到了老师的期望,就决定从原始数据开始分析。

那我们就开始吧

2- 找原始数据

在补充材料里面看到的了GSE编号 GSE134129,虽然老师在知乎上也说了..

下载原始数据

3- 获取总表达矩阵

这次的初始文件是txt格式的,之前是RCC格式的(这可能就是问题所在????)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm(list=ls())
options(warn = -1)
library(nanostringr)
#文件解压
library(R.utils)
#filenames=dir(path = "./GSE134129_RAW/",pattern = ".txt.gz$")
#filenames=paste0("./GSE134129_RAW/",filenames)
#sapply(filenames, gunzip)
#文件读取合并成为表达矩阵
filenames2=dir(path = "./GSE134129_RAW/",pattern = ".txt$")
filepath=paste0("./GSE134129_RAW/",filenames2)
list=list()
for (i in 1:length(filepath)) {
  list[[i]]=read.delim(file=filepath[i])
}
table(list[[1]][["ID_REF"]]==list[[19]][["ID_REF"]]) #判断一下,应该是一样的
new.list=lapply(list, function(li){
  cbind(li[[5]])
})
data=data.frame(x=vector(length = 750))
for (i in 1:length(new.list)) {
  data[,i]=as.vector(new.list[[i]])
}#整合数据
rownames(data)=list[[1]][["ID_REF"]] #修改行名
library(stringr)
colname=str_extract(filenames2,"GSM\\d*")
colnames(data)=colname
table(data[,1]==as.vector(list[[1]][["Control_1"]]))
table(data[,21]==as.vector(list[[21]][["STING.KO_4"]]))
exp=data

4- 获取总分组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#获取分组
group=ifelse(str_detect(filenames2,"Control"),"Control",
              ifelse(str_detect(filenames2,"STING_KO"),"KO","STING"))
table(group)

5- 提取exp&group,准备批量分析列表

图注对火山图的描述

实验一共分3个组,作者分别两两差异分析,将差异结果放在一张火山图上 下载临床数据确认一下具体的实验操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#看过文献,发现需要详细确认一下分组情况
suppressMessages (library(GEOquery))
gse_number = "GSE134129"
gset=getGEO(gse_number,destdir = ".",AnnotGPL = F,getGPL = F)
# Found 1 file(s)
# GSE134129_series_matrix.txt.gz
# Using locally cached version: ./GSE134129_series_matrix.txt.gz
gset=gset[[1]]
phenoDat <- pData(gset)
table(phenoDat$characteristics_ch1.4)
# treatment: PBS (Sham) treated treatment: STING agonist treated 
# 13                                8 
phenoDat.new=cbind(phenoDat$title,phenoDat$characteristics_ch1.4)

分组情况如下~

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#根据分组信息,获取exp.st,exp.ko,group.st,group.ko,组成list
exp.st=exp[,1:17]
dim(exp.st)
# > dim(exp.st)
# [1] 749  17
group.st=group[1:17]
table(group.st)
# group.st
# Control   STING 
# 9       8 
exp.ko=exp[,-(10:17)]
dim(exp.ko)
# [1] 749  13
group.ko=group[-(10:17)]
table(group.ko)
# group.ko
# Control      KO 
# 9       4 
#组成list
exp.list=list(exp.st=exp.st,exp.ko=exp.ko)
exp.list[[1]][1:4,1:4]
# GSM3937676 GSM3937677 GSM3937678 GSM3937679
# A2m         3.138      3.053      1.585      2.722
# Abca1       8.109      9.009      7.624      7.890
# Abcb1a      5.655      6.138      5.472      5.914
# Abcg1       8.175      8.249      7.748      8.208
group.list=list(group.st=group.st,group.ko=group.ko)
group.list[[1]][8:12]
# [1] "Control" "Control" "STING"   "STING"   "STING"  

最后得到以下两个列表用于差异基因分析exp列表

group列表

6- limma 批量差异分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##批量差异分析
library(limma)
deg.list=list[[]]
for (i in 1:length(exp.list)) {
  exp=exp.list[[i]]
  Group=group.list[[i]]
  design=model.matrix(~Group)
  fit=lmFit(exp,design)
  fit=eBayes(fit)
  deg=topTable(fit,coef=2,number = Inf)
  deg.list[[i]]=deg
}

差异分析结果列表

7- 差异分析结果校对

现在差异分析结果有了,看一下作者关注的基因的表达量与我是否一致。

看了一下图上标记的基因

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 上调
# Angpt1  Pdgfrb  Cdh5  Sell Ccr7 Cd86
#下调
# Cdh5 Mcam Angpt1 Sell Vegfa

稍微比对一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##差异分析结果校对
up.article=c( "Angpt1","Pdgfrb","Cdh5","Sell","Ccr7","Cd86")
up.list=deg.list[[1]]
up.list[rownames(up.list) %in% up.article,]
# logFC AveExpr     t   P.Value adj.P.Val       B
# Cd86   1.3106   7.482 4.647 0.0001868  0.003638  0.8724
# Sell   1.5947   8.168 4.471 0.0002767  0.003638  0.5006
# Angpt1 1.1483   5.628 3.382 0.0032204  0.010221 -1.8104
# Pdgfrb 1.0758   6.130 2.933 0.0086995  0.018832 -2.7327
# Cdh5   1.0715   6.177 2.793 0.0117928  0.023554 -3.0120
# Ccr7   0.6802   4.225 1.770 0.0931071  0.119875 -4.8377
down.article=c( "Cdh5","Mcam","Angpt1","Sell","Vegfa")
down.list=deg.list[[2]]
down.list[rownames(down.list) %in% down.article,]
# logFC AveExpr      t   P.Value adj.P.Val        B
# Sell   -1.3211   7.011 -4.552 0.0004431   0.01043 -0.09605
# Mcam   -0.7474   6.517 -3.232 0.0059733   0.05227 -2.66977
# Angpt1 -1.0136   4.776 -3.076 0.0081562   0.06234 -2.97260
# Cdh5   -0.5305   5.510 -2.885 0.0119261   0.08264 -3.33949
# Vegfa  -0.6953   6.752 -2.365 0.0328493   0.14828 -4.29987

与文章相比趋势是一致的,但数值上有差异。

不,应该说是有明显差异

从需要复现的图中来看,Cdh5的LogFC值应该在3-4左右,但我的差异结果却只有1多一点。同时这个Ccr7也有点奇怪。

8- 额,原来作者没有做差异分析..

于是再次仔细看了看文章的分析,然后发现图的纵坐标标注是倍数的变化...

原来作者没有差异分析,只是将各组表达量进行了简单的相除....

是我从来没有听说过的操作了...

回到文章细看~

作者在文章的补充材料中只提供了表达量和P值,没有logFC的相关信息,一共750个基因

再细看文章,

发现数据被标准化了,也没有详说用的是哪种标准化方式。

关于目标图文章中为数不多的描述

那就从作者提供的矩阵开始复现吧。

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

本文分享自 生信菜鸟团 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大鼠表达量芯片数据处理
但是绝大部分小伙伴其实是基础知识不牢固,有一些明明是很简单的芯片,仍然是有小伙伴提问,比如:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE
生信技能树
2022/07/26
4760
大鼠表达量芯片数据处理
illumina芯片负数矩阵竟然也可以分析,只是结果诡异-学徒作业
不正常的illumina芯片数据如果使用lumi包的lumiR.batch函数读取会失败 (qq.com)
生信菜鸟团
2023/09/09
4150
illumina芯片负数矩阵竟然也可以分析,只是结果诡异-学徒作业
转录组差异分析—基本流程
读取RawCounts.csv文件,其文件形式如下图行名为ensembleid,列名为样本名称。
sheldor没耳朵
2024/07/29
3000
转录组差异分析—基本流程
没想到修个火山图这么麻烦
MAplot转录组差异基因表达展示_maplot r语言_TS的美梦的博客-CSDN博客自己也顺着这线索另外找了教程
生信菜鸟团
2023/09/09
7680
没想到修个火山图这么麻烦
Nanostring的表达矩阵分析也是大同小异
临床样品的特色是:通常是FFPE样本,在保存过程中往往造成RNA的断裂,不论是qPCR还是RNA-seq都难以进行精准的定量,这个时候Nanostring 仪器就是为了解决这些问题而诞生的。所以它在医院的流行程度很高,而我们要介绍的这篇文章就来自于医院科研人员,所以选择Nanostring就很容易理解啦。
生信技能树
2019/12/23
1.5K0
Nanostring的表达矩阵分析也是大同小异
不要简单的相信作者提供的表达量矩阵
处理这些平台的数据时,研究者需要了解各自平台的特点和数据处理流程,选择合适的工具和方法来进行分析。此外,由于不同平台之间的技术差异,直接比较不同平台的数据时需要格外小心,可能需要进行平台间的标准化或使用兼容的分析方法。
生信技能树
2024/11/21
1990
不要简单的相信作者提供的表达量矩阵
aglient芯片原始数据处理
我多次在学徒作业强调了 3大基因芯片产商里面,就Agilent公司的芯片比较难搞,比如Agilent芯片表达矩阵处理(学徒作业) 以及 oligo包可以处理agilent芯片吗,这个作业难度非常高,不过我们生信技能树优秀讲师:小洁在繁重的授课压力下抽空整理了相关数据处理经验分享给大家,下面看她的表演:
生信技能树
2020/06/11
3.8K1
aglient芯片原始数据处理
TNBC数据分析-GSE27447-GPL6244
五月份的学徒专注于GEO数据库里面的表达量芯片数据处理,主要的难点是表达量矩阵获取和探针的基因名字转换,合理的分组后就是标准的差异分析,富集分析。主要是参考我八年前的笔记:
生信技能树
2021/08/25
2.8K0
TNBC数据分析-GSE27447-GPL6244
介绍篇23年的 NC 芯片数据提取(Nanostring)
是一个鼻咽癌临床相关疗效的研究。PMID: 37188668作者将患者一共分成了4组PR SD PD NE,还分成post 和 pre
生信菜鸟团
2023/09/09
5960
介绍篇23年的 NC 芯片数据提取(Nanostring)
GEO表达芯片数据分析
---title: "GEO表达芯片数据分析"output: html_documentdate: "2023-03-20"---关于该流程代码的说明:(1)本流程仅适用于GEO芯片表达数据,以"GSE56649"为例(2)先在GEO数据库中确定是否为"Expression profiling by array",不是的话不能使用本流程!(3)注意需要自行修改或判断的代码一般放在了两个空行之间(4)代码的注释有一丢丢多,目的是为了更好地帮助大家理解1.下载数据,提取表达矩阵、临床信息和GPL编号rm(lis
小叮当aka
2023/03/23
3.3K1
TNBC数据分析-GSE76275-GPL570
五月份的学徒专注于GEO数据库里面的表达量芯片数据处理,主要的难点是表达量矩阵获取和探针的基因名字转换,合理的分组后就是标准的差异分析,富集分析。主要是参考我八年前的笔记:
生信技能树
2021/08/25
2.5K0
TNBC数据分析-GSE76275-GPL570
一个基因上面有多个探针最后只能选一个吗
最近学员提出来了一个蛮古老的表达量芯片数据集的讨论,因为 它是做了这个PPARα的基因敲除,但是学员在分析表达量矩阵做差异的时候发现PPARα本身其实并没有统计学显著的差异表达。 数据集是:https
生信技能树
2022/07/26
8420
一个基因上面有多个探针最后只能选一个吗
​文章复现—bulkRNA转录组结合机器学习等进行相关疾病研究01—多数据集去除批次效应后联合分析以及火山图标准绘制
《Identification of cuproptosisassociated subtypes and signature genes for diagnosis and risk prediction of Ulcerative colitis based on machine learning》基于机器学习的溃疡性结肠炎诊断和风险预测中铜死亡相关亚型和特征基因的鉴定(IF:5.7) Date:2023.04
sheldor没耳朵
2024/10/25
2994
​文章复现—bulkRNA转录组结合机器学习等进行相关疾病研究01—多数据集去除批次效应后联合分析以及火山图标准绘制
影响差异分析后的火山图的对称性的因素有哪些?
这个有点丑的火山图对应的文章是:《In vivo transcriptional analysis of mice infected with Leishmania major unveils cellular heterogeneity and altered transcriptomic profiling at single-cell resolution》,如下所示 :
生信技能树
2022/07/26
1.6K0
影响差异分析后的火山图的对称性的因素有哪些?
有些文章的原始数据找不到就算了吧,真不一定有
《circRNA芯片也是同样的差异分析》circRNA芯片也是同样的差异分析 (qq.com)
生信技能树
2023/09/06
2490
有些文章的原始数据找不到就算了吧,真不一定有
LncRNA芯片的一般分析流程
同样的策略,我们也可以应用到lncRNA的学习。所以昨天我们发布了:lncRNA的一些基础知识 ,那么接下来我们需要分享的就是lncRNA芯片的一般分析流程和lncRNA-seq数据的一般分析流程!
生信技能树
2019/12/31
3.7K0
LncRNA芯片的一般分析流程
GEO数据库中芯片数据分析思路
AnnoProbe是曾建明老师2020年开发的一款用于下载GEO数据集并注释的R包,收录在tinyarray里。 idmap##根据所给的GPL号,返回探针的注释 geoChina##根据所给的GSE号,下载对应的表达矩阵 annoGene##根据gencode中的GTF文件注释基因ID
小张小张
2023/05/25
2K0
玮瑜课程
1. gset <- getGEO("GSE149507",destdir = ".",getGPL = T)→gset[["GSE149507_series_matrix.txt.gz"]]@featureData@data
用户10803254
2024/01/10
3170
IF10+杂志文章只用统计学显著的差异基因做GSEA就合理吗?
Figure 2. CIH aggravates fibrosis, inflammation, and lipid accumulation in hepatocytes with PAOA stimulation
生信技能树
2025/02/05
1400
IF10+杂志文章只用统计学显著的差异基因做GSEA就合理吗?
两个表达量矩阵去除批次效应之前是否需要归一化
我们之所以要对两个表达量矩阵做去除批次效应的处理,就是因为两个表达量矩阵的取值范围就不一样,而且每个矩阵内部的每个样品或者每个基因的分布范围也不一样,做去除批次效应的处理就是为了抹去两个矩阵的系统性差异。
生信技能树
2024/05/30
6290
两个表达量矩阵去除批次效应之前是否需要归一化
推荐阅读
相关推荐
大鼠表达量芯片数据处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档