ExperimentHubData
提供工具来添加或修改Bioconductor的资源ExperimentHub
.这个“中心”收藏了来自课程、出版物或实验的数据。资源通常不是原始数据的文件(在AnnotationHub
)而不是R
/Bioconductor
对象,如GRanges, summarizeexperiment, data.frame等。方法搜索每个资源都有关联的元数据ExperimentHub
客户端接口。
资源被贡献给ExperimentHub
以包的形式。该包包含资源元数据、手册页、小插图和任何支持R
作者想提供的功能。这是一个类似于现有的设计Bioconductor
实验数据包(除数据存储在AWS S3桶或可公开访问的站点外),不存储在包的数据/目录中。
下面是添加新资源所需的步骤。
Bioconductor
团队成员中提供的数据之前,数据实验包中的手册页和小插图示例将无法工作ExperimentHub
.将数据添加到AWS S3,并将元数据添加到生产数据库,需要一个Bioconductor
团队成员。必须先创建metadata.csv文件,然后才能将数据正式添加到集线器(请参阅下面的inst/extdata部分)。请阅读“数据文件的存储”一节。
当从某个资源下载时ExperimentHub
相关的数据实验包被加载到工作区中,使手册页和小插图易于使用。由于文档在理解这些精心策划的资源方面发挥着重要作用,请花时间开发清晰的手册页和详细的小插图。这些文件为用户提供了必要的背景知识,并指导适当地使用资源。
下面是包装组织的概要。除非另有说明,列出的文件是必需的。
本月/ extdata /
metadata.csv
:该文件包含元数据,格式为每一行待添加资源的元数据ExperimentHub
数据库。该文件应该由inst/scripts/make-metadata中的代码生成。R,最后的数据是用write.csv(…row.names = FALSE)
.中指定所需的列名和数据类型ExperimentHubData: makeExperimentHubMetadata
看到了吗?ExperimentHubData: makeExperimentHubMetadata
获取详细信息。
可以找到一个示例数据实验包metadata.csv文件在这里
本月/脚本/
使数据。R
:描述创建数据对象的步骤的脚本。这包括原始数据是从哪里下载的,预处理,以及最终R对象是如何创建的。包括对在。之外执行的任何步骤的描述R
使用第三方软件。鼓励使用序列化数据对象save ()
在文件名上使用.rda扩展名,但不是严格必要的。如果以另一种格式提供数据,则可能需要实现适当的加载方法。请告知何时伸出“上传数据到S3”。
make-metadata。R
:一个脚本,使metadata.csv文件位于包的inst/extdata。看到了吗?ExperimentHubData: makeExperimentHubMetadata
获取预期字段和数据类型的描述。ExperimentHubData: makeExperimentHubMetadata ()
可用于在提交包之前验证metadata.csv文件。
小插曲/
R /
打鼾声。R
:可选的。您可以包括.onLoad ()
在zzz中发挥作用。Rfile that exports each resource name (i.e., title) into a function. This allows the data to be loaded by name, e.g.,resouce123 ()
.
. onload <- function(libname, pkgname) {fl <-系统。file("extdata", "metadata.csv", package=pkgname) Title <- read.csv(fl, stringsAsFactors=FALSE)$Title createHubAccessors(pkgname, titles)}
ExperimentHub: createHubAccessors ()
而且ExperimentHub::: .hubAccessorFactory ()
提供内部细节。以资源命名的函数只有一个“元数据”参数。当metadata=TRUE时,元数据被加载(相当于ExperimentHub对象上的单括号方法),当FALSE时,整个资源被加载(相当于双括号方法)。
R / *。R
:可选的。增强数据探索的函数。
人/
包手册页:包手册页作为一个着陆点,应该简要描述与包相关的所有资源。在包手册页或单独的手册页上,每个资源标题都应该有一个条目。
资源手册页:资源可以被记录在同一页上,按公共类型分组,或者有自己的专用手册页。
记录如何加载数据:数据可以通过标准的ExperimentHub接口访问,使用单括号和双括号方法,例如:
library(ExperimentHub) eh <- ExperimentHub() myfiles <- query(eh, "PACKAGENAME") myfiles[[1]] ##加载列表中的第一个资源myfiles[["EH123"]] ##加载eh id
如果一个.onLoad ()
函数用于将每个资源导出为函数,并记录加载方法,例如,
resourceA(metadata = FALSE) ##数据加载resourceA(metadata = TRUE) ##元数据显示
描述
/名称空间
该包应该依赖于并完全导入ExperimentHub。如果使用建议的.onLoad ()
函数,在DESCRIPTION文件中导入utils包,并有选择地在NAMESPACE中importFrom(utils, read.csv)。
方法鼓励包作者使用ExperimentHub: listResources ()
而且ExperimentHub: loadResource ()
功能在他们的手册页和小插图。这些帮助程序的设计是为了方便在特定的包中而不是在所有的ExperimentHub中发现数据。
biocViews应该包含来自的术语ExperimentData也应该包含这个词ExperimentHub
.
数据不是软件包的正式组成部分,它们分别存储在一个公共可访问的托管站点中,或者由Bioconductor存储在AWS S3存储桶中。作者应阅读以下“数据文件的存储”一节。
当您对make-metadata中资源的表示感到满意时。R(生成metadata.csv)Bioconductor
团队成员将向生产数据库添加元数据。通过在包上运行ExperimentHubData:::makeExperimentHubMetadata()来确认inst/exdata/metadata.csv中的数据是有效的。请说明和警告或错误。
一旦数据在AWS S3或公共站点中,并将元数据添加到生产数据库中,就可以完成手册页和小插图。当包通过R CMD构建并检查时,就可以提交到包追踪进行审核。该包应该在没有任何现在远程定位的数据的情况下提交;这保持包轻重量和最小的尺寸,同时仍然提供访问关键的大数据文件现在存储远程如果数据文件被添加到github存储库,请参阅删除大数据文件和清洁git树删除大文件,减少包的大小。
很多时候,这些数据包是作为软件包的补充而创建的。提交有一个流程同一问题下多包.
数据新版本的元数据可以在可用时添加到相同的包中。
新版本的标题必须是唯一的,并且不能与ExperimentHub中当前任何资源的标题匹配。好的做法是在标题中包含版本和/或基因组构建。
使数据可用:可以在公共站点上访问,也可以参阅“将数据上载到S3”部分。
更新make-metadata。Rwith the new metadata information
生成一个新的metadata.csv文件。这个包应该包含ExperimentHub中所有版本数据的元数据,所以旧文件应该保留。在添加新版本时,以版本命名编写一个新的csv文件可能会有所帮助,例如metadata_v84.csv, metadata_85.csv等。
Bump包版本并提交到git
通知hubs@bioconductor.org更新已经准备好,团队成员将向生产数据库添加新的元数据;在元数据添加到数据库之前,新的资源在ExperimentHub中是不可见的。
错误修复可能涉及对元数据、数据资源或两者的更改。
替换资源必须具有与原始资源相同的名称,并且位于相同的位置(路径)
通知hubs@bioconductor.org您想要替换数据并使文件可用:参见“上传数据到S3”部分。
可以为新资源添加新的元数据记录,但不鼓励修改现有记录。记录修改只会在错误修复的情况下进行。
通知hubs@bioconductor.org你想要改变元数据
更新make-metadata。Rwith modified information and regenerate the metadata.csv file if necessary
碰撞包版本并提交到git
删除资源时应该谨慎。其目的是通过提供稳定的数据快照,使ExperimentHub成为一个“可重复的”资源。在Bioconductor版本x.y.z中提供的数据应该适用于所有大于x.y.z的版本。不幸的是,这并不总是可能的。如果您发现有必要从ExperimentHub中删除数据,请联系hubs@bioconductor.org或maintainer@bioconductor.org寻求帮助。
当一个资源从ExperimentHub中删除时,元数据中的“status”字段将被修改,以解释它们不再可用的原因。一旦这个状态被改变ExperimentHub ()
构造函数将不在可用id中列出资源。尝试使用'[[]'和EH id提取资源将返回一个错误和状态消息。这个函数getInfoOnIds
将显示任何资源的元数据信息,包括仍在数据库中但不再可用的资源。
数据不应该包含在包中。这使得包的重量轻,用户可以快速安装。这允许用户在不下载大型数据文件的情况下研究函数和文档,只在必要时进行下载。存储数据有两种选择:Bioconductor AWS S3存储桶或将数据托管在公共可访问的站点上。请参阅下面的信息,并选择最适合您的情况的选项。
数据可以通过集线器从任何可公开访问的站点访问。创建的metadata.csv文件[s]需要列Location_Prefix
来指示托管的站点。在下面元数据列/字段的描述中可以看到更多信息,但是如果数据文件的链接是ftp://mylocalserver/singlecellExperiments/dataSet1.Rds
的示例分解Location_Prefix
而且RDataPath
对于metadata.csv文件中的这一项,将为ftp://mylocalserver/
为Location_Prefix
而且singlecellExperiments / dataSet1。Rds
为RDataPath
.
而不是通过dropbox, ftp等提供数据文件,我们将授予临时访问S3桶,你可以上传你的数据。请电子邮件hubs@bioconductor.org为访问。
您将被授予对“AnnotationContributor”用户的访问权。确保AWS CLI
安装在您的机器上。参见安装说明AWS CLI
在这里.一旦您申请访问,您将通过电子邮件收到一组密钥。有两个选项可以为AnnotationContributor设置概要文件
.aws /配置
文件包含以下更新相应的密钥:[profile AnnotationContributor] output = text region = us-east-1 aws_access_key_id = **** aws_secret_access_key = ****
.aws /配置
运行以下命令,从上面输入适当的信息配置注释贡献者
配置完成后,您应该能够使用上传资源
#上传完整目录使用递归:aws——profile AnnotationContributor s3 cp test_dir s3://annotation-contributor/test_dir——递归——acl public-read #上传单个文件aws——profile AnnotationContributor s3 cp test_file.txt s3://annotation-contributor/test_file.txt——acl public-read
请以适当的目录结构上传数据,必要时包括子目录(即顶部目录必须是软件包名称,然后如果适用,版本子目录,…)请不要忘记使用国旗——acl公有可读
;这允许对数据文件进行读访问。
上传完成后,发送电子邮件hubs@bioconductor.org继续这个过程。要正式添加数据,需要上传数据,并需要在github存储库中创建metadata.csv文件。
验证记录元数据的最佳方法是读取inst/extdata/metadata.csvExperimentHubData: makeExperimentHubMetadata ()
.如果这是成功的,元数据就准备好了。
如上所述,在将数据添加到数据库之前,需要创建metadata.csv文件(或多个metadata.csv文件)。为了确保正确的格式,应该运行AnnotationHubData: makeAnnotationHubMetadata
在包上添加任何/所有元数据文件,并解决发生的任何错误。上传到S3的每个对象都应该在元数据文件中有一个条目。简要地描述所需的元数据列:
csv文件中的任何其他列都将被忽略,但可以包括在内以供内部引用。
更多关于Location_Prefix和RDataPath。这两个字段组成了下载数据文件的完整文件路径url。如果使用Bioconductor AWS S3桶,Location_Prefix不应该包含在元数据文件[s]中,因为该字段将自动填充。RDataPath将是上传到S3的目录结构。如果上传了一个目录MyAnnotation /
,该目录有一个子目录v1 /
包含两个文件counts.rds
而且coldata.rds
,您的元数据文件将包含两行,RDataPaths将为MyAnnotation / v1 / counts.rds
而且MyAnnotation / v1 / coldata.rds
.如果您将数据托管在一个公共可访问的站点上,则必须包含一个基本url作为Location_Prefix
.如果你的数据文件在ftp://myinstiututeserver/biostats/project2/counts.rds
,您的元数据文件将有一行和Location_Prefix
将ftp://myinstiututeserver/
和RDataPath
将生物抑制剂/ project2 / counts.rds
.
这是一个虚拟的例子,但希望它能给你一个格式的概念。假设我有一个myExperimentPackage包,我上传了两个文件,一个是保存为.rda的表达式数据summarizeexperiments,另一个是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.anjoumacpherson.com/packages/myExperimentPackage | Bioconductor维护者maintainer@bioconductor.org | SummarizedExperiment | Rda | myExperimentPackage / SEobject.rda |
模拟数据库 | 包含基因映射的模拟数据库 | 3.9 | hg19 | 模拟 | //www.anjoumacpherson.com/packages/myExperimentPackage | v2 | 家智人 | 9606 | NA | //www.anjoumacpherson.com/packages/myExperimentPackage | Bioconductor维护者maintainer@bioconductor.org | SQLiteConnection | SQLiteFile | myExperimentPackage / mydatabase.sqlite |