获取TCGA中miRNA成熟体表达

前言:这个帖子本应该在2018年就要写完的,有个网友甚至当时加了我微信给了50块钱我都没有给他一个代码版。在这里希望这个网友能看到,对得起你的50块。(内心充满愧疚,一工作后就被工作的各种事情占满了精力然后每天下班回家都只想在床上安静的躺着什么都不想干)

以前还会使用TCGA官网工具gdc-client去下载数据,自从后来发现可以用TCGAbiolinks这个R包之后,尤其是与后续的分析可以在R中实现无缝衔接,果断放弃了前面的工具。下面就用这个包来写一个代码版的数据下载吧。

废话有点多还啰嗦,不说了,切入正题,以下载肺腺癌的miRNA成熟体为主示例。

# Author: ScorpioGirl
# Date: 2019-12-07
# Aim: Download miRNA isoform expression from TCGA database</pre>

加载所需要的包以及环境设置

library(pacman)
p_load(TCGAbiolinks)
p_load(stringi)
packageVersion("TCGAbiolinks")
​
rm(list = ls())
options(stringsAsFactors = F)
setwd("/media/bmk/Elements SE/2.work/DZH/3.TCGA")</pre>

数据查询与下载

# 可以通过TCGAbiolinks:::getGDCprojects()$project_id得到每个项目的ID
TCGAbiolinks:::getGDCprojects()$project_id
project_id <- "TCGA-LUAD"
​
# 可以通过TCGAbiolinks:::getProjectSummary(project_id)得到可以下载的数据类型
TCGAbiolinks:::getProjectSummary(project_id)
data_category <- "Transcriptome Profiling"
​
# data.type
data_type <- "Isoform Expression Quantification"
​
# 查询数据
query <- GDCquery(project = project_id,
data.category = data_category,
data.type = data_type)
​
# 下载
GDCdownload(query)
​
# 整合,这里得到的dataAssy是一个数据框,并且每一个样本的每一个miRNA一行,后面需要处理一下
dataAssy <- GDCprepare(query = query,
summarizedExperiment=F)</pre>

下载的数据如下图,第一列根据命名习惯我们可以知道是前体miRNA

img

得到有多少个样本

总共有567个样本,并且每个病人中miRNA表达 的数目不一样

sample_id <- as.data.frame(table(dataAssy$barcode))</pre>
img

得到有多少个成熟体miRNA

总共有2216行,其中有三个是precursor,stemloop以及没有注释上的unannotated

miRNA_id <- as.data.frame(table(dataAssy$miRNA_region))</pre>
img

生成一个有567个样本和2216个成熟体miRNA的矩阵

miRNA_matrue_RPM <- matrix(NA,ncol = nrow(sample_id),nrow = nrow(miRNA_id))
colnames(miRNA_matrue_RPM) <- sample_id$Var1
rownames(miRNA_matrue_RPM) <- as.character(miRNA_id$Var1)</pre>

处理数据得到RPM值

未表达的miRNA这里处理成了0,后续根据需要可以进行过滤,如去掉在80%的样本中表达值都为0的miRNA

for(i in 1:nrow(sample_id)){
 temp1 <- dataAssy[which(dataAssy$barcode==as.character(sample_id[i,1])),]
​
 for(j in 1:nrow(miRNA_id)){
     loc <- which(temp1$miRNA_region==as.character(miRNA_id[j,1])
     if(length(loc)>0){
       miRNA_matrue_RPM[j,i] <- sum(temp1[loc,4])
     }else{
           miRNA_matrue_RPM[j,i] <- 0
           }
     }
​
 print(i)
}

miRNA_matrue_RPM1 <- miRNA_matrue_RPM[1:2213,]</pre>

得到的表达谱如下:

img

对名字进行处理

#name <- unlist(strsplit(rownames(miRNA_matrue_RPM1),split="mature,",fixed=T))[seq(2,2213*2,by=2)]
name <- substr(rownames(miRNA_matrue_RPM1),8,nchar(rownames(miRNA_matrue_RPM1)))
​
# 使用R包miRBaseVersions.db进行ID转换
p_load(miRBaseVersions.db)
items <- select(miRBaseVersions.db,
keys = name,
keytype = "MIMAT",
columns = c("ACCESSION","NAME","VERSION"))
id_name <- items[items$VERSION == 21.0, c("ACCESSION","NAME")]
miRNA_matrue_RPM2 <- cbind(id_name,miRNA_matrue_RPM1)</pre>

最后的成熟体表达谱

数据是这个样子的,mir变成了miR

img

愉快的保存

# 我喜欢RData格式,省空间又方便下次使用加载。
save(miRNA_matrue_RPM2,file = paste(project_id,"_miRNA_matrue_RPM.RData",sep=""))

# 当然也可以是你们习惯的格式
write.table(miRNA_matrue_RPM2,file = paste(project_id,"_miRNA_matrue_RPM.xls",sep=""),sep="\t",row.names = F,quote=F)</pre>

!!!划重点总结!!!

1.一个前体可以生成两个成熟体或者其他的
如:hsa-mir-10a,有两个成熟体MIMAT0000253,MIMAT0004555和precursor。

2.一个成熟体可以由多个前体生成
如:MIMAT0000062由hsa-let-7a-1,hsa-let-7a-2和hsa-let-7a-3三个前体生成。

3.ID转换的时候,慎重选择miRBase数据库版本
如:VERSION ==22.0,最后会发现只剩下了2197个ID,如果选择21版本,发现还是2213个ID。Because:GDC Data Portal 中的miRNA 数据是基于 GRCh38 和 mirbase21的。也不能冒然使用最新版的数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342