R语言学习笔记-Day07

2024-07-09 22:48:10 浏览数 (1)

1 GEO数据挖掘

数据类型

(1) 基因表达芯片

(2) 转录组

(3) 单细胞

(4) 突变、甲基化、拷贝数变异……

怎样筛选基因--分析方法

数据下载(DEO、TCGA)-差异分析(芯片与转录组不相同)-WGCNA(加权共表达网络)-富集分析(ORA、GSEA)-PPI网络-预后分析(影响生存的疾病)

1.1

1.1.1 热图

输入数值为数值型矩阵/数据框

以颜色变化代表数值大小

#聚类树:根据基因相似程度进行排序分类,与原表达矩阵基因顺序不同

1.1.2 散点图和箱线图

可以用箱线图代替散点图,显示整体差异

箱线图

以连续型向量为纵坐标;有重复值的离散型向量为横坐标

箱线图的五条线

max - 75% - median#中位数 - 25% - min

最大值和最小值以外可能存在离群值#离群点

#用于单个基因在几组之间的表达差异

###多基因 --> 差异分析

1.1.3 火山图

两个数值logFCP.Value

logFC(横坐标)

Foldchange(FC):处理组均值/对照组均值

log2Foldchange(logFC):Foldchange取log2

#实际运算中先取log再相减

#logFC表示处理组和对照组相比的基因表达差异倍数

#存在负值,表示表达降低

#基因的上调/下调,指基因表达量显著上升/下降

--> P.Value

芯片差异分析的起点是一个取过log的表达矩阵(0-20);

若未进行该操作,数值将非常大,需要先取log

通常设置阈值,例如:

上调基因:logFC > 1, p < 0.01

下调基因:logFC < -1, p < 0.01

#logFC常见阈值:1, 2, 1.2, 1.5, 2.2, 0.585 = log2(1.5)

P.Value

会进行调整将其增大

-->

-log10(P.Value)

P.Value越小,-log10(P.Value)越大,差异越大的置信度越高

1.1.4 主成分分析

PCA样本聚类图降维

点与点之间的相对距离表示相似程度

横、纵坐标:Dimension(Dim1、2)——主成分(综合指标)

几个基因组合到一起成为一个主成分

例如:BMI

#括号内的数字越大越好,没有具体要求

#图中最大的点为聚类的中心点,不是样本点

#至少四个样本点才能在图中形成一簇

#将权重最高的两个主成分作为横、纵坐标,而非全部主成分

#用于简单查看组间是否存在差异

2 GEO背景知识及芯片表达分析思路

2.1 表达数据实验设计

实验目的:通过基因表达量数据的差异分析富集分析来解释生物学现象

2.2 数据库介绍

Gene Expression Omibus

#Tools-Analyze a Study with GEO2R-代码,可以辅助完成一些操作

Sample:用户提交给GEO的样本数据(GSM)

Series:一个完整的研究,提供了整个研究的描述,包括对数据的描述、总结、分析(GSE)

Platform:用户测定表达量使用的芯片/平台(GPL)

基因表达芯片的原理:探针的表达量代表基因的表达量

#分析思路

找数据,找到GSE编号 -->

下载并读取数据 -->

#表达矩阵 #临床(分组)信息 #GPL编号(探针注释)

数据探索 -->

#分组间是否存在差异,PCA、热图

差异分析并可视化 -->

#P.Value, logFC #火山图、热图

富集分析

#KEGG #GO

为什么不画全部基因的热图

1* 数据太大

2* 并不是所有基因都存在差异

2.3 表达矩阵

行名:探针id #需要转换为gene symbol

列名:GSM,样本编号 #需要分组信息

3 代码分析流程

芯片差异分析所需输入数据

表达矩阵

#数据分布范围0-20

#无异常值,如NA、INF、负值

#无异常样本

分组信息

#同一分组对应同一关键词

#顺序与表达矩阵的列一一对应

#因子,对照组的levels在前

探针注释

#根据GPL编号查找

#探针与基因之间的对应关系

#只能有两列,且均为字符型

#列名必须是probe_id和symbol

批量装包代码

options("repos"="https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packages("BiocManager",update = F,ask = F) options(BioC_mirror="https://mirrors.westlake.edu.cn/bioconductor") cran_packages <- c('tidyr', 'tibble', 'dplyr', 'stringr', 'ggplot2', 'ggpubr', 'factoextra', 'FactoMineR', 'devtools', 'cowplot', 'patchwork', 'basetheme', 'paletteer', 'AnnoProbe', 'ggthemes', 'VennDiagram', 'survminer', "tinyarray") Biocductor_packages <- c('GEOquery', 'GO.db', 'hgu133plus2.db', 'ggnewscale', "limma", "impute", "GSEABase", "GSVA", "clusterProfiler", "org.Hs.eg.db", "preprocessCore", "enrichplot")

for (pkg in cran_packages){ if (! require(pkg,character.only=T,quietly = T) ) { install.packages(pkg,ask = F,update = F) require(pkg,character.only=T) } }

for (pkg in Biocductor_packages){ if (! require(pkg,character.only=T,quietly = T) ) { BiocManager::install(pkg,ask = F,update = F) require(pkg,character.only=T) } }

#前面的所有提示和报错都先不要管。主要看这里

for (pkg in c(Biocductor_packages,cran_packages)){ require(pkg,character.only=T) } #没有任何提示就是成功了,如果有warning xx包不存在,用library检查一下。 #library报错,就单独安装。

实战代码

rm(list = ls()) #打破下载时间的限制,改前60秒,改后10w秒 options(timeout = 100000) options(scipen = 20)#不要以科学计数法表示

#传统下载方式

library(GEOquery) eSet = getGEO("GSE7305", destdir = '.', getGPL = F) #网速太慢,下不下来怎么办 #1.从网页上下载/发链接让别人帮忙下,放在工作目录里 #2.试试geoChina(),只能下载2019年前的表达芯片数据 library(AnnoProbe) eSet = geoChina("GSE7305") #选择性代替getGEO() #研究一下这个eSet class(eSet) length(eSet)

eSet = eSet[1] class(eSet) 1 "ExpressionSet" attr(,"package") 1 "Biobase" #“ExpressionSet”为来自R包“Biobase”中的一个对象

#(1)提取表达矩阵exp

exp <- exprs(eSet)

#⭐第一个要检查的地方

0 人点赞