#xml-parser #user #csv #uni-parc #xml-data #gz #uniprot

bin+lib uniparc_xml_parser

将来自 Uniprot 网站的 UniParc XML 文件解析成 CSV 文件的脚本

3 个不稳定版本

使用旧的 Rust 2015

0.2.1 2021 年 2 月 9 日
0.2.0 2021 年 2 月 9 日
0.1.0 2016 年 12 月 31 日

#1275数据库接口

MIT 许可证

1MB
806

UniParc XML 解析器

docs conda pipeline status

简介

将来自 UniProt 网站 下载的 UniParc XML 文件 (uniparc_all.xml.gz) 解析成可以加载到关系型数据库的 CSV 文件。

用法

可以将未压缩的 XML 数据通过管道输入到 uniparc_xml_parser 中,以

$ curl -sS ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/uniparc/uniparc_all.xml.gz \
    | zcat \
    | uniparc_xml_parser

输出是一组 CSV (或更具体地说,TSV) 文件

$ ls
-rw-r--r-- 1 user group 174G Feb  9 13:52 xref.tsv
-rw-r--r-- 1 user group 149G Feb  9 13:52 domain.tsv
-rw-r--r-- 1 user group 138G Feb  9 13:52 uniparc.tsv
-rw-r--r-- 1 user group 107G Feb  9 13:52 protein_name.tsv
-rw-r--r-- 1 user group  99G Feb  9 13:52 ncbi_taxonomy_id.tsv
-rw-r--r-- 1 user group  74G Feb  9 20:13 uniparc.parquet
-rw-r--r-- 1 user group  64G Feb  9 13:52 gene_name.tsv
-rw-r--r-- 1 user group  39G Feb  9 13:52 component.tsv
-rw-r--r-- 1 user group  32G Feb  9 13:52 proteome_id.tsv
-rw-r--r-- 1 user group  15G Feb  9 13:52 ncbi_gi.tsv
-rw-r--r-- 1 user group  21M Feb  9 13:52 pdb_chain.tsv
-rw-r--r-- 1 user group  12M Feb  9 13:52 uniprot_kb_accession.tsv
-rw-r--r-- 1 user group 656K Feb  9 04:04 uniprot_kb_accession.parquet

表架构

生成的 CSV 文件符合以下架构

安装

二进制文件

Linux 二进制文件可在以下网址获取: https://gitlab.com/ostrokach/uniparc_xml_parser/-/packages

Cargo

使用 cargo 编译和安装 uniparc_xml_parser 以适用于您的目标平台

cargo install uniparc_xml_parser

Conda

使用 conda 安装预编译的二进制文件

conda install -c ostrokach-forge uniparc_xml_parser

输出文件

Parquet

包含处理数据的 Parquet 文件可在以下 URL 获取,并且每月更新一次: http://uniparc.data.proteinsolver.org/

Google BigQuery

也可以直接使用 Google BigQuery 查询数据: https://console.cloud.google.com/bigquery?project=ostrokach-data&p=ostrokach-data&page=dataset&d=uniparc

基准测试

解析 10,000 个 XML 条目大约需要 30 秒(该过程主要受 I/O 限制)

$ time bash -c "zcat uniparc_top_10k.xml.gz | uniparc_xml_parser >/dev/null"

real    0m33.925s
user    0m36.800s
sys     0m1.892s

实际的 uniparc_all.xml.gz 文件大约有 373,914,570 个元素。

路线图

  • 在整个过程中始终保持字节。

常见问题解答 (FAQ)

为什么不将 uniparc_all.xml.gz 分割成多个小文件并并行处理它们呢?

  • 分割文件需要读取整个文件。如果我们无论如何都要读取整个文件,为什么不边读边解析它呢?
  • 拥有一个解析 uniparc_all.xml.gz 的单一过程,使得创建增量唯一索引列(例如 xref.xref_id)更加容易。

常用查询 (FUQ)

待办事项

依赖项

~9.5MB
~240K SLoC