跳转到主要内容

将数据上传到欧洲核苷酸档案的命令行界面

项目描述

Python application BioConda version Pipy version European Galaxy server DOI

ENA上传工具

此命令行工具(CLI)允许您使用表格文件或此模板存储库中找到的Excel电子表格之一,轻松提交实验数据和相应的元数据到欧洲核苷酸档案(ENA)。可以提交的元数据包括研究、样本、运行和实验信息,因此您可以使用此工具进行程序化提交ENA所需的所有内容,而无需登录到Webin界面。这还包括使用ENA清单进行客户端验证并发布ENA对象。此命令行工具还作为Galaxy工具提供,可以添加到您的Galaxy实例,或者您可以使用现有的Galaxy实例之一,例如usegalaxy.euusegalaxy.be

概述

元数据应单独提供在包含与以下ENA对象类似信息的表格或文件中

  • 研究
  • 样本
  • 实验
  • 运行

您可以设置工具执行以下操作

  • 添加:将对象添加到存档
  • 修改:修改存档中的对象
  • 取消:取消私有对象及其相关对象
  • 发布:立即发布私有对象为公开

成功提交后,将生成新的tsv表格,其中包含ENA访问号以及提交收据。

工具依赖项

  • python 3.7+,包括以下包
    • Genshi
    • lxml
    • pandas
    • requests
    • pyyaml
    • openpyxl
    • jsonschema

安装

pip install ena-upload-cli

用法

Minimal:  ena-upoad-cli --action {add,modify,cancel,release} --center CENTER_NAME  --secret SECRET

All supported arguments:

  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --action {add,modify,cancel,release}
                         add: add an object to the archive
                         modify: modify an object in the archive
                         cancel: cancel a private object and its dependent objects
                         release: release a private object immediately to public
  --study STUDY         table of STUDY object
  --sample SAMPLE       table of SAMPLE object
  --experiment EXPERIMENT
                        table of EXPERIMENT object
  --run RUN             table of RUN object
  --data [FILE ...]     data for submission
  --center CENTER_NAME  specific to your Webin account
  --checklist CHECKLIST
                        specify the sample checklist with following pattern: ERC0000XX, Default: ERC000011
  --xlsx XLSX           filled in excel template with metadata
  --isa_json ISA_JSON   BETA: ISA json describing describing the ENA objects
  --isa_assay_stream ISA_ASSAY_STREAM
                        BETA: specify the assay stream(s) that holds the ENA information, this can be a list of assay streams
  --auto_action         BETA: detect automatically which action (add or modify) to apply when the action column is not given
  --tool TOOL_NAME      specify the name of the tool this submission is done with. Default: ena-upload-cli
  --tool_version TOOL_VERSION
                        specify the version of the tool this submission is done with
  --no_data_upload      indicate if no upload should be performed and you like to submit a RUN object (e.g. if uploaded was done separately).
  --draft               indicate if no submission should be performed
  --secret SECRET       .secret.yml file containing the password and Webin ID of your ENA account
  -d, --dev             flag to use the dev/sandbox endpoint of ENA

必填参数:--action, --center 和 --secret。

ENA Webin

如果您还没有,可以在这里创建一个Webin。Webin ID使用完整的用户名,例如:Webin-XXXXX。访问Webin在线检查您的提交或访问dev Webin检查测试提交。

.secret.yml文件

为了避免通过终端历史记录暴露您的凭据,建议使用包含您的密码和用户名关键词的.secret.yml文件。示例文件位于此目录的根目录中。

ENA样本清单

您可以使用--checklist参数指定ENA样本清单。默认情况下,使用ENA默认样本清单,支持样本所需的最少信息(ERC000011)。支持的清单列表在我们的模板存储库中列出。

固定样本列

命令行工具将自动根据分类学ID获取正确的学名,或根据学名获取分类学ID。两者都可以提供,不会进行覆盖。

  • 必填:别名标题样本描述收集日期地理位置(国家/海洋)以及学名taxon_id(首选)
  • 可选:普通名称样本描述
别名 标题 taxon_id 学名 普通名称 样本描述 收集日期 地理位置(国家/海洋)
sample_alias_4 sample_title_2 2697049 严重急性呼吸综合征冠状病毒2 covid-19 sample_description_1 2020-10-11 阿根廷
sample_alias_5 sample_title_3 2697049 严重急性呼吸综合征冠状病毒2 covid-19 sample_description_2 2008-01-24 比利时

病毒提交

如果您想提交病毒样本,可以在清单参数中添加ERC000033以使用ENA病毒病原体清单。请查看我们的病毒示例命令以进行演示。请使用我们模板存储库中的ENA病毒病原体清单以了解受控词汇字段中允许/可能的内容。

ENA研究、实验和运行表

请查看您的清单模板,以了解哪些属性是研究、实验和运行ENA对象必填的。

开发实例

默认情况下,提交将通过以下URL发送到ENA:https://www.ebi.ac.uk/ena/submit/drop-box/submit/?auth=ENA

如果您想使用ENA的沙盒开发实例进行测试提交,请使用--dev标志:https://wwwdev.ebi.ac.uk/ena/submit/drop-box/submit/?auth=ENA。TEST提交将在24小时内被丢弃。

向ENA提交所选行

将对象的部分选择提交给ENA有两种方式。这对于重复提交尤其有用,特别是当它们属于同一研究时。

  • 手动:您可以为每个包含您想要在此提交中应用的动作的表格/工作表添加一个可选的状态列。如果您选择仅将前两个样本添加到ENA,请在命令中指定--action add作为参数,并将add值添加到您想要提交的行的状态列中,如下所示。同样适用于动作modifyreleasecancel
  • 自动(BETA):使用--auto_action,可以自动检测对象(使用别名)是否已存在于ENA中,并将指定的动作(--action参数)相应地填充。在实践中,这意味着如果用户选择添加对象,而我们已经使用其别名找到了该对象已存在,则不会添加该对象。另一方面,如果命令用于修改对象,我们希望在ENA上已存在的对象上单独应用此操作。检测仅适用于已在网站上通过搜索功能(开发版和实时网站)发布并可通过搜索功能找到的ENA对象。如果工具无法正确检测您的ENA对象的的存在,我们建议使用上述更稳健的手动方法。

例如,在示例样本修改表格中可以看到修改动作

别名 状态 标题 taxon_id 样本描述
sample_alias_4 modify sample_title_1 2697049 sample_description_1
sample_alias_5 sample_title_2 2697049 sample_description_2

重要提示:如果状态列提供了但未填写,或填写了与--action参数中不同的动作,则不会提交任何行!要么省略该列,要么将每行您想要提交的正确动作添加到每行中。

使用Excel模板

我们还支持使用特定的Excel模板,这些模板是为每个样本清单设计的。使用--xlsx命令添加Excel模板文件的路径,该文件已从以下模板存储库填充。

数据文件

支持的数据

  • 读取数据
  • 基因组组装
  • 转录组组装
  • 模板序列
  • 其他分析

上传到ENA FTP服务器的多数文件都需要压缩。

有关ENA希望如何接收文件的更多信息,请参阅此处

关于数据上传的注意事项:上传的文件在上传后会在ENA服务器上持续存储一段时间。因此,如果在多次测试提交中,可以使用--no_data_upload在后续提交中跳过数据上传。这也允许单独上传(大型)数据集,例如使用aspera。对于--no_data_upload参数,如果提交的RUN对象在file_checksum列中没有MD5校验和,则需要使用--data提供数据文件。

发布和取消提交

如果您想要发布或取消数据,可以在命令行的--action参数中使用cancelrelease来做到这一点。需要发布或取消的表格需要包含对应访问号的访问号列。这意味着您首先必须使用add提交您的数据,然后使用包含访问号的更新后的表格,如果您尚未提交数据。

默认情况下,提交后的更新表将在其状态列中具有动作added。如果您想要使用这些动作之一(或者如果您的作用适用于整个表格,请删除状态列),不要忘记将值更改为releasecancel

注意:发布研究将使所有子元素(如runs和experiments)公开。

工具概述

输入:

  • 元数据表格/excel工作表/isa_json
    • 示例在example_table中,以及在此模板存储库的excel表格中
    • (可选) 在 状态 列中定义操作,例如 添加修改取消发布(如果没有给出整个表格,则提交整个表格)
    • 要执行所有对象的批量提交,不同ENA对象中的 别名ID 应该在关联中,其中实验对象中的别名ID将所有对象链接在一起
  • 实验数据
    • example_data 中的示例

输出:

  • 工作目录中的 receipt.xml 文件,包含 ENA 提交的收据
  • 包含更新信息的元数据表,位于输入目录中
    • 更新后的状态:已添加已修改已取消已发布
    • 访问号
    • 提交日期
    • 如果没有给出,则在运行表中包含文件校验和
    • 如果没有给出,则在样本表中包含物种ID或科学名称

测试工具

  • 添加元数据和序列数据

    ena-upload-cli --action add --center 'your_center_name' --study example_tables/ENA_template_studies.tsv --sample example_tables/ENA_template_samples.tsv --experiment example_tables/ENA_template_experiments.tsv --run example_tables/ENA_template_runs.tsv --data example_data/*gz --dev --secret .secret.yml
    
  • 仅添加元数据

    ena-upload-cli --action add --center 'your_center_name' --study example_tables/ENA_template_studies.tsv --sample example_tables/ENA_template_samples.tsv --experiment example_tables/ENA_template_experiments.tsv --run example_tables/ENA_template_runs_md5sums.tsv --dev --secret .secret.yml
    
  • 添加研究

    ena-upload-cli --action add --center 'your_center_name' --study example_tables/ENA_template_studies.tsv --dev --secret .secret.yml
    
  • 修改样本元数据

    ena-upload-cli --action modify --center 'your_center_name' --sample example_tables/ENA_template_samples_modify.tsv --dev --secret .secret.yml
    
  • 病毒数据

    ena-upload-cli --action add --center 'your_center_name' --study example_tables/ENA_template_studies.tsv --sample example_tables/ENA_template_samples_vir.tsv --experiment example_tables/ENA_template_experiments.tsv --run example_tables/ENA_template_runs.tsv --data example_data/*gz --dev --checklist ERC000033 --secret .secret.yml
    
  • 使用 Excel 模板

    ena-upload-cli --action add --center 'your_center_name' --data example_data/*gz --dev --checklist ERC000033 --secret .secret.yml --xlsx example_tables/ENA_excel_example_ERC000033.xlsx 
    
  • 使用 ISA JSON

    ena-upload-cli --action add --center 'your_center_name' --data example_data/*gz --dev --secret .secret.yml --isa_json tests/test_data/simple_test_case_v2.json --isa_assay_stream "Ena stream 1"
    
  • 发布提交

    ena-upload-cli --action release --center'your_center_name' --study example_tables/ENA_template_studies_release.tsv --dev --secret .secret.yml 
    

注意 Windows 用户:Windows 默认不支持在命令行参数中使用通配符展开。因此,应将 --data example_data/*gz 参数替换为包含数据文件列表的参数。对于此示例,请使用

--data example_data/ENA_TEST1.R1.fastq.gz example_data/ENA_TEST2.R1.fastq.gz example_data/ENA_TEST2.R2.fastq.gz

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

ena_upload_cli-0.7.4.tar.gz (129.2 kB 查看哈希值)

上传时间:

构建分发

ena_upload_cli-0.7.4-py3-none-any.whl (196.5 kB 查看哈希值)

上传时间: Python 3

支持者