简单地说,genbankr
package将NCBI的GenBank (gb/gbk)格式的文件解析为R。
主要的工作机器由readGenBank
函数,该函数接受GenBank文件(通过文件
参数)或GenBank格式的原始文本(通过文本
参数)。
suppressPackageStartupMessages(library(genbankr)) smpfile = system.file("sample. file ")gbk", package="genbank ") gb = readGenBank(smpfile)
##注释没有“locus_tag”标签,使用“gene”作为gene_id列
没有从genbank文件读取外显子。假设CDS部分是完整的外显子
没有发现转录本特征(mRNA),使用cds的跨度
## fill_stack_df(feat [!]typs %in% c(“基因”,“外显子”,“CDS”,##“变异”,:得到意外的多值字段(s) [rpt_type]。生成的##列将属于CharacterList类,而不是vector类。如果列出的字段需要多值或有意义,请联系维护者。
gb
人类疱疹病毒5株VR1814,全基因组。##编号:GU179289 ## 1总长度序列:235233 ## 174个基因## 170个转录本## 191个外显子/cds元件## 61个变异## 24个其他特征
readGenBank
生成一个GenBankFull
对象,其中包含注释和起源序列。genbankr方法,用于AnnotationDbi用于从对象中检索信息的API函数。
我们可以通过同名函数检索基因:
基因(gb)
## GRanges对象,174个范围和5个元数据列:## seqnames范围链|型基因## | <字符> <字符> ## [1]VR1814[1232,2164] + |基因RL1 ## [2] VR1814[2353,4863] - |基因RNA2.7 ## [3] VR1814[5253,5539] - |基因RL5A ## [4] VR1814[5888,6223] - |基因RL6 ## [5] VR1814[6622,7677] - |基因RNA1.2 ## ... ... ... ... . ... ...# # [170] VR1814(229242、229793)+ |基因US32 # # [171] VR1814(229995、230168)+ |基因US33A # # [172] VR1814(230337、230828)+ |基因US34 # # [173] VR1814(230822、231016)+ |基因US34A # # [174] VR1814(231986、234349)- - - - - - |基因TRS1 # # loctype注意gene_id # # <人物> <人物> <人物> # #[1]正常< NA > RL1 # #[2]正常< NA > RNA2.7 # #[3]正常< NA > RL5A # #[4]正常< NA > RL6 # #[5]正常< NA > RNA1.2 ## ... ... ... ...## [170] normal US32 ## [171] normal US33A ## [172] normal US34 ## [173] normal US34A ## [174] normal推定β基因;直接早基因TRS1 ## ------- ## seqinfo: 1序列来自GU179289.1基因组
我们也可以对外显子、cds元素和转录子做同样的事情(代码运行,但为简洁起见省略输出):
cd (gb)外显子(gb)转录本(gb)
我们还可以访问不在标准TxDb API中的元素,例如不适合任何其他类别的变量和特性:
变异(gb) otherFeatures (gb)
此外,我们还可以通过访问器访问头级信息:
加入(gb)
## [1] " gu179289 "
更小(gb)
# #加入。GenInfoID ## "GU179289.1" "270355759"
我们可以得到a的seqinfoGenBankAnnot
/GenBankFull
对象:
seqinfo (gb)
## seqnames seqlengthiscircular genome ## VR1814 235233 FALSE GU179289.1
最后,我们可以从a得到序列本身GenBankFull
对象:
getSeq (gb)
一个长度为1的DNAStringSet实例,命名为235233 CCATTCCGGGCCGCGTGCTG…CGCCAGTGCGGGACAGGGCT VR1814
虽然推荐使用和集成Bioconductor机制,但我们还通过主力提供低级解析功能parseGenBank
函数。这个函数返回一个大致对应于genbank格式本身的顶级标题的列表结构:
pg = parseGenBank(smpfile) str(pg,最大。等级= 1)
## 10 ## $基因座:chr“基因座GU179289 235233 bp DNA线性VRL 09-MAY-2013”## $ FEATURES: 429 ## ..[list output truncated] ##…- attr(*, "dim")= int 429 ## ..- attr(*, "dimnames")= 1 ## $ ORIGIN:正式类'DNAStringSet'[包"Biostrings"] 5插槽## $加入:chr "GU179289" ## $评论:NULL ## $定义:chr "人类疱疹病毒5株VR1814,完整的基因组。"##关键字:chr NA ## $引用:NULL ## $来源:列表的3 ## $版本:命名chr [1:2] "GU179289.1" "270355759" ## ..- attr(*, "names")= CHR[1:2] "添加。版本GenInfoID”
如果需要的话,readGenBank
而且parseGenBank
可以通过指定而省略生物体的完整序列吗ret.seq = FALSE
.在这种情况下,readGenBank
返回一个GenBankAnnot
对象,而不是对象GenBankFull
gbf = readGenBank(smpfile, ret.seq = FALSE)
##注释没有“locus_tag”标签,使用“gene”作为gene_id列
没有从genbank文件读取外显子。假设CDS部分是完整的外显子
没有发现转录本特征(mRNA),使用cds的跨度
## fill_stack_df(feat [!]typs %in% c(“基因”,“外显子”,“CDS”,##“变异”,:得到意外的多值字段(s) [rpt_type]。生成的##列将属于CharacterList类,而不是vector类。如果列出的字段需要多值或有意义,请联系维护者。
gbf
人类疱疹病毒5株VR1814,全基因组。##编号:GU179289 ## 1总长度序列:235233 ## 174个基因## 170个转录本## 191个外显子/cds元件## 61个变异## 24个其他特征
上面讨论的所有访问器方法都适用于GenBankFull
对象就像他们做的那样GenBankAnnot
对象。
我们还提供了一种方便的使用方法rtracklayer进口
读取GenBank文件的样式机制:
gbkfile = GenBankFile(smpfile) gb2 = import(gbkfile)
##注释没有“locus_tag”标签,使用“gene”作为gene_id列
没有从genbank文件读取外显子。假设CDS部分是完整的外显子
没有发现转录本特征(mRNA),使用cds的跨度
## fill_stack_df(feat [!]typs %in% c(“基因”,“外显子”,“CDS”,##“变异”,:得到意外的多值字段(s) [rpt_type]。生成的##列将属于CharacterList类,而不是vector类。如果列出的字段需要多值或有意义,请联系维护者。
genbankr提供了GBAccession
类和构造函数,用于表示版本化的核核登录号。
gba = GBAccession("U49845.1") gba
GenBank登录号:U49845.1
这些接入对象可以直接传递给readGenBank:
readGenBank (gba,部分= TRUE)
##加载所需的命名空间:rentrez
##注释没有“locus_tag”标签,使用“gene”作为gene_id列
##基因不能用于所有CDS范围,使用内部分组id
没有从genbank文件读取外显子。假设CDS部分是完整的外显子
##注释没有“locus_tag”标签,使用“gene”作为gene_id列
酿酒酵母TCP1-beta基因,部分cds;和Axl2p (AXL2)和Rev7p (REV7)基因,完全cds。##编号:U49845 ## 1总长度序列:5028 ## 2基因## 3转录本## 3外显子/cds元件## 0变异## 0其他特征
genbankr
也提供了一种只提取生物体序列的快速途径。我们可以打电话getSeq
在一个GenBankFile
或GBAccession
对象
getSeq (gbkfile)
一个长度为1的DNAStringSet实例,命名为235233 CCATTCCGGGCCGCGTGCTG…CGCCAGTGCGGGACAGGGCT VR1814
此外,我们可以指定ret.anno = FALSE
在parseGenBank
parseGenBank (smpfile ret.anno = FALSE)
一个长度为1的DNAStringSet实例,命名为235233 CCATTCCGGGCCGCGTGCTG…CGCCAGTGCGGGACAGGGCT VR1814
genbankr
提供了makeTxDbFromGenBank
函数,该函数接受GenBankRecord
或GBAccession
对象,并返回TxDb
注释的。
gbr = readGenBank(smpfile)
##注释没有“locus_tag”标签,使用“gene”作为gene_id列
没有从genbank文件读取外显子。假设CDS部分是完整的外显子
没有发现转录本特征(mRNA),使用cds的跨度
## fill_stack_df(feat [!]typs %in% c(“基因”,“外显子”,“CDS”,##“变异”,:得到意外的多值字段(s) [rpt_type]。生成的##列将属于CharacterList类,而不是vector类。如果列出的字段需要多值或有意义,请联系维护者。
tx = makeTxDbFromGenBank(gbr)
##警告:RSQLite::dbGetPreparedQuery()已弃用,请切换到## DBI::dbGetQuery(params = bind.data)
##警告:查询中未使用命名参数:internal_chrom_id, chrom, ## length, is_circular
##警告:查询中未使用命名参数:internal_id, name, type, ## chrom, strand, start, end
##警告:查询中未使用命名参数:internal_id, name, chrom, ## strand, start, end
##警告:查询中未使用命名参数:internal_tx_id, exon_rank, ## internal_exon_id, internal_cds_id
##警告:查询中未使用命名参数:gene_id, internal_tx_id
tx
TxDb对象:TxDb类型:TxDb支持包:GenomicFeatures ## #接入。GenInfoID: 270355759基因组:GU179289.1来源:NCBI (GenBank)定义:人类疱疹病毒5株VR1814,完整基因组。## #由Bioconductor的:genbankr包生成的数据库内容## # genbankr创建时的版本:1.2.1 ##转录t_nrow: 170 ## exon_nrow: 189 ## cds_nrow: 191 ##由Bioconductor的:GenomicFeatures包创建的数据库## #创建时间:2017-03-17 23:19:26 -0400(2017年3月17日周五)##基因组特性创建时的版本:1.26.3 ## RSQLite创建时的版本:1.1-2 ## DBSCHEMAVERSION: 1.1
通常情况下,GenBank文件不包含详尽的注释。例如,包含CDS注释的文件通常没有单独的转录特性。此外,染色体并不总是被命名的,特别是在只有一条染色体的生物体中。genbank如何处理此类情况的细节如下:
在有注释的CDS文件中,单独的外显子没有注释,“近似外显子”被定义为每个CDS中的单个连续元素。目前,即使在某些基因的外显子没有被CDS注释的情况下,也没有进行近似外显子和显式注释外显子的混合。
在不存在转录本的文件中,使用由外显子组所跨越的范围定义的“近似转录本”。目前,我们不支持从包含实际转录本注释的CDS文件中生成近似转录本,即使这些注释不包括所有带有CDS/外显子注释的基因。
特征(基因、cds、变体等)被假定包含在最近的先前的源特征(染色体/ DNA的物理片段)中。源特征的染色体名称(最终GRanges}/VRanges中的序列名)确定如下:
一些GenBank文件不包括原始序列。在这些情况下,不支持变化特征,因为没有自包含的方法来确定引用序列,而且特征本身通常只包含alt信息(如果有的话)。在包含变化特征但没有原始序列的文件的情况下,这些特征将被忽略并发出警告。
目前,来自GenBank文件头的一些信息,主要是引用和基于作者的信息,没有被捕获和返回。如果您有此类信息的直接用例,请联系维护者。
我们努力使genbankr解析器尽可能高效。在我们的本地机器上,解析一个19MB的genbank文件需要2-3分钟。也就是说,这个包没有经过测试,可能不适合处理超大的genbank文件。在这种情况下,我们建议以不同的格式获取注释。