AnnotationHub食谱
如果您正在阅读这篇文章,那么(希望如此)是因为您打算编写一些代码,允许将在线资源处理为R对象,这些对象将通过AnnotationHub包提供。为了做到这一点,你必须完成四个基本步骤(如下所述)。这些步骤将让您编写两个函数,然后调用第三个函数来为您进行一些自动设置。第一个函数将包含如何将在线存储的数据处理为元数据的说明,这些元数据用于描述AnnotationHub的新R资源。第二个函数用于描述如何获取这些在线资源并将其转换为对最终用户有用的R对象。
不用说,本插图是为熟悉r的用户设计的。为了遵循本插图中的说明,您需要安装AnnotationHubData包。
这个包并不适合大多数人使用,事实上,它只是一个支持包。所以它没有通过biocLite()暴露。所以要得到它,你需要使用svn从以下位置检查它:
https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/AnnotationHubData
签出后,您将需要使用R CMD INSTALL从源安装包。
AnnotationHubData包是对AnnotationHub包的补充包,它提供了一个存储代码的地方,我们可以将在线资源处理成适合通过AnnotationHub包访问的R对象。但是,在理解这个包的需求之前,重要的是您首先要了解在幕后用作中心及其基于web的存储库之间的中介的对象。这意味着您需要了解AnnotationHubMetadata对象。这些对象存储描述在线资源的元数据。如果希望将一组在线资源添加到存储库并进行维护,则有必要熟悉AnnotationHubMetadata构造函数。对于希望处理到AnnotationHub中的每个在线资源,必须能够构造一个AnnotationHubMetadata对象,该对象详细描述该资源,并指定菜谱函数所在的位置。
所涉及的步骤包括编写一个将文件添加到AnnotationHub的配方,可以简单地总结为:
下面的示例函数从最新版本的inparanoid中获取文件,并使用Map将它们处理为AnnotationHubMetadata对象。
您需要提供的第一个功能是将一些在线资源处理为AnnotationHubMetadata对象。这个函数必须返回一个AnnotationHubMetadata对象列表。它可以依赖于您定义的其他辅助函数,但最终它(以及它的辅助函数)需要包含查找资源并将这些资源处理为AnnotationHubMetadata对象所需的所有指令。Map函数的调用实际上是该函数的重要部分,因为它显示了创建一系列AnnotationHubMetadata对象的函数。在此之前,该函数只是调用其他辅助函数来处理元数据,以便使用Map将其传递给AnnotationHubMetadata构造函数。注意,这个函数指定的字段之一是Recipe,它指示了Recipe函数的名称和位置。我们期望大多数人在提交元数据处理函数时将食谱提交到同一个包中。
makein妄想8toahms <- function(currentMetadata){baseUrl <- 'http://inparanoid.sbc.su。在辅助函数meta <- . in妄想metadatafromurl (baseUrl) ##然后制作AnnotationHubMetadata对象。Map(AnnotationHubMetadata, Description=元$ Description, Genome=元$ Genome, SourceFile=元$ SourceFile, SourceUrl=元$ SourceUrl, SourceVersion=元$ SourceVersion, Species=元$ Species, TaxonomyId=元$ TaxonomyId, Title=元$ Title, RDataPath=元$ RDataPath, MoreArgs=list(Coordinate_1_based = TRUE, DataProvider = baseUrl, Maintainer = "Marc Carlson ", RDataClass = "SQLiteFile", RDataDateAdded = Sys.time(), RDataVersion = "0.0.1",Recipe = "AnnotationHubData::: Inparanoid 8todbsrecipe ", Tags = c("Inparanoid", "Gene", "Homology", "Annotation"))))}
现在,在我们进入第二步之前,这里有一个列表,列出了anntoationhubmetadata对象可以接受的不同参数,以及每个参数期望的类:
注释hubroot: 'character(1)'到包含要添加到AnnotationHub的资源的目录结构的绝对路径SourceUrl: 'character()'可以找到资源的URL SourceType: 'character()',它表示最初处理的资源类型。如果资源是单一文件类型,首选是命名资源的类型,如果是复合资源,首选是命名资源的来源。所以典型的回答是:“BED”,“FASTA”或“Inparanoid”等。SourceLastModifiedDate: 'POSIXct()'源文件最后一次修改的日期。保留此空白应允许为您检索值(如果您的sourceURL是有效的)。SourceMd5: 'character()'原始文件的md5哈希值SourceSize: 'numeric(1)'原始文件的字节数DataProvider: 'character(1)'这个资源从哪里来?标题:'字符(1)'该资源的标题描述:'字符(1)'资源描述物种:'字符(1)'物种名称TaxonomyId: '字符(1)' NCBI代码基因组:'字符(1)'基因组构建的名称标签:'字符()'自由形式标签Recipe: '字符(1)'配方函数的名称RDataClass: '字符(1)'派生对象的类(例如。RDataDateAdded: 'POSIXct()'日期添加到AnnotationHub。用于确定快照。RDataPath: '字符(1)'文件路径到序列化的形式维护者:'字符(1)'维护者的名字和电子邮件地址,'维护者' BiocVersion: '字符(1)'下的资源是建立Coordinate_1_based: '逻辑(1)'坐标以1或0开始? DispatchClass: 'character(1)' string used to indicate which code should be called by the client when the resource is downloaded. This is often the same as the RDataClass. But it is allowed to be a different value so that the client can do something different internally if required. Location_Prefix: 'character(1)' This was added for resources where the metadata only is stored and the resource itself comes from a third party web site. The location prefix says the base path where the resource is coming from, and the default value will be from our own site. Notes: 'character()' Notes about the resource.
你需要写的第二种函数叫做配方函数。它总是必须接受一个AnnotationHubMetadata对象作为参数。recipe函数的任务是使用AnnotationHubMetadata对象中的元数据来生成R对象或数据文件,以后可以从AnnotationHub服务中检索这些文件。下面是一个recipe函数,它调用一些helper函数,从存储在它的AnnotationHubMetadata对象中的元数据生成inparanoid数据库对象。
inparanid8todbsrecipe <- function(ahm){require(AnnotationForge) inputFiles <- metadata(ahm)$SourceFile dbname <- makeInpDb(dir=file.path(inputFiles,""), dataDir=tempdir()) db <- loadDb(file=dbname) outputPath <- file.path(metadata(ahm)$AnnotationHubRoot, metadata(ahm)$RDataPath) saveDb(db, file=outputPath) outputFile(ahm)}
在编写这个函数时,需要注意以下几个字段:
情况1 -如果文件只需要下载,只需要在用户的本地缓存中进行后期处理
的例子,
SourceUrls="http://hgdownload.cse.ucsc.edu/goldenPath/hg38/liftOver/hg38ToRn5.over.chain.gz", RDataPath="goldenPath/hg38/liftOver/hg38ToRn5.over.chain.gz", Location_Prefix ="http://hgdownload.cse.ucsc.edu/ ",
情况2 -如果配方需要从外部网站检索文件,对其进行预处理,将这个预处理文件存储在我们的亚马逊位置,并始终将预处理文件(而不是原始文件)呈现给用户
的例子,
SourceUrls="http://hgdownload.cse.ucsc.edu/goldenPath/hg38/liftOver/hg38ToRn5.over.chain.gz", Location_Prefix =" http://s3.amazonaws.com/annotationhub/", RDataPath="chainfile/dummy "。Rda”
如果这看起来令人困惑,请注意在这两种情况下,sourceUrl需要反映客户端使用时资源实际来自的位置。
当文件从用户的缓存实例化到AnnotationHub时,可以对其进行后处理。例如,一个BED文件被下载到用户的缓存中,我们希望AnnotationHub将其读取为农庄
使用rtrackler:进口
然后,与您的配方一起编写一个类,包括在AnnotationHub中,如下所示-
setClass("BEDFileResource", contains="AnnotationHubResource") setMethod("。get1", "BEDFileResource", function(x,…){.require("rtracklayer") yy <- .hub(x) dat <- rtracklayer::BEDFile(cache(yy)) rtracklayer::import(dat, format="bed", genome=yy$genome,…)})
如果您需要使用一组您正在制作配方的文件来完成此操作,您将需要与我们协调,以便我们可以将适当的支持代码修补到客户机中。或者,您可以确保将RDataClass设置为一个现有的值(我们已经有了一个方法)。
因此,此时您应该确保AnnotationHubMetadata生成函数生成了一个AnnotationHubMetadata对象列表,并且您的recipe生成了一个文件的路径,该路径是按照您期望的方式生成的。一旦发生这种情况,您应该与我们联系,以运行您的配方,以便您的数据可以实际放入集线器。
## 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]stats graphics grDevices utils datasets methods base ## ##其他附加包:## [1]knitr_1.10.5 BiocStyle_1.7.4 ## ##通过命名空间加载(并且没有附加):## [1]magrittr_1. 1.5 formatR_1.2 htmltools_0.2.6 tools_3.2.1 ## [5] yaml_2.1.13 stringi_0.5-5 rmarkdown_0.7 string_1 .0.0 ## [9] digest_0.6.8 evaluate_0.7