ensembl的biomart可以批量下载基因序列,但是有时候会无法访问,不知道是不是对我们封锁的问题。干脆自己写一个
rm(list = ls())#清除环境
#加载程序包
library('biomaRt')
library("curl")
library(tidyverse)
#主要利用getSequence函数,下面有注释
#getSequence(chromosome, #染色体名称
# start, 序列在染色体上的起始位置
# end, 序列在染色体上的末端位置
# id, 标识符或标识符向量。
# type, 使用的标识符类型。支持的类型包括 hugo、ensembl、embl、entrezgene、refseq、ensemblTrans 和 unigene。
#或者,也可以使用筛选器来指定类型。可能的过滤器由函数给出。listFilters()
# seqType, 要检索的序列的类型。允许的 seqTypes 在详细信息部分中给出。
# upstream, 将指定数量的碱基对的上游序列添加到输出中。
# downstream,将指定数量的碱基对的下游序列添加到输出中。
# mart, 使用 useMart 函数创建的 Mart 类的对象
# verbose = FALSE)#如果 verbose = TRUE,则将显示发送到 Web 服务的 XML 查询。
#返回的序列类型可以通过 seqType 参数指定,该参数采用以下值:
#“cdna”:用于核苷酸序列
#“peptide”:用于蛋白质序列
#'3utr':用于 3' UTR 序列
#'5utr':用于 5' UTR 序列
#“gene_exon”:仅适用于外显子序列
#'transcript_exon_intron':给出完整的未拼接转录本,即外显子+内含子
#'gene_exon_intron'给出了基因的外显子+内含子;coding' 仅给出编码序列
#“coding_transcript_flank”:给出脚本的侧翼区域,包括 UTR,这必须伴随着上游或下游属性的给定值
#'coding_gene_flank':给出基因的侧翼区域,包括UTR,这必须伴随着上游或下游属性的给定值
#“transcript_flank”:给出去除 UTR 的成绩单的侧翼区域,这必须伴随着上游或下游属性的给定值
#'gene_flank':给出基因的侧翼区域,不包括UTR,这必须伴随着上游或下游属性的给定值
mart <- useMart("ensembl", dataset="drerio_gene_ensembl")#如果是人或者小鼠请自行修改dataset
#下载单个基因5utr序列
seq = getSequence(id = "ENSDARG00000006791",
type = "ensembl_gene_id",
seqType = "5utr",
mart = mart)
show(seq)
#下载单个基因上游5000bp序列
seq = getSequence(id="ENSDARG00000006791",
type="ensembl_gene_id",
seqType="gene_flank",
upstream = 5000,
mart = mart)
show(seq)
#批量下载基因序列
setwd("C:\\Users\\admin\\Desktop")#自行修改文件地址
genes <- read_csv("genes.csv") #自行修改txt文件名
seq <- getSequence(id=genes$ensembl_gene_id,
type = "ensembl_gene_id",
seqType = "5utr",
mart = mart)
write.csv(seq,file ="genes_5utr.csv" )