R读取gmt文件
时间:2022-07-22
本文章向大家介绍R读取gmt文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前面我们简单介绍过什么是gmt文件,基因矩阵转置文件格式(* .gmt)。今天我们就用R来去读gmt文件。
首先我们从GESA(https://www.gsea-msigdb.org/gsea/downloads.jsp)的官网上,下载一个gmt文件。这里以KEGG的gmt文件为例,其他gmt文件的读取方法一样。
c2.cp.kegg.v7.0.symbols.gmt这个文件里面保存的是基因的名字,
而c2.cp.kegg.v7.0.entrez.gmt这个文件里面保存的是基因的Entrez gene id,
Entrez gene id一般是以一串数字代表一个基因,这串数字直接贴到NCBI里面就可以查找到对应的基因名字了。
下面我们会用两种不同的方法来将KEGG symbol的gmt文件读到R里,并转换成列表。由于gmt文件的每一行都是不一样长的,所以传统的read.table在这里是毫无用武之地的。
方法一:
x <- readLines("c2.cp.kegg.v7.0.symbols.gmt")
res <- strsplit(x, "t")
names(res) <- vapply(res, function(y) y[1], character(1))
res <- lapply(res, "[", -c(1:2))
该方法会将KEGG通路的名字作为列表中每个元素的名字,然后将前两列删掉,剩下的基因名字作为列表的元素
方法二:
dat = readLines("c2.cp.kegg.v7.0.symbols.gmt")
n = length(dat)
res = list(genesets = vector(mode = "list", length = n),
geneset.names = vector(mode = "character", length = n),
geneset.descriptions = vector(mode = "character",
length = n))
for (i in 1:n) {
s = strsplit(dat[i], "t")[[1]]
res$genesets[[i]] = s[-c(1:2)]
res$geneset.names[i] = s[1]
res$geneset.descriptions[i] = s[2]
}
names(res$genesets) = res$geneset.names
res
该方法,会保留gmt文件中的所有信息,结果会生成一个复杂的数据结构,列表里面嵌套列表。res为列表,长度为3,分别保存genesets,KEGG通路名字和数据来源,而geneset也是一个列表,里面保存186条KEGG通路上的所有基因名字。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浙大版《C语言程序设计(第3版)》题目集 习题8-3 数组循环右移
- SwiftUI:控制图像插值
- SQL-查询比p6零件供应数量都高的零件
- 浙大版《C语言程序设计(第3版)》题目集 习题8-5 使用函数实现字符串部分复制
- 最小生成树-Magicpig密室出逃(Kruskal+并查集)
- 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符
- SQL-显示供应商供应零件的汇总列表(with rollup+coalesce)
- 浙大版《C语言程序设计(第3版)》题目集 习题8-8 判断回文字符串
- 双向广搜-HDU1401 Solitaire
- TCP三次握手和四次挥手以及11种状态
- 浙大版《C语言程序设计(第3版)》题目集 题8-9 分类统计各类字符个数
- 迭代加深搜索-POJ 3134 Power Calculus
- 浙大版《C语言程序设计(第3版)》题目集 习题9-2 计算两个复数之积
- 浙大版《C语言程序设计(第3版)》题目集 习题9-6 按等级统计学生成绩
- 实战|用pandas+PyQt5制作一款数据分组透视处理工具