轉錄組測序目前主要有兩種形式,RNA-seq和microarry。這兩種技術產生的數據在GEO數據庫中都有很多,其中RNA-seq的數據大多是已經注釋過的symbol為行名的矩陣,可以拿來直接用;而芯片數據還需要我們自行轉化為symbol。相信很多小伙伴都做過人的基因探針注釋,這套體系也很完善,有專門的數據庫,R包,和一些小工具。然而小鼠的基因探針注釋還不是很成熟,今天小編就來分享一下小鼠基因探針的注釋。
PS(因為小編自己代碼能力水平不高,也是經高手指點,如有疑問,可以在下方留言。)
說到基因探針注釋,肯定需要GPL文件,大多數數據來源作者會自己上傳到GEO同一個序列號下,大家注釋前需要一同下載
相信自行注釋過探針的小伙伴,第一反應肯定像小編一樣都是找GPL文件中有沒有symbol那一列,如果有的話直接提取出來就好啦,如果都是這樣,小編也沒有必要寫這個推文啦,寫就寫點特別的,比如GPL11533-9491這個注釋文件,吶
snipaste_20210313_001826.png
明顯沒有咱們想要的那一列呀,腫末辦。
"一開始我只顧著看你,所以認不清...."
有人會說可以找出GB_ID再轉換成symbol,很好,開始小編也是這樣想滴;然而,這樣轉成另一種ID還是不會注釋呀,對不對,所以肯定還得想別的法子
橋豆麻袋,我好像看到了什么
snipaste_20210313_002140.png
熟悉而又陌生的你,這不就是小鼠的symbol,真是踏破鐵鞋五米處,得來全都靠視力。
我只要把這列的信息提取出來,再稍微加工一下,是不是就.....
那么,開始展示
1.準備需要的GPL文件
library(tidyverse)
setwd("E:\\小鼠ID轉化")
rm(list=ls())
# 制作注釋文件
GPL <- read.delim("ann.txt",stringsAsFactors=FALSE,skip = 12 )#skip去除前面無用信息
colnames(GPL)
class(GPL)
GPL <- GPL[,c("ID","gene_assignment")]
a <- str_extract(GPL$gene_assignment,"ENSMUST(.+)//(.+)")#切割字符
head(a,5)
b <- str_split(a,"http://",n=3,simplify = T)[,2]#取第二部分symbol的信息
head(b,5)
GPL$gene_assignment <- b
c <- str_detect(GPL$gene_assignment,"")
head(c,5)
GPL <- GPL[c,]
GPL$gene_assignment <- str_trim(GPL$gene_assignment)
head(GPL)
write.table(GPL,"anno_gpl_new.txt",sep = "\t",row.names = F)
2.制作矩陣文件
probeMatrix <- data.table::fread("probeMatrix.txt")
data <- merge(probeMatrix,GPL,by.x = "ID_REF",by.y = "ID")
table(is.na(data$gene_assignment))
exprSet <- data %>%
column_to_rownames(var="ID_REF") %>%
#重新排列
select(gene_assignment,everything()) %>%
#求出平均數(這邊的點號代表上一步產出的數據)
mutate(rowMean =rowMeans(.[grep("GSM", names(.))])) %>%
#把表達量的平均值按從大到小排序
arrange(desc(rowMean)) %>%
# 留下第一個
distinct(gene_assignment,.keep_all = T) %>%
#反向選擇去除rowMean這一列
select(-rowMean) %>%
# 列名變成行名
column_to_rownames(var = "gene_assignment")
write.table(exprSet,"exprSet_new.txt",sep = "\t")
好啦,結束啦!
理解這個代碼需要對正則表達式有一定的掌握,其次,stringr和dplyr這兩個包那是super重要滴,一定要熟練掌握這兩個包,相關的教程網上也有很多。