【问题标题】:How to query uniprot.org to get all Uniprot IDs for a given species?如何查询 uniprot.org 以获取给定物种的所有 Uniprot ID?
【发布时间】:2014-05-30 20:18:55
【问题描述】:

我正在寻找一种程序化方式来获取给定物种的所有 Uniprot id (Swiss-Prot + TrEMBL)(例如,所有以 _MOUSE 结尾的 Uniprot id)。

一种方法是解压缩并解析uniprot的流

此类文件仅适用于 Uniprot DB 中代表的所有物种的一小部分。因此,这个解决方案不是一个通用的解决方案。

我的问题是:是否有一种通用的、希望更有效的方法来做到这一点? (我所说的“更高效”基本上是指它不需要这样的解压缩和解析。)

基本上我想知道 uniprot.org 是否支持基于 url 的查询,我可以在其中指定一些物种标识符(例如 MOUSE10090),也许还有一些字段名称,如 UniprotID,以及谁的响应将是该物种的所有 Uniprot ID 的列表。

【问题讨论】:

    标签: bioinformatics


    【解决方案1】:

    我还没有查看您正在使用的 idmapping 文件。但我使用以下文件来获取给定物种的 ID:ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/docs/speindex.txt

    然后我像这样解析它:

    #!/usr/bin/env perl
    use strict;
    use warnings;
    
    my $spec = shift;
    my $re = quotemeta $spec;
    
    my @ids =();
    while (<>) {
      if (/$re/../^$/) {
        chomp;
        next if ($_ eq $spec);  # skip species line
        s/^\s+//;               # remove trailing spaces
        push @ids, split(/, ?/, $_);
      }
    }
    
    print $_."\n" foreach @ids;
    

    对“Mus musculus (Mouse)”使用命令行:

    script.pl "Mus musculus (Mouse)" speindex.txt

    我希望这会有所帮助...保罗

    【讨论】:

      【解决方案2】:

      您可以使用 uniprot.org 提供的其余 API 执行此操作,请参阅 faq on retrieving entries via queries

      大多数情况下,您希望使用 NCBI/UniProt 分类标识符而不是物种名称。例如10090 而不是“Mus musculus”,使用 ids 代替字符串更有可能得到正确的结果。

      随着越来越多的测序项目,这些天来物种概念变得有点有趣,所以请注意你得到了什么以及为什么。

      【讨论】:

        【解决方案3】:

        如果您不想使用平面文件,可以使用 BioServices Python 包,它将从 UniProt 网站检索信息:

        from bioservices import UniProt
        u = UniProt()
        results = u.search("organism:10090+and+reviewed:yes", columns="id,entry name", limit=2)
        print(results)   
        

        结果变量是您需要解析的字符串。它包含 uniprot 条目和 uniprot 条目名称。上一个命令仅检索 2 个条目,但如果您删除参数 limit=2,您将获得所有条目。

        例如,要获取所有条目名称,您可以键入:

        results = u.search("organism:10090+and+reviewed:yes", columns="id,entry name", limit=2)
        entries = [x.split()[1] for x in res.strip().split("\n")[1:]]
        

        下载 17000 个条目需要几秒钟的时间。如果删除“reviewed:yes”,大约需要 30 秒到一分钟。

        我希望这会有所帮助。

        要使用 python 2.7 安装,只需键入:

        pip install bioservices
        

        【讨论】:

        • 在一些漂亮的 Python 代码中很好地使用了 UniProt 休息服务。
        猜你喜欢
        • 1970-01-01
        • 2021-06-07
        • 2021-02-12
        • 2021-11-11
        • 1970-01-01
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 2019-02-18
        相关资源
        最近更新 更多