包版本:BiocAnnotRes2015 1.0.0

注释资源

简介

注释资源在Bioconductor项目[1]中占很大比例。此外,还有各种各样的在线资源可供使用,这些资源可以使用特定的软件包访问。本演练将描述这些资源中最流行的,并给出一些关于如何使用它们的高级示例。

生物导体注释资源传统上用于分析的末尾。在大量的数据分析之后,注释将用于解释性地了解最重要的结果。但越来越多地,它们也被用作一个起点,甚至是一个中间步骤,以帮助指导仍在进行中的研究。除此之外,注释的含义也变得不像以前那么清晰了。过去很明显,注释只是那些经过多次不同研究后建立起来的东西(比如基因产物的主要作用)。但今天,社区对待许多大型数据集的方式与经典注释的方式大致相同:作为额外比较的参考。

Bioconductor中的注释正在发生的另一个变化是获取注释的方式。在过去,注释几乎完全作为单独的注释包存在[2,3,4]。今天,包仍然是注释的巨大来源。当前的版本库包含超过800个注释包。下表总结了一些经常使用包访问的更重要的注释对象类:

对象类型 包名示例 内容
OrgDb org.Hs.eg.db 基于基因的信息。对于智人来说
TxDb TxDb.Hsapiens.UCSC.hg19.knownGene 人类的转录组范围
OrganismDb Homo.sapiens 智人的综合信息
BSgenome BSgenome.Hsapiens.UCSC.hg19 智人基因组序列

但是,尽管注释包很流行,注释也越来越多地从诸如biomaRt[5,6,7]或AnnotationHub[8]这样的web服务中被拉下来。这两者都表示用于注释数据的巨大资源。

部分原因是由于快速发展的环境,目前不可能在一个文档中涵盖Bioconductor中所有可能的注释,甚至是所有类型的注释。因此,在这里我们将讨论最流行的注释资源,并以一种旨在公开用于访问它们的通用模式的方式描述它们。我们希望,拥有这些信息的用户能够对如何查找和使用以后不可避免添加的额外资源做出有根据的猜测。将涉及的主题包括:

设置

在本章中,我们将使用几个Bioconductor包。你可以用biocLite()安装它们:

来源(“//www.anjoumacpherson.com/biocLite.R”)biocLite(c(“AnnotationHub”,“Homo。智人”、“TxDb.Hsapiens.UCSC.hg19。knownGene”、“BSgenome.Hsapiens.UCSC。hg19", "biomaRt", "TxDb.Athaliana.BioMart.plantsmart22")))

所安装包的使用情况将在用法一节中详细描述。

使用AnnotationHub

学习注释资源的首选是相对较新的AnnotationHub包[8]。创建AnnotationHub的目的是为最终用户提供一个方便的访问点,以查找与Bioconductor一起使用的大量不同注释对象。在AnnotationHub中找到的资源很容易发现,并作为熟悉的Bioconductor数据对象呈现给用户。因为它是最近添加的,所以AnnotationHub允许访问范围广泛的注释,比如对象,其中一些甚至在几年前还不被认为是注释。要开始使用AnnotationHub,用户只需要加载包,然后创建一个本地AnnotationHub对象,如下所示:

## snapshotDate(): 2015-05-26
library("注解枢纽")ah <-注解枢纽()

第一次调用AnnotationHub时,它将在您的系统上创建一个缓存目录,并下载hub当前内容的最新元数据。从那时起,每当您下载某个集线器数据对象时,它也会将这些文件缓存到本地目录中,以便在再次请求该信息时能够快速访问它。

AnnotationHub对象的show方法将告诉您当前有多少资源可以使用该对象访问,并提供当前最常见数据类型的高级概述。

##注释中心34881条记录## # snapshotDate(): 2015-05-26 ## $dataprovider: BroadInstitute, UCSC, Ensembl, NCBI, Haemcode, Inparan…## # $物种:智人,小家鼠,牛牛,潘穴居人,大…## # $rdataclass: GRanges, BigWigFile, FaFile, OrgDb, ChainFile, in偏误…## #附加mcols(): taxonomyid,基因组,描述,标签,## # sourceurl, sourcetype ## #检索记录,例如,'object[["AH2"]]]' ## ## title ## AH2 | Ailuropoda_melanoleuca.ailMel1.69.dna.toplevel。a: a: a: a: a: d: a: a: aailmel1.69 .dna_sm. topllevel。aiuropoda_melanoleuca . ailmel1.69 .ncrnaa ## AH6 bb0 . ailmel1.69 .pep.all。Fa ## ... ...## AH47932 | xipophorus_maculatus . xipmac4.4.2 .dna_rm.toplevel。fa ## AH47933 | xipophorus_maculatus . xipmac4.4.2 .dna_sm.toplevel。fa ## AH47934 | xipophorus_maculatus . xipmac4.4.2 .dna.toplevel。xphophorus_maculatus . xipmac4.4.2 .ncrna。xphophorus_maculatus . xipmac4.4.2 .pep.all.fa

正如你从上面的对象中看到的,有很多不同的资源可用。因此,通常当您获得一个AnnotationHub对象时,您要做的第一件事是过滤它以删除不需要的资源。

幸运的是,AnnotationHub有几种不同类型的元数据,您可以使用它们进行搜索和子集设置。要查看不同的类别,只需键入AnnotationHub对象的名称,然后用' $ '操作符补全制表符。要查看这些类别的所有可能内容,你可以像这样将该值传递给unique:

独特的(啊dataprovider美元)
# # # #[1]“运用”[2]# #“EncodeDCC”[3]“UCSC”# #[4]“Inparanoid8”# #[5]“NCBI”# #[6]“NHLBI”# #[7]“他”# #[8]“Pazar”# #[9]“NIH通路相互作用数据库”# #[10]“RefNet”# #[11]“Haemcode”# #[12]“地理”# #[13]“BroadInstitute”# #[14]“ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/”# #[15]“dbSNP”

数据标记最有价值的方法之一是根据将返回给您的R对象的类型。

独特的(啊rdataclass美元)
[1]“FaFile”“GRanges”“Inparanoid8Db”##[4]“OrgDb”“TwoBitFile”“ChainFile”##[7]“SQLiteConnection”“data.frame”“biopax”##[10]“BigWigFile”“ExpressionSet”“VcfFile”

一旦确定了希望使用哪种类型的元数据来查找感兴趣的数据,就可以使用子集或查询方法将集线器对象的大小减小到更易于管理的程度。例如,您可以只选择元数据中字符串' GRanges '的记录。正如您所看到的,grange是来自AnnotationHub的数据的比较流行的格式之一。

grs <- query(啊,"GRanges") grs
##注释中心与17296记录## # snapshotDate(): 2015-05-26 ## $dataprovider: BroadInstitute, UCSC, Ensembl, Haemcode, pasar, EncodeDCC ## # $物种:智人,Mus musculus, Bos taurus, Pan troglodytes, Ca…## # $rdataclass: GRanges ## #附加mcols(): taxonomyid,基因组,描述,标签,## # sourceurl, sourcetype ## #检索记录,例如,'object[["AH3166"]]]' ## ## title ## AH3166 | wgencodeuwdgftregwb78495824热点## AH3913 | wgEncodeUwDgfTregwb78495824Pk ## AH4369 | wgEncodeUwDnaseWi38PkRep2 ## ... ...Tupaia_belangeri.TREESHREW.80。Tursiops_truncatus.turTru1.80。Vicugna_pacos.vicPac1.80。gtf ## AH47107 | xenopus_tropicalist . jgi_4.2.80。gtf ## AH47108 | xipophorus_maculatus . xipmac4.4.80 .gtf

或者,您可以使用子集设置只选择特定字段的匹配项

grs <- ah[ah$rdataclass == "GRanges",]

还提供了子集函数。

orgs <-子集(ah, ah$rdataclass == "OrgDb") orgs
##注释中心与1164条记录## # snapshotDate(): 2015-05-26 ## $dataprovider: NCBI, ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/ ## # $物种:大肠杆菌,冈比亚按蚊,猕猴,潘tr…## # $rdataclass: OrgDb ## #附加mcols(): taxonomyid,基因组,描述,标签,## # sourceurl, sourcetype ## #检索记录,例如,'object[["AH12818"]]]' ## ## title ## AH12818 | org. pseudomonas_mendocina_n -01.eg。sqlite ## AH12819 | org.Streptomyces_coelicolor_A3(2).eg。sqlite ## ah1282 | org.Cricetulus_griseus.eg。sqlite ## AH12821 |org . streptomyces_cattleya_nrrl_8057_ =_DSM_46488.eg。sqlite ## AH12822 | org.Cavia_porcellus.eg。Sqlite ## ... ...## AH46999 | org.Sc.sgd.db.sqlite ## AH47000 | org.Dr.eg.db.sqlite ## | org.Pf.plasmo.db.sqlite ## AH47001 |

如果你真的需要访问所有的元数据,你可以使用mcols()将其提取为DataFrame,如下所示:

Meta <- McOls (ah)

另外,如果你是GUI的粉丝,你可以使用display方法在浏览器中查看你的数据,并将选定的行返回为一个较小的AnnotationHub对象,就像这样:

Sah <- display(ah)

调用此方法将生成一个基于web的界面,如图所示:

一旦将AnnotationHub对象缩小到一个合理的大小,并确定要检索哪些记录,那么只需要使用'[[]'操作符来提取它们。使用'[['操作符,可以通过数字索引(1,2,3)或AnnotationHub ID提取。如果选择使用前者,则只需提取感兴趣的元素。所以对于我们的链例子,你可能只需要像这样输入第一个:

Res <- grs[[1]]
# #要求(“GenomicRanges”)
头(res, n = 3)
GRanges对象,包含3个范围和5个元数据列:## seqnames range | ##    | ## [1] chr11 [65266509,65266572] + | ## [2] chr1 [156675257,156675415] - | ## [3] chr10 [33247091,33247233] - | ## name score level ## <字符> <整数> <数字> ## [1]chr11:65266509:65266572:+:0.04:1.000000 0 20993.670 ## [3] chr1:156675257:156675415:-:0.35:1.000000 0 11580.471 ## [3] chr10:33247091:33247233:-:0.32:1.000000 0 8098.093 ## signif score2 ## <数字> <整数> ## [1]3.36 -10 0 ## [2]3.54e-10 0 ## [3] 3.82e-10 0 ## ------- # seqinfo: 24个序列(1个循环)来自hg19基因组

或者您可能已经决定要查看您在名为“AH13961”的orgs子集中发现的绿色斑点河豚的数据。这些数据也可以像这样提取:

兔子<- orgs[["AH13960"]]
##加载所需软件包:AnnotationDbi ##加载所需软件包:Biobase ##欢迎访问Bioconductor ## ## Vignettes包含介绍性材料;查看## 'browseVignettes()'。要引用Bioconductor,请参见##“citation(“Biobase”)”,以及软件包的“citation(“pkgname”)”。## ## ##附加包:'Biobase' ## ##下面的对象从'package:AnnotationHub'中屏蔽:## ##缓存
兔子
## OrgDb对象:## | DBSCHEMAVERSION: 2.1 ## | DBSCHEMA: NOSCHEMA_DB ## | ORGANISM: Oryctolagus cuniculus ## | SPECIES: Oryctolagus cuniculus ## | CENTRALID: GID ## | TAXID: 9986 ## | Db类型:OrgDb ## |配套包:AnnotationDbi . dbi . dbid: NOSCHEMA_DB
## ##请参阅:help('select')了解使用信息

AnnotationHub练习

练习1:使用AnnotationHub提取来自智人和hg19基因组的UCSC数据。在每一步筛选数据时,hub对象会发生什么?

现在你基本上已经把范围缩小到UCSC基因组浏览器的hg19注释,让我们来看看这些注释中的一个。找到牛至跟踪,并保存到一个局部变量。

回到顶部

OrgDb对象

此时,您可能想知道:这个OrgDb对象是关于什么的?OrgDb对象是注解对象家族的一员,它们都通过一组共享的方法表示隐藏的数据。因此,如果您仔细观察上面示例中的兔子对象,您可以看到它包含了欧洲兔子Oryctolagus cuniculus(分类ID = 9986)的数据。你可以通过学习columns方法来了解更多。

列(兔子)
##[1]“accnum”“alias”“chr”“entrezid”“evidence”##[6]“evidenceall”“genename”“gid”“go”“goall”##[11]“ontology”“ontologyall”“midid”“refseq”“symbol”##[16]“unigene”

columns方法为您提供了一个数据类型向量,可以从您调用它的对象中检索这些数据类型。因此,上面的调用表明可以从tetra对象检索到几种不同的数据类型。

一个非常类似的方法是keytypes方法,它将列出所有可以用作键的数据类型。

keytypes(兔子)
## [1] " accnum " " alias " " entrezid " " evidence " " evidenceall " ## [6] " genename " " gid " " go " " goall " "本体" ## [11]" ontologyall " " midid " " refseq " " symbol " " unigene "

在许多情况下,作为列列出的大部分内容也将从键类型调用中返回,但由于这两个内容不能保证相同,因此我们维护了两个单独的方法。

现在您可以看到哪些东西可以用作键,您可以调用keys方法来提取给定键类型的所有键。

(钥匙(兔子,keytype =“ENTREZID”))
##[1]“100008570”“100008594”“100008595”“100008596”“100008597”“100008598”

如果您需要获取某一特定类型的所有id,这是很有用的,但是keys方法有一些额外的参数,可以使它更加灵活。例如,使用keys方法,你也可以提取包含“COX”的基因符号,如下所示:

按键(rabbit, keytype="SYMBOL", pattern="COX")
# #[1]“ACOX1”“ACOX2”“ACOX3”“COX1”“COX2”“COX3”“COX4I1”“COX6A1”# #[9]“COX6B”

或者如果你真的需要一个其他的键类型,你可以使用column参数为那些包含字符串“COX”的基因符号提取ENTREZ GENE id:

按键(rabbit, keytype="ENTREZID", pattern="COX", column="SYMBOL")
## 'select()'返回键和列之间的1:1映射
##[1]“100009549”“100327269”“100327270”“100328652”“100338450”“103347455”##[7]“808229”“808231”“808233”

但通常情况下,您确实希望提取与特定键或键集匹配的其他数据。有两种方法可以使用。其中更强大的可能是选择。下面是如何查找基因符号和entrez基因id“808231”和“808233”的REFSEQ id。

select(rabbit, keys=c("808231","808233"), columns=c("SYMBOL","REFSEQ"), keytype="ENTREZID")
## 'select()'返回键和列之间的1:1映射
## entrezid符号refseq ## 1 808231 cox1 np_007551.1 ## 2 808233 cox2 np_007552.1

当您调用它时,select将返回一个data.frame,试图为您请求的所有列填充匹配的值。但是,如果您要求选择与键有多对一关系的内容,则可能会导致返回的数据对象的扩展。例如,看看当我们为相同的entrez基因ID请求GO项时会发生什么:

select(rabbit, keys="808233", columns="GO", keytype="ENTREZID")
## 'select()'返回1:多个键和列之间的映射
## entrezid go ## 1 808233 go:0009409 ## 2 808233 go:0005507 ## 3 808233 go:0005739 ## 4 808233 go:0016021 ## 5 808233 go:0022904 ## 6 808233 go:0007595 ## 7 808233 go:0009055 ## 8 808233 go:0020037 ## 9 808233 go:0004129

因为大约有9个GO术语与基因“808233”相关,所以在data.frame中最终有9行…如果你随后要求几个列与原始键有多对一关系,这就会出现问题。如果你这样做,不仅结果会成倍增加,它也会变得非常难以使用。更好的策略是在使用select时进行选择性。

有时,您可能希望以一种比select返回的data.frame对象更简单的方式查找匹配结果。当您只想查找每个键的一种值时尤其如此。对于这些情况,我们建议您查看mapIds方法。让我们看看如果请求与我们最近的select调用相同的基本信息,但使用mapIds方法会发生什么:

mapIds(rabbit, keys=c("808231","808233"), column="GO", keytype="ENTREZID")
## 808231 808233 ## " go:0005743" " go:0009409"

如您所见,mapIds方法允许您简化返回的结果。默认情况下,mapIds只返回每个键的第一个匹配元素。但是如果你真的需要在调用mapIds时返回所有这些GO术语呢?然后你可以使用mapIds multiVals参数。这个参数有几个选项,我们已经看到默认情况下只能返回' first '元素。但你也可以返回一个“list”或“CharacterList”对象,或者你可以“过滤”出或返回“asNA”任何有多个匹配的键。您甚至可以定义自己的规则(作为函数),并将其作为参数传递给multiVals。让我们看看当你返回一个列表时会发生什么:

mapIds(rabbit, keys=c("808231","808233"), column="GO", keytype="ENTREZID", multiVals="list")
## $ ' 808231 ' ## [6] " go:0005743" " go:0004129" " go:0015992" " go:0009055" " go:0034220" ## [6] " go:0046688" " go:0021549" " go:0044281" " go: 00044281 " " go:0005515" ## [11] " go:0007568" " go:0016021" " go:0020037" " go:0006123" " go:0051602" ## [16] " go:0006979" ## ## $ ' 808233 ' ## [1] " go:0009409" " go:0005507" " go:0005739" " go:0016021" " go:0022904" ## [6] " go:0007595" " go:0009055" " go:0020037" " go:0034220"

现在您知道了如何从OrgDb对象中提取信息,您可能会发现,知道还有其他一系列AnnotationDb派生对象也可以与这五个方法(keytypes()、columns()、keys()、select()和mapIds())一起使用是很有帮助的。例如,ChipDb对象、inparanoid对象和TxDb对象分别包含关于微阵列探针、inparanoid同源伙伴或转录范围信息的数据。还有一些更专门的对象,如GODb或ReactomeDb对象,它们提供对GO和reactome数据的访问。在下一节中,我们将研究这些对象中比较流行的一个类:TxDb对象。

OrgDb练习

练习3:使用:help(" SYMBOL ")查看帮助页面中不同的列和键类型值。现在,利用这些信息和我们刚才描述的内容来查找中间基因和染色体,寻找基因符号“MSX2”。

练习4:在前面的练习中,我们必须使用基因符号作为键。但在过去,这种行为有时是不可取的,因为一些基因符号被用作多个基因的官方符号。要了解这种情况是否仍在发生,请利用入口基因id是唯一分配的这一事实,并从org.Hs.eg.db包中提取所有基因符号及其相关的入口基因id。然后检查符号是否冗余。

回到顶部

TxDb对象

如前所述,可以使用标准方法集访问TxDb对象:keytypes()、columns()、keys()、select()和mapIds()。但由于这些对象包含有关转录组的信息,它们通常被用于将基于范围的信息与基因组的这些重要特征进行比较[3,4]。因此,它们也有专门的访问器来提取与重要的转录组特征相对应的范围。

让我们从基于果蝇UCSC集成基因跟踪的注释包中加载TxDb对象开始。加载这些文件时常见的做法是将长名称缩短为“txdb”(只是为了方便)。

库(“TxDb.Hsapiens.UCSC.hg19.knownGene”)
##加载所需的包:基因组特征
txdb <- txdb . hsapiens . ucsc .hg19。knownGene txdb
# # TxDb对象:# # # Db型:TxDb支持包:# # # # # # GenomicFeatures数据来源:UCSC基因组:# # # # # # hg19生物:智人# # # TaxID: 9606 # # # UCSC的表:knownGene # # #资源URL: http://genome.ucsc.edu/ # # #的基因类型ID: Entrez基因ID # # #完整数据集:是的# # # miRBase构建ID: GRCh37 # # # transcript_nrow: 82960 # # # exon_nrow: 289969 # # # cds_nrow: 237533 # # # Db由:GenomicFeatures包从Bioconductor # # #创建时间:2015-05-12 10:59:39 -0700(周二,2015年5月12日)## #基因组特征创建时的版本:1.21.3 RSQLite创建时的版本:1.0.0 ## DBSCHEMAVERSION: 1.1

仅通过查看TxDb对象,我们就可以了解很多关于它所包含的数据的信息,包括数据来自何处、它基于UCSC基因组的哪个构建以及该对象最后一次更新的时间。TxDb对象最常见的用途之一是从中提取各种转录数据。例如,你可以从TxDb中提取所有的文本作为GRanges对象,就像这样:

TXS <- transcripts(txdb) TXS
## seqnames ranges strand | tx_id tx_name ##    |   ## [1] chr1 [11874, 14409] + | 1 uc001aaa。3 ## [2] chr1 [11874, 14409] + | 2 uc010nxq。1 ## [3] chr1 [11874, 14409] + | 3 uc010nxr。1 ## [4] chr1 [69091, 70008] + | 4 uc001aal。1 ## [5] chr1 [321084, 321115] + | 5 uc001aaq。2 ## ... ... ... ... ... ... ...## [82956] chrY [27605645, 27605678] - | 78803 uc004fwx。1 ## [82957] chrY [27606394, 27606421] - | 78804 uc022cpc。1 ## [82958] chrY [27607404, 27607432] - | 78805 uc004fwz。3 ## [82959] chrY [27635919, 27635954] - | 78806 uc022cpd。1 ## [82960] chrY [59358329, 59360854] - | 78807 uc011ncc。1 ## ------- ## seqinfo:来自hg19基因组的93个序列(1个循环)

同样,也有exons()、cds()、genes()和promoter()的提取子。您选择提取哪种类型的特征仅仅取决于您所追求的信息。如果您只想要这些数据的平面表示,那么这些基本的提取器是很好的,但是其中许多特性本质上是嵌套的。因此,你可以选择提取一个GRanges对象,而不是提取一个GRangesList对象,该对象根据转录本所关联的基因对其进行分组,如下所示:

txby <- transcriptsBy(txdb, by="gene") txby
## seqnames ranges strand | tx_id tx_name ##    |   ## [1] chr19 [58858172,58864865] - | 70455 uc002qsd。4 ## [2] chr19 [58859832, 58874214] - | 70456 uc002qsf。2 ## ## $10 ## GRanges对象与1范围和2元数据列:## seqnames范围链| tx_id tx_name ## [1] chr8 [18248755, 18258723] + | 31944 uc003wyw。1 ## ## $100 ## GRanges对象与1范围和2元数据列:## seqnames范围链| tx_id tx_name ## [1] chr20 [43248163,43280376] - | 72132 uc002xmj。3 ## ##…## <23456更多元素> ## ------- ## seqinfo:来自hg19基因组的93个序列(1个循环)

就像平面提取器一样,根据您想提取什么以及如何对其进行分组,可以使用整个提取器家族。它们包括transcriptsBy(), exonsBy(), cdsBy(), intronsByTranscript(), fiveUTRsByTranscript()和threeUTRsByTranscript()。

在处理基因组数据时,几乎不可避免地会遇到不同组采用不同的染色体命名方法的问题。这是因为几乎每个主要的存储库都有自己略微不同的方式来标记这些重要的特性。

为了解决这个问题,发明了Seqinfo对象,并将其附加到TxDb对象以及从这些对象中提取的基因组范围。你可以像这样使用seqinfo()方法提取它:

Si <- seqinfo(txdb) Si
来自hg19基因组的93个序列(1个循环)的Seqinfo对象:## seqnames seq长度isCircular genome ## chr1 249250621 FALSE hg19 ## chr2 243199373 FALSE hg19 ## chr3 198022430 FALSE hg19 ## chr4 191154276 FALSE hg19 ## chr5 180915260 FALSE hg19 ## ... ... ... ...## chrUn_gl000245 36651 FALSE hg19 ## chrUn_gl000246 38154 FALSE hg19 ## chrUn_gl000247 36422 FALSE hg19 ## chrUn_gl000248 39786 FALSE hg19 ## chrUn_gl000249 38502 FALSE hg19

由于seqinfo信息也附加到TxDb提取器生成的GRanges对象,您还可以对这些方法的结果调用seqinfo,如下所示:

txby <- transcriptsBy(txdb, by="gene") si <- seqinfo(txby)

Seqinfo对象包含大量有价值的数据,包括存在哪些染色体特征,它们是圆形的还是线性的,以及每个染色体的长度。如果你试图执行像“finoverlapped”这样的操作来计算重叠范围等,它也会被检查。所以这是一种很有价值的方法来确保染色体和基因组的注释与你所比较的范围是相同的。但有时您可能会遇到这样的情况:注释对象包含与数据对象相当的数据,但它只是使用不同的命名风格命名。对于这些情况,您可以使用帮助程序来发现对象的当前名称样式。还有一个setter方法允许你将值更改为更合适的值。因此在下面的例子中,我们将把seqlevelStyle从' UCSC '改为' ensembl '基于命名约定(然后再返回)。

头(seqlevels (txdb))
##[1]“chr1”“chr2”“chr3”“chr4”“chr5”“chr6”
seqlevelsStyle (txdb)
##[1]“ucsc”
seqlevelsStyle(txdb) <- "NCBI" head(seqlevels(txdb))
##[1]“1”“2”“3”“4”“5”“6”
##然后更改回seqlevelsStyle(txdb) <- "UCSC" head(seqlevels(txdb))
##[1]“chr1”“chr2”“chr3”“chr4”“chr5”“chr6”

除了能够改变具有seqinfo数据的对象的命名风格之外,您还可以切换哪些染色体是“活动的”,以便软件将忽略某些染色体。默认情况下,所有的染色体都被设置为“活动”。

头(isActiveSeq (txdb), n = 30)
# # chr1 chr2 chr3 # #真的真的真的# # chr4 chr5 chr6 # #真的真的真的# # chr7 chr8 chr9 # #真的真的真的# # chr10 chr11 chr12 # #真的真的真的# # chr13 chr14 chr15 # #真的真的真的# # chr16 chr17 chr18 # #真的真的真的# # chr19 chr20 chr21 # #真的真的真的# # chr22 chrX chrY # #真的真的真的# # chrM chr1_gl000191_random chr1_gl000192_random # #真的真的真的# # chr4_ctg9_hap1 chr4_gl000193_random chr4_gl000194_random # #真的真的真的

但有时你可能希望忽略其中一些。例如,假设您想忽略来自txdb的Y染色体。你可以这样做:

isActiveSeq(txdb)["chrY"] <- FALSE head(isActiveSeq(txdb), n=26)
## chr1 chr2 chr3 ## TRUE TRUE TRUE ## chr4 chr5 chr6 ## TRUE TRUE TRUE ## chr7 chr8 chr9 ## TRUE TRUE TRUE ## chr10 chr11 chr12 ## TRUE TRUE TRUE ## chr13 chr14 chr15 ## TRUE TRUE TRUE ## chr16 chr17 chr18 ## TRUE TRUE TRUE ## chr19 chr20 chr21 ## TRUE TRUE TRUE ## chr22 chrX chrY ## TRUE TRUE FALSE ## chrM chr1_gl000191_random ## TRUE TRUE

TxDb练习

练习5:使用txdb . hspapiens . ucsc .hg19的访问器。knownGene包用于检索所有转录本的基因id、转录本名称和转录本染色体。使用select()方法和transcripts()方法完成此操作。输出有什么不同?

练习6:加载TxDb.Athaliana.BioMart。plantsmart22包。这个包不是来自UCSC,而是基于plantsmart。现在使用select或一个基于范围的访问器来查看这个TxDb对象中的基因id。它们和txdb . hspapiens . ucsc .hg19的比较如何?knownGene包吗?

回到顶部

OrganismDb对象

那么,如果有来自多个不同Annotation对象的数据会发生什么呢?例如,如果您有基因符号(在一个OrgDb对象中找到),并且希望轻松地将它们与基于UCSC的TxDb对象中的已知基因转录本名称进行匹配,该怎么办?有一个理想的工具可以帮助解决这类问题,它被称为有机体mdb对象[9]。一方面,OrganismDb对象似乎比OrgDb、GODb或TxDb对象更复杂,因为它们允许您一次访问所有三个对象源。但实际上它们并没有那么复杂。它们所做的只是为您查询这些资源中的每一个,然后将结果合并到一起,使您可以假装所有注释只有一个源。

为了尝试其中一个,让我们加载一个作为注释包的注释:

库(“Homo.sapiens”)
##加载所需的包:OrganismDbi ##加载所需的包:GO.db ##加载所需的包:DBI ## ##加载所需的包:org.Hs.eg.db ## ##现在直接获得GODb对象##现在直接获得OrgDb对象##现在直接获得TxDb对象
Homo.sapiens
## organmdb对象:## #包含GODb对象:GO.db ## #包含关于:基因本体的数据## #包含OrgDb对象:org.Hs.eg.db ## #关于:智人的基因数据## #分类Id: 9606 ##包含TxDb对象:TxDb. hsapiens . ucsc .hg19。关于:智人的转录组数据基于基因组:hg19 OrgDb基因id ENTREZID映射到TxDb基因id GENEID。

就是这样。现在可以像使用OrgDb或TxDb对象一样使用这些对象。它的工作原理与它所包含的基对象相同:

选择(Homo。sapiens, keys="4488", columns=c("SYMBOL","TXNAME"), keytype="ENTREZID")
## 'select()'返回键和列之间的1:1映射
## ENTREZID符号TXNAME ## 1 4488 MSX2 uc003mcy.3

事实上,对于我们讨论过的所有其他Db对象(keytypes()、columns()、keys()、select()和mapIds())都有效的五个方法应该都适用于OrganismDb对象。如果组织mdb对象被组合为包含TxDb,那么基于范围的访问器也应该工作:

txs <- transcripts(Homo。智人,列= c(“TXNAME”、“符号”))
## 'select()'返回键和列之间的1:1映射
tx
## seqnames ranges strand | TXNAME ##    |  ## [1] chr1 [11874, 14409] + | uc001aaa。3 ## [2] chr1 [11874, 14409] + | uc010nxq。1 ## [3] chr1 [11874, 14409] + | uc010nxr。1 ## [4] chr1 [69091, 70008] + | uc001aal。1 ## [5] chr1 [321084, 321115] + | uc001aaq。2 ## ... ... ... ... ... ...## [82504] chrX [154686575, 154688276] - | uc004fnj。3 ## [82505] chrX [154689080, 154689596] - | uc004fnk。3 ## [82506] chrX [154718673, 154842622] - | uc004fnn。3 ## [82507] chrX [154722196, 154842622] - | uc004fnp。4 ## [82508] chrX [155255323, 155257848] - | uc011nad。1 # #符号# # < CharacterList > # # [1] DDX11L1 # # [2] DDX11L1 # # [3] DDX11L1 # # [4] OR4F5 # # [5] NA  ## ... ...## [82504] F8A1 ## [82505] H2AFB3 ## [82506] TMLHE ## [82507] TMLHE ## [82508] NA ## ------- seqinfo:来自hg19基因组的92个序列(1个循环)

但是TxDb对象的范围访问器与OrganismDb对象之间的一个关键区别是,复合对象可以通过列请求的东西的数量要多得多……

OrganismDb练习

练习7:使用Homo。智人对象使用select()查找基因符号、转录起始和染色体。然后使用转录本做同样的事情。您可能期望对转录的调用与对TxDb对象的调用相同,但(暂时)并非如此。

练习8:看看Homo上调用columns方法的结果。sapiens对象,并将其与调用org.Hs.eg.db对象上的列时发生的情况进行比较,然后查看TxDb.Hsapiens.UCSC.hg19上的列的调用。knownGene对象。TXSTART和CHRLOC之间的区别是什么?你认为你应该使用哪一个转录本或其他基因组信息?

练习9:使用Homo。智人对象用keys方法查找所有包含字母“X”的基因符号的entrez基因id。

回到顶部

BSgenome对象

另一个重要的注释资源类型是BSgenome包[10]。存储库中有许多BSgenome包供您选择。通过使用可用的.genomes()函数,您可以了解哪些生物体已经得到支持。

库(“BSgenome”)
##加载所需包:Biostrings ##加载所需包:XVector ##加载所需包:rtracklayer
头(available.genomes ())
“BSgenome.Alyrata.JGI。v1" ## [2] "BSgenome.Amellifera.BeeBase。装配4" ## [3]"BSgenome.Amellifera.UCSC。apiMel2“##[4]”BSgenome.Amellifera.UCSC.apiMel2。“##[5]”BSgenome.Athaliana.TAIR。04232008" ## [6] " bsgenome . athaliana . tair9 "

与我们在这里讨论的其他资源不同,这些包旨在包含生物体特定基因组构建的序列数据。您可以以通常的方式加载其中一个包。并且每个对象通常都有一个比完整包名短的别名(为了方便):

库(BSgenome.Hsapiens.UCSC.hg19) ls (2)
## [1] " bsgenome . hspiens . ucsc。hg19 Hsapiens”
Hsapiens
##人类基因组:## #生物:智人(人类)## #提供者:UCSC ## #提供者版本:hg19 ## #发布日期:2009年2月## #发布名称:基因组参考联盟GRCh37 ## # 93序列:## # chr1 chr2 chr3 ## # chr4 chr5 chr6 ## # chr7 chr8 chr9 ## # chr10 chr11 chr12 ## # chr13 chr14 chr15 ## # ... ... ...chrUn_gl000235 chrUn_gl000238 chrUn_gl000239 chrUn_gl000240 chrUn_gl000241 chrUn_gl000242 chrUn_gl000243 chrUn_gl000246 chrUn_gl000247 chrUn_gl000248 chrUn_gl000249(使用'seqnames()'查看所有序列名称,使用'$'或'[[]' ##操作符访问给定序列)

getSeq方法是从这些包中提取数据的有用方法。这个方法需要几个参数,但最重要的是前两个。第一个参数指定要使用的BSgenome对象,第二个参数(names)指定要删除的数据。举个例子,如果你调用它并给出一个字符向量来命名对象的序列名那么你将从这些染色体中获得序列作为一个DNAStringSet对象。

seqNms <- seqnames(Hsapiens) head(seqNms)
##[1]“chr1”“chr2”“chr3”“chr4”“chr5”“chr6”
getSeq (Hsapiens seqNms [1:2])
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnNNNNNNNNNNNNNNNNNNNNNNNNNNNNN # # [2] 243199373 NNNNNNNNNNNNNNNNNNNNNNNNNNNNN…NNNNNNNNNNNNNNNNNNNNNNNNNNNNN

然而如果你给第二个参数一个GRanges对象,你可以得到一个DNAStringSet它对应于那些范围。这可能是一种强大的方法,可以了解特定范围内的序列。例如,在这里我们可以像这样提取一个特定基因的范围。

txby <- transcriptsBy(txdb, by="gene") geneOfInterest <- txby[["4488"]] res <- getSeq(Hsapiens, geneOfInterest) res
一个长度为1 ## width seq ## [1] 6328 TCCCGTCTCCGCAGCAAAAAAGTTTGAGTCG

此外,Biostrings[11]包有许多有用的功能,可以在字符串集中查找模式等。您可能没有注意到它何时发生,但Biostrings包是在加载BSgenome对象时加载的,因此这些函数已经可供您探索。

BSgenome练习

练习10:用你刚刚学到的方法提取PTEN基因的序列。

回到顶部

biomaRt

另一个很好的注释资源是biomaRt包[5,6,7]。biomaRt包公开了一系列不同的在线注释资源,称为marts。每个mart都是一组在线web资源中的另一个,这些资源遵循允许它们使用此包的约定。因此,使用生物art的第一步总是加载包,然后决定你想使用哪个“集市”。做出决定后,您将使用useMart()方法在R会话中创建一个mart对象。在这里,我们正在寻找可用的集市,然后选择使用最受欢迎的集市之一:“合奏”集市。

库(biomaRt)头(listMarts ())
##生物艺术版本## 1 ensemble ensemble GENES 80 (SANGER UK) ## 2 snp ensembl VARIATION 80 (SANGER UK) # 3 regulation ensembl regulation 80 (SANGER UK) ## 4 vega vega 60 (SANGER UK) ## 5 fungi_mart_26 ensembl fungus 26 (EBI UK) ## 6 fungi_variations_26 ensembl fungus VARIATION 26 (EBI UK)
ensembl <- useMart("ensembl") ensembl . ensembl
类“Mart”的对象:##使用ensembl BioMart数据库

每个“mart”可以包含多个不同事物的数据集。下一步是你需要决定一个数据集。一旦选择了一个数据集,就需要在调用useMart()构造函数方法时使用dataset参数指定该数据集。在这里,我们将指向人类的数据集。

头(listDatasets(运用))
# # # #数据集1 oanatinus_gene_ensembl # # 2 cporcellus_gene_ensembl # # 3 gaculeatus_gene_ensembl # # 4 lafricana_gene_ensembl # # 5 itridecemlineatus_gene_ensembl # # 6 choffmanni_gene_ensembl # # 1 # #描述版本鸭嘴兽anatinus基因(OANA5) OANA5 # # 2 Cavia porcellus基因(cavPor3) cavPor3 # # 3 Gasterosteus aculeatus基因(BROADS1) BROADS1 # # 4学名Loxodonta africana基因(loxAfr3) loxAfr3 # # 5 Ictidomys tridecemlineatus基因(spetri2) spetri2 # # 6 Choloepus hoffmanni基因(choHof1) choHof1
ensembl <- useMart("ensembl",dataset="hsapiens_gene_ensembl") ensembl
##使用ensembl BioMart数据库##使用hsapiens_gene_ensembl数据集

接下来,我们需要考虑属性、值和过滤器。让我们从属性开始。你可以从biomaRt购买使用listAttributes方法获得不同类型的属性列表:

头(listAttributes(运用))
1 ensembl_gene_id Ensembl基因ID ## 2 ensembl_transcript_id Ensembl转录本ID ## 3 ensembl_peptide_id Ensembl蛋白质ID ## 4 ensembl_exon_id Ensembl外显子ID ## 5 description描述## 6 chromosome_name染色体名称

你可以使用getBM方法来查看特定属性的值:

头(getBM(属性= " chromosome_name ",集市=运用))
## chromosome_name ## 11 ## 2 10 ## 3 11 ## 4 12 ## 5 13 ## 6 14

属性是你可以从biomaRt返回的东西。它们类似于对其他对象使用columns方法时得到的结果。

在biomaRt包中,过滤器可以与值一起使用来限制或选择返回的内容。这里的“值”被视为您传递进来的键,您希望了解更多信息。相反,筛选器表示您正在搜索的键的类型。例如,您可以选择一个筛选器名称“chromosome_name”来对应特定的值“1”。这两个参数值加在一起将请求与第一个染色体上的东西匹配的任何属性。就像这里有一个属性的访问器一样,也有一个过滤器的访问器:

头(listFilters(运用))
##名称描述## 1 chromosome_name染色体名称## 2 start Gene start (bp) ## 3 end Gene end (bp) ## 4 band_start Band start ## 5 band_end Band end ## 6 marker_start标记开始

现在您已经了解了属性、值和过滤器,可以调用getBM方法将它们组合在一起,并从集市请求特定的数据。例如,下面要求在果蝇染色体1上找到的基因符号和entrez基因id:

res <- getBM(attributes=c("hgnc_symbol", "entrezgene"), filters = "chromosome_name", values = "1", mart = ensembl) head(res)
## hgnc_symbol entrezgene ## 1 MMEL1 79258 ## 2 100505887 ## 3 NA ## 4 WRAP73 49856 ## 5 CAMK2N1 55450 ## 6 FCN3 8547

当然,您可能已经注意到getBM的许多参数与调用shsapienselect时所做的非常相似。如果这是你的偏好,你现在也可以使用标准的select方法和mart对象。

头(列(运用))
# #[1]“3 _utr_end”“3 _utr_end”“3 _utr_start”“3 _utr_start”“3 utr”# #[6]“5 _utr_end”

biomaRt练习

练习11:使用ensembl“hsapiens_gene_ensembl”数据集从human中提取entrez基因id“1”的GO项。

练习12:现在将您刚刚下拉的GO术语与org.Hs.eg.db包中的相同GO术语进行比较(现在可以使用select()检索该包)。你注意到了什么不同?你为什么会这样怀疑呢?

回到顶部

创建注释对象

现在您已经知道Bioconductor有很多注释资源。但是,为所有可能的用途预先打包每个注释资源仍然是完全不可能的。因此,几乎所有注释对象都具有特殊的函数,可以调用这些函数从广义数据资源或特定文件类型创建这些对象(或加载它们的包)。下面是一些比较流行的选择。

如果你想要这个 你得到了这个 那你就可以打电话求助了
TxDb UCSC的曲目 GenomicFeatures: makeTxDbPackageFromUCSC
TxDb 来自biomaRt的数据 GenomicFeatures: makeTxDbPackageFromBiomaRt
TxDb GFF或GTF文件 GenomicFeatures: makeTxDbFromGFF
OrgDb 自定义data.frames AnnotationForge: makeOrgPackage
OrgDb 有效的分类法ID AnnotationForge: makeOrgPackageFromNCBI
ChipDb Org包& data.frame AnnotationForge: makeChipPackage
BSgenome Fasta或双比特序列文件 BSgenome: forgeBSgenomeDataPkg

在大多数情况下,资源创建函数的输出将是一个可以安装的注释包。

不幸的是,这里没有足够的空间来演示如何调用这些函数。但是这样做实际上是相当简单的,而且大多数这样的函数都有很好的文档,有相关的手册页和小插图[3,4,10,12]。像往常一样,你可以在R中看到任何函数的帮助页面。

帮助(“makeTxDbPackageFromUCSC”)

如果您计划使用这类函数,那么您应该首先查阅相关文档。这类函数往往有很多参数,而且大多数函数还要求它们的输入数据满足一些相当特定的标准。最后,您应该知道,即使成功创建了注释包,也必须使用install.packages()函数(带有repos参数=NULL)来安装刚刚创建的包源目录。

重要的注意事项

生物导体项目代表了一个非常大和活跃的代码库,来自一个活跃和参与的社区。因此,您应该预料到,本演练中描述的软件将随着时间的推移而发生变化,而且通常是以戏剧性的方式发生变化。例如,本章中描述的getSeq函数预计将在未来几个月进行大的修改。当这种情况发生时,旧函数将被弃用一个完整的发布周期(6个月),然后在它被删除之前,在另一个发布周期中标记为defunct。这个循环的存在是为了提醒活跃用户正在发生什么,以及他们应该在哪里寻找合适的替换功能。但是很明显,如果最终用户没有对软件更新到最新版本保持警惕,那么这个系统就不能警告他们。所以请花点时间将您的软件更新到最新版本。

为了跟上最新的发展,我们鼓励用户探索bioconductor网站其中包含许多当前的演练和小插图。也可浏览支持网站在那里你可以提出问题并参与讨论。

sessionInfo ()

本教程中使用的包版本:

sessionInfo ()
## R版本3.2.1(2015-06-18)##平台:x86_64-unknown-linux-gnu(64位)##运行在Ubuntu 14.04.2 LTS下## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_US。UTF-8 LC_COLLATE= c# # [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_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4并行统计图形grDevices utils数据集##[8]方法基础## ##其他附加包:# # # # [1] biomaRt_2.25.1 [2] BSgenome.Hsapiens.UCSC.hg19_1.4.0 # # [3] BSgenome_1.37.3 # # [4] rtracklayer_1.29.12 # # [5] Biostrings_2.37.2 # # [6] XVector_0.9.1 # # [7] Homo.sapiens_1.3.1 # # [8] org.Hs.eg.db_3.1.2 # # [9] GO.db_3.1.2 # # [10] RSQLite_1.0.0 # # [11] DBI_0.3.1 # # [12] OrganismDbi_1.11.42 # # [13] TxDb.Hsapiens.UCSC.hg19.knownGene_3.1.3 # # [14] GenomicFeatures_1.21.13 # # [15] AnnotationDbi_1.31.17 # # [16] Biobase_2.29.1 # # [17] GenomicRanges_1.21.16 # # [18] GenomeInfoDb_1.5.8 # # [19]IRanges_2.3.14 ## [20] S4Vectors_0.7.10 ## [21] BiocGenerics_0.15.3 ## [22] AnnotationHub_2.1.30 ## [23] knitr_1.10.5 ## [24] BiocStyle_1.7.4 ## ##通过命名空间加载(并且没有附加):## [3] BiocInstaller_1.19.8 futial .logger_1.4.1 ## [5] futial .options_1.0.0 bitops_1.0-6 [11] tools_3.2.1 zlibbioc_1.15.0 ## [9] digest_0.6.8 evaluate_0.7 ## [11] graph_1.47.2 shiny_0.12.1 ## [13] curl_0.9.1 yaml_2.1.13 ## [15] httr_1.0.0 string_1 .0.0 ## [17] R6_2.1.0 RBGL_1.45.1 ## [19] BiocParallel_1.3.34 XML_3.98-1.3 ## [23] magrittr_1.5基因组alignments_1.5.11 ## [25] Rsamtools_1.21.14 htmltools_0.2.6 ## [27]摘要:## [29]interactiveDisplayBase_1.7.0 xtable_1.7-4 ## [31] httpuv_1.3.2 stringi_0.5-5 ## [33] RCurl_1.95-4.7

致谢

本章报告的研究得到了美国国立卫生研究院国家人类基因组研究所(奖励号U41HG004059)和美国国立卫生研究院国家癌症研究所(奖励号U24CA180996)的支持。我们还要感谢生产和维护用于生成和更新此处所述注释资源的数据的众多机构。

参考文献

  1. 沃尔夫冈·胡贝尔、文森特·J·凯利、罗伯特·史密斯、西蒙·安德斯、马克·卡尔森、贝尼尔顿·S·卡瓦略、赫克托·科拉达·布拉沃、肖恩·戴维斯、劳伦特·盖托、托马斯·吉尔克、拉斐尔·戈塔多、弗洛里安·哈恩、卡斯珀·D·汉森、拉斐尔·A·伊里扎里、迈克尔·劳伦斯、迈克尔·我爱、詹姆斯·麦克唐纳、瓦莱丽·奥本chain、安德烈·K·奥莱泽、Hervé Pagès、亚历桑德罗·雷耶斯、保罗·香农、戈登·K·史密斯、丹·特南鲍姆、Levi Waldron和Martin Morgan(2015)利用Bioconductor Nature Methods 12:115-121编排高通量基因组分析

  2. page H, Carlson M, Falcon S, Li N. AnnotationDbi:标注数据库接口。R包版本为1.30.0。

  3. M. Carlson, H. Pages, P. Aboyoun, S. Falcon, M. Morgan, D. Sarkar, M. Lawrence基因组特征:制作和操作转录中心注释版本1.19.38的工具。

  4. Lawrence M, Huber W, Pagès H, Aboyoun P, Carlson M, Gentleman R, Morgan M和Carey V(2013)。计算和注释基因组范围的软件。PLoS计算生物学,9。http://dx.doi.org/10.1371/journal.pcbi.1003118http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1003118

  5. Steffen Durinck, Wolfgang Huber biomaRt:接口到biomaRt数据库(例如ensemble bl, COSMIC,Wormbase和Gramene)版本2.23.5。

  6. 杜林克,施佩曼P,伯尼E,胡贝尔W(2009)。用于基因组数据集与R/Bioconductor包biomaRt集成的映射标识符。自然议定书,4,第1184-1191页。

  7. 杜林克,莫罗Y, Kasprzyk A, Davis S, De Moor B, Brazma A, Huber W(2005)。BioMart和Bioconductor:生物数据库和微阵列数据分析之间的强大链接。生物信息学,21,pp. 3439-3440。

  8. Morgan M, Carlson M, Tenenbaum D和Arora S. AnnotationHub:访问AnnotationHub资源的客户端。R包2.0.1版本。

  9. Carlson M, Pages H, Morgan M和Obenchain V. organizmdbi:实现不同数据库包平滑接口的软件。R包版本为1.10.0。

  10. page H. BSgenome:基于biostrings的基因组数据包的基础设施。R包版本为1.36.0。

  11. page H, Aboyoun P, Gentleman R和DebRoy S. Biostrings:表示生物序列的字符串对象,以及匹配算法。R包版本为2.36.0。

  12. Carlson M,和Pages H. AnnotationForge:构建注释数据库包的代码。R包版本为1.10.0。

习题答案

练习1:

你要做的第一件事就是从UCSC找东西

ahs <- query(ah, "UCSC")

然后你可以寻找与“hg19”匹配的基因组值和与“智人”匹配的物种。

Ahs <- sub (Ahs, Ahs $genome=='hg19') length(Ahs)
## [1] 5490
ahs <- sub (ahs, ahs$species=='Homo sapiens') length(ahs)
## [1] 5490

您可能会注意到最后两个筛选步骤是冗余的(执行第一个步骤与执行两个步骤是一样的)。如果不是这样,我们可能会怀疑元数据有问题。

练习2:

这将下拉牛至注释。UCSC网站上这样描述:“该轨道显示了来自ORegAnno(开放调控注释)的文献策划调控区域,转录因子结合位点和调控多态性。有关特定监管元素的更详细信息,请从详细信息页面链接到ORegAnno。”

Ahs <- query(ah, ' oregano ') Ahs
##注释中心与9条记录## # snapshotDate(): 2015-05-26 ## # $dataprovider: pasar, UCSC ## # $物种:智人,酿酒酵母,NA ## # $rdataclass: GRanges ## #附加mcols():例如,“object[["AH5087"]]]”## ## title ## AH5087 | ORegAnno ## AH5213 | ORegAnno ## AH7053 | ORegAnno ## AH7061 | ORegAnno ## AH22286 | pazar_ORegAnno_20120522.csv ## AH22287 | pazar_ORegAnno_ENCODEprom_20120522.csv ## AH22288 | pazar_ORegAnno_Erythroid_20120522.csv ## AH22289 | pazar_ORegAnno_STAT1_ChIP_20120522.csv ## AH22290 | pazar_ORegAnno_STAT1_lit_20120522.csv
唯有通过[1]
##注释中心与1记录## # snapshotDate(): 2015-05-26 ## # names(): AH5087 ## $dataprovider: UCSC ## # $species: Homo sapiens ## # $rdataclass: GRanges ## # $title: ORegAnno ## $description: GRanges对象从UCSC轨道'ORegAnno' ## $taxonomyid: 9606 ## $genome: hg19 ## $sourcetype: UCSC轨道## # $sourceurl: rtracklayer://hgdownload.cse.ucsc.edu/goldenpath/hg19/dat…## # $sourcelastmodifieddate: NA ## # $tags: oreganno, UCSC, track, Gene, Transcript, Annotation ## #检索记录与'object[["AH5087"]]]'
oreg <- ahs[['AH5087']] oreg
## seqnames ranges串| name ##    |  ## [1] chr1 [873499, 873849] + | OREG0012989 ## [2] chr1 [886764, 887214] + b| OREG0012990 ## [3] chr1 [886938,886958] + | OREG0007909 ## [4] chr1 [91945,919950] + | OREG0012991 ## [5] chr1 [919695,919715] ## # ... ... ... ... ... ...## [23114] chr7_gl000195_random [1,851] + | OREG0026736 ## [23115] chr7_gl000195_random [103427,103447] + | OREG0012963 ## [23116] chr7_gl000195_random [121139, 121159] + | OREG0012964 ## [23117] chr17_gl000204_random [58370, 58955] + | OREG0026769 ## [23118] chr17_gl000205_random [117492, 118442] + | OREG0026772 ##分数## <数字> ## [1]0 ## [2]0 ## [3]0 ## [5]0 ## [5]0 ## ... ...## [23114] 0 ## [23115] 0 ## [23116] 0 ## [23117] 0 ## [23118] 0 ## ------- ## seqinfo:来自hg19基因组的93个序列(1个循环)

练习3:

keys <- "MSX2" columns <- c("ENTREZID", "CHR") select(org. hs . exe .db, keys, columns, keytype="SYMBOL")
## deprecedcolsmessage()中的警告:不支持通过'CHR','CHRLOC','CHRLOCEND'访问基因位置信息。请使用基于范围的访问器,如基因(),或##选择()列值,如TXCHROM和TXSTART在TxDb或## OrganismDb对象。
## 'select()'返回键和列之间的1:1映射
##符号entrezid CHR ## 1 msx2 4488

练习4:

##首先获取所有基因符号orgSymbols <- keys(org.Hs.eg.db, keytype="SYMBOL") ##然后使用它来获取所有匹配所有entrez基因id的基因符号egr <- select(org.Hs.eg.db, keys=orgSymbols, "ENTREZID", "SYMBOL")
## 'select()'返回1:多个键和列之间的映射
长度(egr ENTREZID美元)
## [1] 56340
长度(独特(egr ENTREZID美元))
## [1] 56340
## VS: length(egr$SYMBOL)
## [1] 56340
长度(独特(egr $符号))
## [1] 56332
##所以让我们抓住这些多余的符号,仔细看看…redundd <- egr$SYMBOL badSymbols <- redundd[重复(redundd)] select(org. hs . e.g. .db, badSymbols, "ENTREZID", "SYMBOL")
## 'select()'返回1:多个键和列之间的映射
##符号entrezid ## 1 HBD 3045 ## 2 HBD 100187828 ## 3 rnr1 4549 ## 4 rnr1 6052 ## 5 rnr2 4550 ## 6 rnr2 6053 ## 7 SFPQ 6421 ## 8 SFPQ 654780 ## 9 tec 7006 ## 10 tec 100124696 ## 11 memo1 7795 ## 12 memo1 51072 ## 13 mmd2 221938 ## 14 mmd2 100505381 ## 15 lsamp-as1 100506708 ## 16 lsamp-as1 101926903

练习5:

所以要使用select来检索这些信息,你需要这样做:

res1 <- select(TxDb.Hsapiens.UCSC.hg19. txt)knownGene、钥匙(TxDb.Hsapiens.UCSC.hg19。knownGene, keytype="TXID"), columns=c("GENEID","TXNAME","TXCHROM"), keytype="TXID")
## 'select()'返回键和列之间的1:1映射
头(res1)
## TXID GENEID TXNAME TXCHROM ## 1 1 100287102 uc001aaa。3 chr1 ## 2 2 100287102 uc010nxq。1 chr1 ## 3 3 100287102 uc010nxr。1 ## 4 4 79501 uc001aal。1 chr1 ## 5 5  uc001aaq。2 chr1 ## 6 6  uc001aar。2 chr1

要使用转录本,你可以这样做:

res2 <- transcripts(TxDb.Hsapiens.UCSC.hg19. txt)knownGene, columns = c("gene_id","tx_name"))
## seqnames ranges strand | gene_id tx_name ##    |   ## [1] chr1 [11874, 14409] + | 100287102 uc001aaa。3 ## [2] chr1 [11874, 14409] + | 100287102 uc010nxq。1 ## [3] chr1 [11874, 14409] + | 100287102 uc010nxr。1 ## [4] chr1 [69091, 70008] + | 79501 uc001aal。1 ## [5] chr1 [321084, 321115] + | uc001aaq。2 ## [6] chr1 [321146, 321207] + | uc001aar。2 ## ------- ## seqinfo:来自hg19基因组的92个序列(1个循环)

注意,在第二种情况下,我们不必询问染色体,因为transcripts()返回GRanges对象,因此染色体将自动作为对象的一部分返回。

练习6:

library(TxDb.Athaliana.BioMart.plantsmart22) res <- transcripts(TxDb.Athaliana.BioMart. txt)Plantsmart22, columns = c("gene_id"))

您将注意到这个包的基因id是TAIR位点id,而不是像您在TxDb.Hsapiens.UCSC.hg19中看到的那样是entrez基因id。knownGene包。始终注意您正在查看的TxDb所使用的基因id类型是很重要的。

练习7:

库(智人)键<-键(智人)智人,keytype="TXID") res1 <- select(人。sapiens, keys= keys, columns=c("SYMBOL","TXSTART","TXCHROM"), keytype="TXID") head(res1)

要使用转录本,你可以这样做:

library(Homo.sapiens) res2 <- transcripts(Homo. sapiens)智人,列=“象征”)
## 'select()'返回键和列之间的1:1映射
头(它)
与6 # #农庄对象范围和1元数据列:# # seqnames范围链|符号# # < Rle > < IRanges > < Rle > | < CharacterList > # # [1] chr1(11874、14409)+ | DDX11L1 # # [2] chr1(11874、14409)+ | DDX11L1 # # [3] chr1(11874、14409)+ | DDX11L1 # # [4] chr1(69091、70008)+ | OR4F5 # # [5] chr1(321084、321115)+ | NA # # [6] chr1(321146、321207)+ | NA  ## ------- ## seqinfo: 92从hg19基因组序列(1循环)

锻炼8:

列(Homo.sapiens)
##[1]“accnum”“alias”“cdschrom”“cdsend”##[5]“cdsid”“cdsname”“cdsstart”“cdsstrand”##[9]“definition”“ensembl”“ensemblprot”“ensembltrans”##[13]“entrezid”“酶”“证据”“证据all”## b[17]“exonchrom”“exonend”“exonid”“exonname”## b[21]“exonrank”“exonstart”“exonstrand”“geneid”##[25]“genename”“go”“goall”“goid”## b[29]“ipi”“map”“omim”“本体”##[33]“ontologyall”“path”“pfam”“pmid”##[37]“prosite”“refseq”“symbol”“term”##[41]“txchrom”“txend”“txid”“txname”##[45]“txstart”“txstrand”“txtype”“ucsckg”##[49]“unigene”“uniprot”
列(org.Hs.eg.db)
## [1] " accnum " " alias " " ensembl " " ensemblprot " ## [5] " ensembltrans " " entrezid " " enzyme " " evidence " ## [9] " evidenceall " " genename " " go " " goall " ## [9] " ipi " " map " " omim " " ontology " ## [17] " ontologyall " " path " " pfam " " pmid " ## [25] " prosite " " refseq " " symbol " " ucsckg " ## [25] " unigene " " uniprot "
列(TxDb.Hsapiens.UCSC.hg19.knownGene)
##[1]“cdschrom”“cdsend”“cdsid”“cdsname”“cdsstart”##[6]“cdsstrand”“exonchrom”“exonend”“exonend”“exonid”“exonname”“exonname”“txchrom”##[16]“txend”“txid”“txname”“txstart”“txstrand”##[21]“txtype”
##你可能还想看看这个:抄本(Homo。智人,列= c(“象征”、“CHRLOC”))
## 'select()'返回键和列之间的1:1映射
## seqnames范围串| SYMBOL ##    |  ## [1] chr1 [11874, 14409] + | DDX11L1 ## [2] chr1 [11874, 14409] + | DDX11L1 ## [4] chr1 [69091,70008] + | OR4F5 ## [5] chr1 [321084, 321115] + | NA ## ... ... ... ... ... ...## [82504] chrX [154686575, 154688276] - | F8A1 ## [82505] chrX [154689080, 154689596] - | H2AFB3 ## [82506] chrX [154718673, 154842622] - | TMLHE ## [82507] chrX [154722196, 154842622] - | TMLHE ## [82508] chrX [155255323,155257848] - | NA ## ------- # seqinfo: hg19基因组92个序列(1个循环)

关键的区别在于TXSTART指的是一个转录本的开始,它起源于TxDb对象中的TxDb. hsapiens . ucsc .hg19。knownGene包,而CHRLOC指的是同一个东西,但起源于org.Hs.eg.db包中的OrgDb对象。起源点很重要,因为TxDb对象代表来自UCSC的转录组,而OrgDb主要是起源于NCBI的基因中心数据。结果是,CHRLOC基因没有TXSTART基因那么多的区域,因为必须有一个官方基因才能有一个记录。org. hs . e.g. .db的CHRLOC数据也被锁定为hg19的数据,而您可以交换不同的TxDb对象来匹配您正在使用的基因组以使其成为hg18等。出于这些原因,我们强烈建议使用TXSTART而不是CHRLOC。然而,由于历史原因,CHRLOC仍然保留在org包中。

锻炼9

要查找匹配的键,请使用模式和列参数。

library(Homo.sapiens) xk = head(keys(Homo. sapiens))sapiens, keytype="ENTREZID", pattern="X", column="SYMBOL")) xk
##[1]“51”“179”“189”“239”“240”“241”

Select验证结果

选择(Homo。智人,xk,“符号”,“ENTREZID”)
## 'select()'返回键和列之间的1:1映射
## entrezid符号## 1 51 acox1 ## 2 179 agmx2 ## 3 189 agxt# # 4 239 alox12 ## 5 240 alox5 ## 6 241 alox5ap

锻炼10:

库("BSgenome.Hsapiens.UCSC.hg19") ##获取按基因txby <- transcriptsBy(Homo. hg19)分组的转录范围。sapiens, by="gene") ##查找entrez ID的基因符号“PTEN”选择(人。sapiens, keys='PTEN', columns='ENTREZID', keytype='SYMBOL')
## 'select()'返回键和列之间的1:1映射
符号entrezid ## 1 pten 5728
txby[["5728"]] ##提取序列res <- getSeq(Hsapiens, geneOfInterest) res
一个DNAStringSet实例,长度为2 ## width seq ## [1] 105338 cctccccccgcccggcgcggcccgtcccgtccgccTtaaaactgattaaagtctcattcttgtca ## [2] 105338 cctcccctcgcccggcgcggcccgtccgcc…Ttaaaactgattaaagtctcattcttgtca

锻炼11:

library("biomaRt") ensembl <- useMart("ensembl",dataset="hsapiens_gene_ensembl") ids=c("1") getBM(attributes=c('go_id', 'entrezgene'), filters = 'entrezgene', values = ids, mart = ensembl)
## go_id entrezgene ## 1 GO:0005575 1 ## 2 GO:0005576 1 ## 3 GO:0043226 1 ## 4 GO:0008150 1 ## 5 GO:0005615 1 ## 6 GO:0003674 1 ## 7 GO:0070062 1 ## 8 GO:0072562 1 ## 9 GO:0005515 1 ## 1

练习12:

库(org. hs . e.g. .db) ids=c("1") select(org. hs . e.g. .db, keys=ids, columns="GO", keytype="ENTREZID")
## 'select()'返回1:多个键和列之间的映射
## entrezid去证据本体## 1 1 go:0003674 nd mf ## 2 1 go:0005576 IDA cc ## 3 1 go:0005615 IDA cc ## 4 1 go:0008150 nd bp ## 5 1 go:0070062 IDA cc ## 61 go:0072562 IDA cc

在编写这个练习时,biomaRt返回的GO术语数量与org.Hs.eg.db返回的GO术语数量不同。这在未来可能并不总是正确的,尽管这两个资源都在更新。然而,预计这个web服务(不断更新)将与org.Hs.eg.db包(每年更新两次)同步或不同步。这是一个重要的区别,因为每种方法都有不同的优点和缺点。持续更新的好处是,你总是有最新的注释,这些注释经常是不同的,比如GO术语。使用包的优点是结果被冻结到Bioconductor的释放。这可以帮助你得到和今天相同的答案(可重复性),几年之后。

回到顶部