内容

1概述

首先,我们必须决定是使用ExperimentHub还是AnnotationHub包是合适的。

AnnotationHubData包提供了获取、注释、转换和存储数据的工具,供Bioconductor的使用AnnotationHub.来自Encode项目的BED文件,来自ensemble bl的gtf文件,或者来自UCSC的注释轨道,都是可以下载、用元数据描述并转换为标准的数据示例Bioconductor数据类型,并进行存储,以便可以根据需要通过AnnotationHub客户机方便地提供给用户。虽然数据通常被处理成更适合r的形式,但数据本身保留了原始内容,通常不像在ExperimentHub.方法搜索每个资源的关联元数据AnnotationHub客户端接口。

ExperimentHubData提供工具来添加或修改Bioconductor的资源ExperimentHub.这个“中心”汇集了来自课程、出版物或实验的整理数据。在experimenthub中存储用于包示例、测试或小插图的数据通常是很方便的。资源可以是原始数据文件,或者更多情况下是原始数据文件R/Bioconductor对象,如GRanges, summarizeexperiment, data.frame等。方法搜索每个资源的关联元数据ExperimentHub客户端接口。

建议为注释或实验数据创建一个单独的包,而不是一个包含所有数据和代码的包。然而,有时也可以使用软件包作为集线器的软件包前端。尽管这通常是不被推荐的;如果您认为您有一个用例,请联系在使用单个包而不是附带的包方法之前进行确认。

2设置一个包来使用Hub

2.1新的Hub包

完成相关资源的添加AnnotationHubExperimentHub通过创建一个包。包应该最少包含资源元数据、描述资源的手册页和一个小插图。它也可能包含支持R作者想要提供的功能。这是一个与现有的相似的设计Bioconductor除了数据存储在AWS S3桶或公共可访问站点中,而不是存储在AWS S3桶或公共可访问站点中数据/本月/ extdata /包的目录。这保持了包的重量轻,允许用户只下载必要的数据文件。

下面是创建包和添加新资源所需的步骤:

2.1.1通知Bioconductor团队成员

中的数据可用之前,包中的手册页和小插图示例将无法工作AnnotationHubExperimentHub.如果你没有在一个稳定的web服务器上托管数据(github是不够的),你可以使用Bioconductor AWS S3 Bucket。将数据添加到AWS S3和将元数据添加到生产数据库需要从Bioconductor团队成员。在将数据正式添加到集线器之前,必须先创建metadata.csv文件(请参阅下面的inst/extdata部分)。请阅读“数据档案的储存”一节。

2.1.2构建包

当从一个集线器下载资源时,将在工作区中加载相关的包,使手册页和小插图随时可用。由于文档在理解这些资源方面起着重要作用,请花点时间开发清晰的手册页和详细的小插图。这些文件为用户提供了必要的背景,并指导资源的适当使用。

下面是包组织的大纲。除非另有说明,列出的文件是必需的。

2.1.2.1本月/ extdata /

  • metadata.csv:此文件包含将添加到Hub数据库的每个资源一行的元数据(每行对应S3或其他公共托管数据库上的一个数据文件)。该文件应该从inst/scripts/make-metadata中的代码中生成。最后的数据用R写出来write.csv(…row.names = FALSE).中指定所需的列名和数据类型ExperimentHubData: makeExperimentHubMetadataAnnotationHubData: makeAnnotationHubMetadata.看到了吗?ExperimentHubData: makeExperimentHubMetadata还是?AnnotationHubData: makeAnnotationHubMetadata获取详细信息。确保上面的函数在没有ERROR的情况下运行也是元数据文件的验证步骤。

    可以找到示例数据实验包metadata.csv文件在这里

    如果有必要,元数据可以被分解成多个csv文件,而不是将所有记录放在一个“metadata.csv”文件中。要求是必要的所需列和使用csv格式。

2.1.2.2本月/脚本/

  • 使数据。R:描述创建数据对象所涉及步骤的脚本。它可以是代码、sudo-code或文本,但应该包括原始数据从哪里下载、预处理以及如何生成最终的R对象。包括对外部执行的任何步骤的描述R使用第三方软件。脚本的输出应该是磁盘上准备推入S3的文件。如果数据托管在个人网站而不是S3上,这个文件应该解释在托管在网站上之前对数据的任何操作。对于托管在没有事先操作的公共网站上的数据,不需要此文件。对于实验数据对象,鼓励使用save ()在文件名上使用.rda扩展名,但不是必须的。如果数据是以另一种格式提供的,则可能需要实现适当的加载方法。请告知当达到“上传数据到S3”。

  • make-metadata。R:用于生成metadata.csv文件的脚本,该文件位于包的inst/extdata中。看到了吗?ExperimentHubData: makeExperimentHubMetadata还是?AnnotationHubData: makeAnnotationHubMetadata有关预期字段和数据类型的说明。的ExperimentHubData: makeExperimentHubMetadata ()AnnotationHubData: makeAnnotationHubMetadata ()可用于在提交包之前验证metadata.csv文件。

2.1.2.3小插曲/

  • 描述分析工作流程或用例的一个或多个小插图。它可以最低限度地显示如何从中心访问资源。

2.1.2.4R /

  • R / *。R:可选的。增强数据探索功能。

只针对ExperimentHub资源:-打鼾声。R:可选的。你可以附上.onLoad ()功能在zzz。Rfile that exports each resource name (i.e., metadata.csv field标题)变成一个函数。这允许数据按名称加载,例如,resouce123 ()

' ' ' r . onload <- function(libname, pkgname) {fl <- system。file("extdata", "metadata.csv", package=pkgname)标题<- read.csv(fl, stringsAsFactors=FALSE)$Title createHubAccessors(pkgname, Title)} ``` `ExperimentHub::createHubAccessors() '和' ExperimentHub:::. hubaccessorfactory() '提供内部细节。以资源命名的函数只有一个“元数据”参数。当metadata=TRUE时,加载元数据(相当于ExperimentHub对象上的单括号方法),当FALSE时加载完整的资源(相当于双括号方法)。

2.1.2.5人/

  • 包手册页:包手册页充当着陆点,应该简要描述与包相关的所有资源。在包手册页或单独的手册页上,每个资源标题都应该有一个条目。虽然这是可选的,但强烈推荐。

  • 资源手册页:可以将资源记录在同一页上,按公共类型分组,或者拥有自己的专用手册页。手册页应该描述资源(原始数据源、处理、QC步骤),并演示如何通过标准集线器接口加载数据。

    可以通过标准的ExperimentHub或AnnotationHub接口通过单括号和双括号方法访问数据。查询对于查找资源通常很有用。例如,您可以用正在开发的包的名称替换packagename,例如,

    library(ExperimentHub) eh <- ExperimentHub() myfiles <- query(eh, "PACKAGENAME") myfiles[[1]] ##加载列表中的第一个资源myfiles[["EH123"]] ##加载eh id

    注意:作为开发人员,应该使用Hub id在包中访问资源,例如' myfiles[[" EH123 "]]。

    您可以使用多个搜索查询来进一步筛选资源。例如,将下面的“SEARCHTERM*”替换为一个或多个惟一标识包中资源的搜索词。

    library(AnnotationHub) hub <- AnnotationHub() myfiles <- query(hub, "SEARCHTERM1", "SEARCHTERM2") myfiles[[1]] ##加载列表中的第一个资源
  • 只有ExperimentHub包如果一个.onLoad ()函数用于将每个资源作为函数导出,并记录加载方法,例如,

    显示resourceA(metadata = FALSE) ## data are loaded resourceA(metadata = TRUE) ## metadata
  • 包的作者被鼓励使用ExperimentHub: listResources ()而且ExperimentHub: loadResource ()其手册页和小插图中的函数。这些帮助程序的设计目的是方便在特定包中发现数据,而不是在整个ExperimentHub中发现数据。

2.1.2.6描述/名称空间

  • 这个包应该依赖并完全导入AnnotationHub或ExperimentHub。如果使用建议的.onLoad ()函数,在DESCRIPTION文件中导入utils包,并有选择地在命名空间中importFrom(utils, read.csv)。

  • 如果制作一个实验数据中心包,biocViews应该包含来自的术语ExperimentData和也应该包含术语ExperimentHub

    如果制作Annotation Hub包,biocview应该包含来自的术语AnnotationData和也应该包含术语AnnotationHub

    如果软件包比单独的注释或实验数据包更合适,biocViews术语应该只包括软件但必须包括其中之一AnnotationHubSoftwareExperimentHubSoftware

2.1.3数据对象

数据不是软件包的正式组成部分,而是单独存储在一个公开可访问的托管站点中,或者由Bioconductor存储在AWS S3存储桶中。作者应阅读以下“数据文件的存储”一节。

2.1.4确认有效元数据

当您对元数据.csv(或其他适当命名的csv文件)中的资源表示感到满意时Bioconductor团队成员将向生产数据库添加元数据。通过在包上运行ExperimentHubData::makeExperimentHubMetadata()或AnnotationHubData::makeAnnotationHubData()来确认inst/extdata/中的元数据csv文件是有效的。请指出和警告或错误。

2.1.5方案评审

一旦数据在AWS S3或公共站点中,并且元数据已添加到生产数据库中,就可以完成手册页和小插图。当包通过R CMD构建和检查时,它可以提交到包追踪进行审核。在提交包时,不需要任何远程定位的数据;这保持包的重量轻和最小的尺寸,同时仍然提供访问关键的大数据文件,现在存储远程如果数据文件被添加到github仓库请参阅删除大数据文件和清洁git树删除大文件,减少包的大小。

很多时候,这些数据包是作为软件包的补充而创建的。提交是有程序的同一问题下的多个包

2.2现有Hub包的附加资源

数据新版本的元数据在可用时可以添加到相同的包中。

  • 新版本的标题应该是唯一的,不能与Hub中当前任何资源的标题相匹配。最好的做法是在标题中包含版本和/或基因组构建。如果标题不是唯一的,则AnnotationHubExperimentHub对象将列出具有相同标题的多个文件。用户将需要使用' rdatadateadded '来确定哪个是最新的,或者从id号中推断,这可能会导致混淆。

  • 让数据可用:可以在公共网站上访问,也可以参见“将数据上传至S3”一节。

  • 更新make-metadata。Rwith the new metadata information

  • 生成一个新的metadata.csv文件。这个包应该包含ExperimentHub或AnnotationHub中所有版本数据的元数据,所以旧文件应该保留。当添加一个新版本时,写一个新的以版本命名的csv文件可能会很有帮助,例如metadata_v84.csv, metadata_85.csv等。

  • Bump包版本并提交到git

  • 通知更新已经准备好,团队成员将向生产数据库添加新的元数据;在元数据被添加到数据库之前,新资源在AnnotationHub或ExperimentHub中是不可见的。

联系有什么问题吗?

2.3转换非AnnotationHub注释包或非ExperimentHub注释包

实验数据包的开发利用。

包的概念和目录结构将保持不变。主要的步骤是

  1. 重构inst/extdata和inst/脚本,使其包含metadata.csv和make-data。R,如上一节所述,用于创建新包。运行命令,确保metadata.csv文件被正确格式化AnnotationHubData: makeAnnotationHubMetadata ()ExperimentHubData: makeExperimentHubMetadata ()在你的包裹上。

  2. 添加生物视图术语“AnnotationHub”或“ExperimentHub”描述

  3. 将数据上传到S3或放置在一个公共可访问的站点上,并从包中删除数据。请参阅下文“数据文件的存储”一节。

  4. 将数据正式添加到集线器之后,更新任何代码以利用AnnotationHub或ExperimentHub检索数据。

  5. 将所有更改与版本碰撞推回Bioconductor git.bioconductor的位置

3.错误修复

bug修复可能涉及对元数据、数据资源或两者的更改。

3.1更新资源

  • 替换资源必须与原始资源具有相同的名称,并且位于相同的位置(路径)。

  • 通知你想要替换数据并使文件可用:参见“上传数据到S3”部分。

  • 如果一个文件在S3上被直接替换,那么旧文件将不再可访问。如果旧文件已经被使用过,这可能会影响最终用户研究的可重复性。这种方法应该谨慎使用。

3.2更新元数据

可以为新的资源添加新的元数据记录,但不鼓励修改现有的记录。记录修改只在修复错误的情况下进行,必须由核心团队成员在数据库上手动完成。

  • 更新make-metadata。R而且regenerate the metadata.csv file if necessary

  • 更改包版本并提交到git

  • 通知您希望更改资源的元数据。核心团队成员可能需要需要更新的资源的当前AH/EH id,以及元数据文件中更改了哪些字段的摘要。注意:对元数据的较大更改可能需要核心团队成员从数据库中完全删除资源,并重新添加导致新的AH/EH id。

4删除资源

删除资源时应谨慎行事。目的是通过提供数据的稳定快照,使hub中的资源成为“可复制的”研究。在Bioconductor版本x.y.z中提供的数据应该适用于所有版本大于x.y.z的版本。不幸的是,这并不总是可能的。如果您发现有必要从AnnotationHub/ExperimentHub删除数据,请联系寻求帮助。

当一个资源从ExperimentHub或AnnotationHub中删除时,会发生两件事:' rdatadatermoved '字段填充一个日期,' status '字段填充一个资源不再可用的原因。一旦进行了这些更改,则ExperimentHub ()AnnotationHub ()构造函数不会在可用id中列出资源。试图提取具有'[['和EH/AH id的资源将返回一个错误和状态消息。这个函数getInfoOnIds ()将显示任何资源的元数据信息,包括仍在数据库中但不再可用的资源。

一般来说,只有当资源不再可用时才会删除(例如,从web位置移动,不再提供等)。

从…中删除资源AnnotationHub联系

5版本控制

资源的版本控制由维护人员处理。如果您计划为同一个生物体/基因组构建的文件提供增量更新,我们建议在资源的标题中包含一个版本,这样就很容易区分哪个版本是最新的。我们还建议在将数据上传到S3或您的公共可访问站点时,使用一个考虑版本控制的目录结构。

如果不包含版本,或以某种方式使标题唯一,则标题相同的多个文件将列在ExperimentHubAnnotationHub对象。用户将不得不使用' rdatadateadded '元数据字段来确定哪个文件是最新的,或者尝试从id推断,这可能会导致混淆。

6可见性

当用户调用ExperimentHub()/AnnotationHub()时,有几个元数据字段控制哪些资源可见。根据以下标准过滤记录:

一旦一条记录被添加到ExperimentHub/AnnotationHub,它从那一点开始是可见的,直到带有“rdatadatermoved”标记。例如,2017年5月1日添加的' biocVersion ' 3.6的记录将在所有快照>= 2017年5月1日和所有Bioconductor版本>= 3.6中可见。

在AnnotationHub中使用了一个针对OrgDb的特殊过滤器。每个发布/开发周期只有一个OrgDb可用。因此,添加到开发周期的贡献的OrgDb将被屏蔽,直到下一个版本。有一些选项可以调试这些被屏蔽的资源。看到setAnnotationHubOption ?

7数据档案的储存

数据不应该包含在包中。这使软件包重量轻,用户安装速度快。这允许用户在不下载大型数据文件的情况下研究函数和文档,只在必要时进行下载。存储数据有两种选择:Bioconductor AWS S3存储桶或将数据托管在公共可访问站点的其他地方。请参阅下面的信息,并选择最适合您的情况的选项。

7.1在公共可访问站点上托管数据

可以通过集线器从任何公开可访问的站点访问数据。创建的metadata.csv文件[s]将需要该列Location_Prefix表示托管站点。请参阅下面元数据列/字段的描述,如果链接到数据文件,则作为一个快速示例ftp://mylocalserver/singlecellExperiments/dataSet1.Rds的示例分解Location_Prefix而且RDataPath对于metadata.csv文件中的这个条目,将是ftp://mylocalserver/Location_Prefix而且singlecellExperiments / dataSet1。RdsRDataPath.Github不是一个可以接受的数据托管平台。

7.2上传数据到S3

而不是通过dropbox, ftp, github等提供数据文件,我们将授予临时访问S3桶,你可以上传你的数据。请电子邮件为访问。

您将被授予对“AnnotationContributor”用户的访问权限。确保AWS CLI已安装在您的机器上。参见安装说明AWS CLI在这里.一旦您请求访问,您将通过电子邮件收到一组密钥。为AnnotationContributor设置概要文件有两个选项

  1. 更新你的.aws /配置文件中包含以下相应的密钥更新:
[profile AnnotationContributor] output = text region = us-east-1 aws_access_key_id = **** aws_secret_access_key = ****
  1. 如果你找不到.aws /配置从上面输入适当的信息,运行以下命令
aws configure——profile AnnotationContributor

设置完配置后,您应该能够使用

#上传单个文件aws——profile AnnotationContributor s3 cp test_file.txt s3://annotation-contributor/ test_dir——recursive——acl public-read

请使用适当的目录结构上传数据,必要时包括子目录(即顶部目录必须是软件包名称,然后如果适用,版本的子目录,…)请不要忘记使用国旗——acl公有可读;这允许对数据文件进行读访问。

上传完成后,发送电子邮件继续这个过程。要正式添加数据,需要上传数据,并且需要在github存储库中创建metadata.csv文件。

8验证

验证记录元数据的最佳方法是使用AnnotationHubData: makeAnnotationHubMetadata ()ExperimentHubData: makeExperimentHubMetadata ().如果成功,元数据应该是有效的,并且能够输入到数据库中。

9示例metadata.csv文件和更多信息

如上所述,在将数据添加到数据库之前,需要创建metadata.csv文件(或多个metadata.csv文件)。为了确保正确的格式,应该运行一个AnnotationHubData: makeAnnotationHubMetadataExperimentHubData: makeExperimentHubMetadata在包上安装任何/所有元数据文件,并解决发生的任何错误。上传到S3的每个数据对象都应该在元数据文件中有一个条目(行)。简单地说,对所需元数据列的描述:

csv文件中的任何附加列都将被忽略,但可以包括在内以供内部引用。

更多关于Location_Prefix和RDataPath的信息。这两个字段组成了下载数据文件的完整文件路径url。如果使用Bioconductor AWS S3桶,Location_Prefix不应该包含在元数据文件[s]中,因为该字段将自动填充。RDataPath将是您上传到S3的目录结构。如果你上传了一个目录MyAnnotation /,该目录有一个子目录v1 /包含两个文件counts.rds而且coldata.rds,您的元数据文件将包含两行,rdatapath将是MyAnnotation / v1 / counts.rds而且MyAnnotation / v1 / coldata.rds.如果您的数据托管在一个公众可访问的网站,您必须包括一个基础url作为Location_Prefix.如果您的数据文件在ftp://myinstiututeserver/biostats/project2/counts.rds,您的元数据文件将有一行和Location_Prefixftp://myinstiututeserver/RDataPath生物抑制剂/ project2 / counts.rds

这是一个不好的示例,因为这些注释已经在集线器中,但它应该能让您了解AnnotationHub的格式。假设我有一个包myAnnotations,我上传了dog和cow的两个注释文件,其中包含从ensemble中提取到S3的信息。您可能希望将以下内容保存为csv格式(逗号分隔输出),但为了方便查看,我们在表格中显示:

标题 描述 BiocVersion 基因组 SourceType SourceUrl SourceVersion 物种 TaxonomyId Coordinate_1_based DataProvider 维护人员 RDataClass DispatchClass RDataPath
狗注释 犬狼疮基因组基因注释 3.9 犬属红斑狼疮 GTF ftp://ftp.ensembl.org/pub/release-95/gtf/canis_lupus_dingo/Canis_lupus_dingo.ASM325472v1.95.gtf.gz 释放- 95 犬属红斑狼疮 9612 真正的 运用 Bioconductor维护者 字符 FilePath myAnnotations / canis_lupus_dingo.ASM325472v1.95.gtf.gz
牛注释 牛的基因注释 3.9 GTF ftp://ftp.ensembl.org/pub/release-74/gtf/bos_taurus/Bos_taurus.UMD3.1.74.gtf.gz 释放- 74 9913 真正的 运用 Bioconductor维护者 字符 FilePath myAnnotations / Bos_taurus.UMD3.1.74.gtf.gz

这是一个虚拟的例子,但希望它能给你一个关于ExperimentHub格式的概念。假设我有一个包myExperimentPackage,我上传两个文件,一个是保存为。rda的表达式数据summarizeexperimiments,另一个是sqlite数据库,都认为是模拟数据。您可能希望将以下内容保存为csv格式(逗号分隔输出),但为了方便查看,我们在表格中显示:

标题 描述 BiocVersion 基因组 SourceType SourceUrl SourceVersion 物种 TaxonomyId Coordinate_1_based DataProvider 维护人员 RDataClass DispatchClass RDataPath
模拟表达式数据 12个样本和12000个问题的模拟表达式值 3.9 NA 模拟 http://mylabshomepage v1 NA NA NA //www.andersvercelli.com/packages/myExperimentPackage Bioconductor维护者 SummarizedExperiment Rda myExperimentPackage / SEobject.rda
模拟数据库 包含基因映射的模拟数据库 3.9 hg19 模拟 //www.andersvercelli.com/packages/myExperimentPackage v2 家智人 9606 NA //www.andersvercelli.com/packages/myExperimentPackage Bioconductor维护者 SQLiteConnection SQLiteFile myExperimentPackage / mydatabase.sqlite