r语言大作业1——编写程序,从常用的生物信息学数据库中(如NCBI、TCGA等)批量下载数据。

本文介绍了一段R代码,通过RCurl库抓取NCBI网站上的基因信息,包括FullName、HGNC_ID、GeneType和Summary,用于从常见的生物数据库中批量下载和处理数据。

编写程序,从常用的生物信息学数据库中(如NCBI、TCGA等)批量下载数据。

内容集成自网络,部分经调试修改后发布

library(RCurl)
library(stringr)
library(XML)
library(clusterProfiler)
library(org.equ.eg.db)
setwd("D:/Ubuntu新++共享文件夹")#此处应为目标文件夹
rm(list=ls())
# 读入基因列表:
ENSEMBL<-read.table("hubgene.txt",sep="\t",header=1,row.names = 1)#存在列名时,header=TRUE,无列名时,header=F
# 提取每行中第十个字母以后的内容并删除提取后行内容为空的行
for (i in 1:nrow(countData)) {
  temp <- substr(as.character(ENSEMBL[i, ]), 1, 18)
  if (nchar(temp) > 0) {
    ENSEMBL[i, ] <- temp
  } else {
    ENSEMBL[i, ] <- NA
  }
}
# 删除包含NA的行
genes <- na.omit(ENSEMBL)

#将ENSEMBL数据转换为Gene ID(如果原数据是ENSEMBL的话)
genes <- bitr(geneID = genes$x, 
                     fromType = "ENSEMBL",
                     toType = "ENTREZID",
                     OrgDb = org.equ.eg.db)#org.equ.eg.db为事先建立好的基因信息文件,模式动物可以直接获取,非模式动物需要自行建立。
# 网址数据框:
genes$NCBI_url <- paste("https://www.ncbi.nlm.nih.gov/gene/",genes$ENTREZID,sep="")
head(genes)

# 根据xpath获取节点内容:
getNodesTxt <- function(html_txt1,xpath_p){
  els1 = getNodeSet(html_txt1, xpath_p)
  # 获得Node的内容,并且去除空字符:
  els1_txt <- sapply(els1,xmlValue)[!(sapply(els1,xmlValue)=="")]
  # 去除\n:
  str_replace_all(els1_txt,"(\\n )+","")
}

# 处理节点格式,为character且长度为0的赋值为NA:
dealNodeTxt <- function(NodeTxt){
  ifelse(is.character(NodeTxt)==T && length(NodeTxt)!=0 , NodeTxt , NA)
}

library(RCurl)
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))

opts<-list(ssl.verifypeer=FALSE)
for(i in 1:nrow(genes)){
  # 获得网址:
  doc <- getURL(genes[i,"NCBI_url"], cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE)
#此处getURL函数中使用的证书文件为默认地址,需要视情况
  cat("成功获得网页!\t")
  # 获得网页内容
  html_txt1 = htmlParse(doc, asText = TRUE)
  
  # 获得Full Name:
  genes[i,"FullName"] <- dealNodeTxt(getNodesTxt(html_txt1,'//*[@id="summaryDl"]/dd[2]/text()'))
  cat("写入基因\t")
  # 获得HGNC ID:
  genes[i,"HGNC_ID"] <- str_replace_all(dealNodeTxt(getNodesTxt(html_txt1,'//*[@id="summaryDl"]/dd[3]/a')),"HGNC|:","")
  cat("写入HGNC_ID\t")
  # 获得Gene type:
  genes[i,"GeneType"] <- dealNodeTxt(getNodesTxt(html_txt1,'//*[@id="summaryDl"]/dd[5]/text()'))
  cat("写入GeneType\t")
  # 获得summary:
  genes[i,"Summary"] <- ifelse(length(getNodesTxt(html_txt1,'//*[@id="summaryDl"]/dd[10]/text()'))!=0,getNodesTxt(html_txt1,'//*[@id="summaryDl"]/dd[10]/text()'),NA)
  cat("写入Summary\n")
  
  print(paste("完成第",i,"个了!"))
  
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值