用R获取芯片探针与基因的对应关系三部曲-bioconductor

33 篇文章 9 订阅

用R获取芯片探针与基因的对应关系三部曲-bioconductor

现有的基因芯片种类不要太多了!
softminiml都是表示该platform的基础信息,比如GPL编号,上传日期等,soft文件的部分内容如下

但是重要而且常用的芯片并不多!
一般分析芯片数据都需要把探针的ID切换成基因的ID,我一般喜欢用基因的entrez ID。
一般有三种方法可以得到芯片探针与gene的对应关系。
金标准当然是去基因芯片的厂商的官网直接去下载啦!!!
一种是直接用bioconductor的包
一种是从NCBI里面下载文件来解析好!
首先,我们说官网,肯定可以找到,不然这种芯片出来就没有意义了!
然后,我们看看NCBI下载的,会比较大
http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL6947
这两种方法都比较麻烦,需要一个个的来!
所以我接下来要讲的是用R的bioconductor包来批量得到芯片探针与gene的对应关系!
一般重要的芯片在R的bioconductor里面都是有包的,用一个R包可以批量获取有注释信息的芯片平台,我选取了常见的物种,如下:

0gplorganismbioc_package.db
1GPL32Mus musculusmgu74a
2GPL33Mus musculusmgu74b
3GPL34Mus musculusmgu74c
6GPL74Homo sapienshcg110
7GPL75Mus musculusmu11ksuba
8GPL76Mus musculusmu11ksubb
9GPL77Mus musculusmu19ksuba
10GPL78Mus musculusmu19ksubb
11GPL79Mus musculusmu19ksubc
12GPL80Homo sapienshu6800
13GPL81Mus musculusmgu74av2
14GPL82Mus musculusmgu74bv2
15GPL83Mus musculusmgu74cv2
16GPL85Rattus norvegicusrgu34a
17GPL86Rattus norvegicusrgu34b
18GPL87Rattus norvegicusrgu34c
19GPL88Rattus norvegicusrnu34
20GPL89Rattus norvegicusrtu34
22GPL91Homo sapienshgu95av2
23GPL92Homo sapienshgu95b
24GPL93Homo sapienshgu95c
25GPL94Homo sapienshgu95d
26GPL95Homo sapienshgu95e
27GPL96Homo sapienshgu133a
28GPL97Homo sapienshgu133b
29GPL98Homo sapienshu35ksuba
30GPL99Homo sapienshu35ksubb
31GPL100Homo sapienshu35ksubc
32GPL101Homo sapienshu35ksubd
36GPL201Homo sapienshgfocus
37GPL339Mus musculusmoe430a
38GPL340Mus musculusmouse4302
39GPL341Rattus norvegicusrae230a
40GPL342Rattus norvegicusrae230b
41GPL570Homo sapienshgu133plus2
42GPL571Homo sapienshgu133a2
43GPL886Homo sapienshgug4111a
44GPL887Homo sapienshgug4110b
45GPL1261Mus musculusmouse430a2
49GPL1352Homo sapiensu133x3p
50GPL1355Rattus norvegicusrat2302
51GPL1708Homo sapienshgug4112a
54GPL2891Homo sapiensh20kcod
55GPL2898Rattus norvegicusadme16cod
60GPL3921Homo sapienshthgu133a
63GPL4191Homo sapiensh10kcod
64GPL5689Homo sapienshgug4100a
65GPL6097Homo sapiensilluminaHumanv1
66GPL6102Homo sapiensilluminaHumanv2
67GPL6244Homo sapienshugene10sttranscriptcluster
68GPL6947Homo sapiensilluminaHumanv3
69GPL8300Homo sapienshgu95av2
70GPL8490Homo sapiensIlluminaHumanMethylation27k
71GPL10558Homo sapiensilluminaHumanv4
72GPL11532Homo sapienshugene11sttranscriptcluster
73GPL13497Homo sapiens
74GPL13534Homo sapiensIlluminaHumanMethylation450k
75GPL13667Homo sapienshgu219
76GPL15380Homo sapiensGGHumanMethCancerPanelv1
77GPL15396Homo sapienshthgu133b
78GPL17897Homo sapienshthgu133a

这些包首先需要都下载

gpl_info=read.csv("GPL_info.csv",stringsAsFactors = F)
### first download all of the annotation packages from bioconductor
for (i in 1:nrow(gpl_info)){
  print(i)
  platform=gpl_info[i,4]
  platform=gsub('^ ',"",platform) ##主要是因为我处理包的字符串前面有空格
  #platformDB='hgu95av2.db'
  platformDB=paste(platform,".db",sep="")
  if( platformDB  %in% rownames(installed.packages()) == FALSE) {
    BiocInstaller::biocLite(platformDB)
    #source("http://bioconductor.org/biocLite.R");
    #biocLite(platformDB )
  }
}
下载完了所有的包, 就可以进行批量导出芯片探针与gene的对应关系!
for (i in 1:nrow(gpl_info)){
  print(i)
  platform=gpl_info[i,4]
  platform=gsub('^ ',"",platform)
  #platformDB='hgu95av2.db'
  platformDB=paste(platform,".db",sep="")
  if( platformDB  %in% rownames(installed.packages()) != FALSE) {
    library(platformDB,character.only = T)
    #tmp=paste('head(mappedkeys(',platform,'ENTREZID))',sep='')
    #eval(parse(text = tmp))
###重点在这里,把字符串当做命令运行
    all_probe=eval(parse(text = paste('mappedkeys(',platform,'ENTREZID)',sep='')))
    EGID <- as.numeric(lookUp(all_probe, platformDB, "ENTREZID"))
##自己把内容写出来即可
  }
}

参考:http://blog.sina.com.cn/s/blog_62b37bfe0101jbuq.html

从GEO的soft文件中提取探针序列信息

问题

https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL16956
我需要注释这个平台,想要下载它的表格,可是直接表格点下面的view full table会显示在网页中,有五万多行,网页只能显示两万多行,根本不完整。在这里插入图片描述
思路
所以我只能下载文件了,隐约记得应该下载soft文件,可我不记得怎么读取了。
解决方案
1.搜索:
在这里插入图片描述
找到了第一个链接:
https://warwick.ac.uk/fac/sci/moac/people/students/peter_cock/r/geo/
哦 原来是这个样子,getGEO可以。但是我的soft好大,接近三百兆,很容易下载不完整。
2.从Rstudio自带的terminal运行linux,下载soft文件到本地
用wget来下载到本地再读取,刚好Rstudio可以运行linux哦,之前发过一次:https://www.jianshu.com/p/c16c7095e4b2

wget -c ftp://ftp.ncbi.nlm.nih.gov/geo/platforms/GPL16nnn/GPL16956/soft/GPL16956_family.soft.gz
gunzip GPL16956_family.soft.gz

在这里插入图片描述
3.读取数据并处理
下载的是压缩包,解压不解压都行的。都可以读取
刚才的帖子里有用信息就是读取方法:

library(GEOquery)
x=getGEO(filename = "GPL16956_family.soft")

step1:从GPL中提取有用的部分,只需要数据框的’ID’,'SEQUENCE’两列。

y=x@dataTable@table[,c('ID','SEQUENCE')]
head(y)
##              ID
## 1 ASHGA5P000001
## 2 ASHGA5P000002
## 3 ASHGA5P000003
## 4 ASHGA5P000004
## 5 ASHGA5P000005
## 6 ASHGA5P000006
##                                                       SEQUENCE
## 1 GAGATAACTAGAACAGTGTCCCTCCCCTTTTATAACCTGTGTTTTTAGATTTCAAAAAGA
## 2 CTAACTGTCAAACAAAGATGGGCTAATTAAACGGATGCCAACTAATCGGAAAACTTCTGG
## 3 CCAGAAGCTCCAGCATGGTCCACCTACCAGAAGCTCCAGCATGATTTACCCATGAGTAGC
## 4 TAAGTACGGTAATGCAAGAAGGTGCAGCAGGCGTAGTGCATTACAGCAACACTGAAAAAC
## 5 TATGAGAGATGAAGAGATAAGGTCTAACTGTTACCTGGGCTGAACCCTTGGACTTCTAGG
## 6 CAGTAGCGAGTATTTACTAAGTACTTTCTATTTGCGAGGCCCTGATAAAAGTACTGTCCT

#断线好几次 保存一下

save(y,file = "16956.Rdata")

step2.重复值统计
几千万行肯定不对,进行去重统计,发现每个都重复了八百多次!不明白为什么。

library(tidyverse)
x=count(y,ID,sort = T)
head(x)
## # A tibble: 6 x 2
##   ID                                      n
##   <chr>                               <int>
## 1 !Sample_channel_count = 1             875
## 2 !Sample_molecule_ch1 = total RNA      875
## 3 !Sample_organism_ch1 = Homo sapiens   875
## 4 !Sample_platform_id = GPL16956        875
## 5 !sample_table_begin                   875
## 6 !sample_table_end                     875

step3.去重复,两种方法

test1=distinct(y,ID,SEQUENCE)
test2=y[!duplicated(y),]

发现有一些叹号开头的行没有被跳过,有NA。所以去除NA。与GEO网页上的行数进行对比,发现一致,说明正确了。保存一下

test3= na.omit(test2)
nrow(test3)
## [1] 58944
save(test3,file = "GPL16956.Rdata")
write.csv(test3,file = "GPL16956.csv",row.names = F)
test4=read.csv("GPL16956.csv")
head(test4)
##              ID
## 1 ASHGA5P000001
## 2 ASHGA5P000002
## 3 ASHGA5P000003
## 4 ASHGA5P000004
## 5 ASHGA5P000005
## 6 ASHGA5P000006
##                                                       SEQUENCE
## 1 GAGATAACTAGAACAGTGTCCCTCCCCTTTTATAACCTGTGTTTTTAGATTTCAAAAAGA
## 2 CTAACTGTCAAACAAAGATGGGCTAATTAAACGGATGCCAACTAATCGGAAAACTTCTGG
## 3 CCAGAAGCTCCAGCATGGTCCACCTACCAGAAGCTCCAGCATGATTTACCCATGAGTAGC
## 4 TAAGTACGGTAATGCAAGAAGGTGCAGCAGGCGTAGTGCATTACAGCAACACTGAAAAAC
## 5 TATGAGAGATGAAGAGATAAGGTCTAACTGTTACCTGGGCTGAACCCTTGGACTTCTAGG
## 6 CAGTAGCGAGTATTTACTAAGTACTTTCTATTTGCGAGGCCCTGATAAAAGTACTGTCCT

sessionInfo()

sessionInfo()
## R version 3.5.1 (2018-07-02)
## Platform: x86_64-conda_cos6-linux-gnu (64-bit)
## Running under: Ubuntu 16.04.5 LTS
## 
## Matrix products: default
## BLAS/LAPACK: /pub/anaconda3/lib/R/lib/libRblas.so
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] parallel  stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] knitr_1.22          forcats_0.4.0       stringr_1.4.0      
##  [4] dplyr_0.8.0.1       purrr_0.3.2         readr_1.3.1        
##  [7] tidyr_0.8.3         tibble_2.1.1        ggplot2_3.1.0      
## [10] tidyverse_1.2.1     GEOquery_2.50.5     Biobase_2.42.0     
## [13] BiocGenerics_0.28.0
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.1       cellranger_1.1.0 pillar_1.3.1     compiler_3.5.1  
##  [5] plyr_1.8.4       tools_3.5.1      evaluate_0.13    lubridate_1.7.4 
##  [9] jsonlite_1.6     nlme_3.1-137     gtable_0.3.0     lattice_0.20-38 
## [13] pkgconfig_2.0.2  rlang_0.3.3      cli_1.1.0        rstudioapi_0.10 
## [17] yaml_2.2.0       xfun_0.5         haven_2.1.0      withr_2.1.2     
## [21] httr_1.4.0       xml2_1.2.0       generics_0.0.2   hms_0.4.2       
## [25] grid_3.5.1       tidyselect_0.2.5 glue_1.3.1       R6_2.4.0        
## [29] fansi_0.4.0      readxl_1.3.1     limma_3.38.3     modelr_0.1.4    
## [33] magrittr_1.5     backports_1.1.3  scales_1.0.0     rvest_0.3.2     
## [37] assertthat_0.2.1 colorspace_1.4-1 utf8_1.1.4       stringi_1.4.3   
## [41] lazyeval_0.2.2   munsell_0.5.0    broom_0.5.1      crayon_1.3.4
  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮肤小白生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值