专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
BioArt  ·  Nat Microbiol | ... ·  3 天前  
生信人  ·  液体活检:解码生命奥秘的新希望 ·  6 天前  
51好读  ›  专栏  ›  生信菜鸟团

芯片代码实操(3)了解芯片表达数据

生信菜鸟团  · 公众号  · 生物  · 2024-09-12 18:10

正文

学习笔记总结于『生信技能树』马拉松课程

GEO数据挖掘系列,第10篇学习笔记:了解下载的数据,其中表达矩阵需要关注是否有异常样本或异常值

为了无缝衔接上一篇学习笔记,该文中的序号将接着上一篇来标注

2.了解数据

经过上一篇的学习,此时我们在Rstudio中得到eSet数据框;在正式进行分析之前,我们需要充分了解eSet中都有哪些东西,以及这些东西中哪些是我们后续分析时需要的

2.1 eSet里面是什么

表达矩阵、临床信息、GPL编号

2.1.1认识数据结构 ExpressionSet

首先研究eSet的数据结构、数据类型,用如下代码

class(eSet)# 如果返回的是"list",这种数据结构是不能使用的
length(eSet)# 因为其长度只有1个

eSet = eSet[[1]]# 将list的壳子拆掉
class(eSet)
?ExpressionSet# 同理学习函数,我们也可以这样来学习ExpressionSet

根据 class() 得到的结果, ExpressionSet 这种数据结构是我们想要的,它是复杂的对象,出自 Biobase 包,复杂的对象需要函数 exprs() 来提取

图1

2.1.2 eSet里面包含的数据

①点击右上角eSet旁边的三角符号,能查看里面都有什么

图2

②或者直接点右上角的eSet这个变量名,能更方便的查看

图3

我们想要的表达矩阵、临床信息、GPL编号都在里面

图4
图5

可以用如图2用@符号一级一级的提取,但推荐用函数提取,如下

2.2提取表达矩阵exp

exp <- exprs(eSet)# 提取表达矩阵
dim(exp)# 查看exp维度

查看exp的维度,如果结果是空的即exp表格中什么都没有,说明我们用的不是芯片数据;高通量数据是转录组或单细胞的,array才是芯片的

图6

检查exp中是否有异常样本

range(exp) #看数据范围决定是否需要log,是否有负值或异常值
exp = log2(exp+1) #需要log才log,不用log就把这句代码注释掉,不要运行它
# log时需要+1,为了避免出现负数的情况,因为负数在此没有意义

boxplot(exp,las = 2) #看是否有异常样本

log完后,+1可避免数值为0或数值为负数,如图7

图7

2.2.1表达矩阵有异常样本

第一个办法:删掉异常样本

第二个办法: exp = limma::normalizeBetweenArrays(exp) 简单处理

如图8右下角黄框所示,这6个箱线图代表6个样本的所有基因表达量,而黄框箱线图与其他箱线图相差太多,说明黄框这个样本所有的基因表达量都下调明显,这是不可能的(因为如管家基因它们基本不变),所以它是异常样本

图8

2.2.2表达矩阵有负值

对于负值,不是一概而论的

取过log后有负值 :是可以接受的程度,原本0-20是取过log后的范围,而上传数据的人在log时没有+1,则会导致数据有负值

没取log但有负值 :这是错误的,表达矩阵的原理是光信号值,光信号值不会是负数;如果实在想用这个数据,就将所有的负数改为0,但不推荐这个做法;对于这种数据,要么舍弃,要么从原始数据开始处理,详见 表达矩阵有负值?从原始数据cel文件做起 一文

有一半负值 :如图8,这是因为做了标准化这个处理,它将数据修正成中位数为0,便有了图8的-3到3、-2到2这种范围。舍弃或处理cel文件







请到「今天看啥」查看全文