GCT/GCTx数据格式+grp、gmt、gmt数据格式以及读取/储存

cmap的大部分转录相关数据都是保存为GCT/GCTx格式的,后者是前者的二进制版本。本篇将了解,学习具体格式内容,以及读取方法

1、GCT 格式

  • GCT (Gene Cluster Text):简单来说就是行为基因,列为样本的表达矩阵;同时分别储存行与列的metadata注释信息。
  • 如下图是储存有6个样本的10个基因的表达数据的矩阵,同时还包含有许多其它类型数据
    (1)第1行:GCT格式的版本号1.3
    (2)第二行:四个数字分别表示有10个基因,6个样本;基因有2列注释信息,样本有5行注释信息。
    (3)ridscids标识区域分别表示基因名、样本名;
    (4)ridschds标识区域分别表示基因注释信息类型、样本注释信息类型。
    (5)data matrixrow metadatacolumn metadata则储存具体的表达信息与注释信息。

2、R包cmapR处理GCT格式数据

  • 这个包虽然叫cmapR,但实际与cmap数据库没有太大关联,可以认为是一个处理GCT格式的工具包
# if (!requireNamespace("BiocManager", quietly = TRUE))
#   install.packages("BiocManager")
# BiocManager::install("cmapR")
library(cmapR)
# my_ds = ds
# write_gct(my_ds, "my_ds")
# write_gctx(my_ds, "my_ds")
  • (1)解析、读入本地的GCT/GCTx格式文件
my_ds = parse_gctx("my_ds_n272x978.gct")
class(my_ds)
# [1] "GCT"
# attr(,"package")
# [1] "cmapR"
  • (2)"GCT"对象主要结构组成
#mat:表达矩阵
my_ds@mat[1:4,1:4]
#           CPC006_A549_6H:BRD-U88459701-000-01-8:10 CPC020_A375_6H:BRD-A82307304-001-01-8:10
# 200814_at                                    -0.5236                                   0.4525
# 222103_at                                    -0.3721                                  -0.0186
# 201453_x_at                                   0.5784                                   0.3282
# 204131_s_at                                   0.5688                                   1.4957
#           CPC020_HT29_6H:BRD-A82307304-001-01-8:10 CPC020_PC3_24H:BRD-A82307304-001-01-8:10
# 200814_at                                    -0.1483                                  -0.6449
# 222103_at                                    -0.3630                                  -0.2050
# 201453_x_at                                  -0.2848                                  -0.4270
# 204131_s_at                                   0.2366                                   0.6773

# rid:基因名
str(my_ds@rid)
#chr [1:978] "200814_at" "222103_at" "201453_x_at" "204131_s_at" "200059_s_at" "205067_at" "213702_x_at" "214435_x_at" ...

# cid:样本名
str(my_ds@cid)
#chr [1:272] "CPC006_A549_6H:BRD-U88459701-000-01-8:10" "CPC020_A375_6H:BRD-A82307304-001-01-8:10" ...

# rdesc:基因注释
head(my_ds@rdesc[,1:4])
#             is_bing is_lm pr_gene_id pr_gene_symbol
# 200814_at         1     1       5720          PSME1
# 222103_at         1     1        466           ATF1
# 201453_x_at       1     1       6009           RHEB
# 204131_s_at       1     1       2309          FOXO3
# 200059_s_at       1     1        387           RHOA
# 205067_at         1     1       3553           IL1B

# cdesc:样本注释
head(my_ds@cdesc[,1:4])
#                                             brew_prefix cell_id distil_cc_q75 distil_nsample
# CPC006_A549_6H:BRD-U88459701-000-01-8:10   CPC006_A549_6H    A549          0.18              4
# CPC020_A375_6H:BRD-A82307304-001-01-8:10   CPC020_A375_6H    A375          0.46              5
# CPC020_HT29_6H:BRD-A82307304-001-01-8:10   CPC020_HT29_6H    HT29          0.14              4
# CPC020_PC3_24H:BRD-A82307304-001-01-8:10   CPC020_PC3_24H     PC3          0.57              5
# CPC006_A375_6H:BRD-U88459701-000-01-8:10   CPC006_A375_6H    A375          0.20              7
# CPC006_A375_24H:BRD-U88459701-000-01-8:10 CPC006_A375_24H    A375          0.75              5
  • (3)解析、读入本地的GCT/GCTx格式文件子集。适用于处理大体积的GCTx二进制文件
#仅读入colmeta信息
col_meta <- read_gctx_meta("my_ds_n272x978.gctx", dim="col")
dim(col_meta) #272 16
#仅读入rowmeta信息
row_meta <- read_gctx_meta("my_ds_n272x978.gctx", dim="row")
dim(row_meta) #978 6

#仅读取前10个样本的相关信息
my_ds_10_columns <- parse_gctx("my_ds_n272x978.gctx", cid=1:10)
dim(my_ds_10_columns@mat)
# [1] 978  10
my_ds_100_rows <- parse_gctx("my_ds_n272x978.gctx", rid=1:100)
dim(my_ds_100_rows@mat)
# [1] 100 272
  • (4)取GCT对象子集
my_ds = parse_gctx("my_ds_n272x978.gct")
# [1] 978 272
vemurafenib_ds3 <- subset_gct(my_ds,
                              cid=which(col_meta$pert_iname=="vemurafenib"))
# [1] 978 140
  • (5)从头创建GCT对象
m <- matrix(stats::rnorm(100), ncol=10)
rownames(m) <- letters[1:10]
colnames(m) <- LETTERS[1:10]
(my_new_ds <- new("GCT", mat=m))
rdesc <- data.frame(id=letters[1:10], type=rep(c(1, 2), each=5))
cdesc <- data.frame(id=LETTERS[1:10], type=rep(c(3, 4), each=5))
(my_new_ds <- new("GCT", mat=m, rdesc=rdesc, cdesc=cdesc))
  • (6)储存GCT对象为GCT/GCTx格式文件
# GCT file
write_gct(my_ds, "my_ds")

# GCTx file
write_gctx(my_ds, "my_ds")

# 转为SummarizedExperiment 对象格式
(se <- as(ds, "SummarizedExperiment"))

cmapR还提供由对应的docker版本,具体使用方法可见下次docker专门学习的笔记~

3、grp、gmt、gmx数据格式

3.1 GRP format

#Read a GRP file and return a vector of its contents
cmapR::parse_grp()

#Write a vector to a GRP file
cmapR::write_grp()
  • 本质是只有一列元素的文本文件,没有行名/列名,以换行符为分隔符;
  • 元素可以是基因名,样本名...
#genelist为基因名字符串·
write.table(genelist,sep = "\n",file = "myrid.grp",
            row.names = F, col.names = F, quote = F)

3.2 GMT format

#Read a GMT file and return a list
cmapR::parse_gmt()

#Read a GMT file and return a list
cmapR::write_gmt()
  • 用于储存基因集的文本格式;
  • 一行代表对一个基因集的记录,以\t为分隔符;
  • (从左往右)每个第一个元素为基因集名,第二个元素为对该基因集的描述,第三个元素及之后为该基因集里的所有基因
  • clusterProfiler包的read.gmt()函数可支持读取,解析gmt文件

3.3 GMX format

#Read a GMX file and return a list
cmapR::parse_gmx()
  • 同样是用于储存基因集的文本格式;相当于GMT格式的转置过的~
  • 一列代表对一个基因集的记录,以\t为分隔符;
  • (从上往下)每个第一个元素为基因集名,第二个元素为对该基因集的描述,第三个元素及之后为该基因集里的所有基因
  • clusterProfiler包的read.gmt()函数可支持读取,解析gmt文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容