您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中通过HTTP与UniProt交谈?

5b51 2022/1/14 8:20:58 python 字数 2721 阅读 487 来源 www.jb51.cc/python

我试图从UniProt获得一些结果,这是一个蛋白质数据库(细节并不重要).我正在尝试使用一种从一种ID转换为另一种ID的脚本.我能够在浏览器上手动执行此操作,但无法在Python中执行此操作.在http://www.uniprot.org/faq/28中有一些示例脚本.我尝试了Perl,它似乎工作,所以问题是我的Python尝试. (工作)脚本是:## to

概述

我试图从UniProt获得一些结果,这是一个蛋白质数据库(细节并不重要).我正在尝试使用一种从一种ID转换为另一种ID的脚本.我能够在浏览器上手动执行此操作,但无法在Python中执行此操作.

http://www.uniprot.org/faq/28中有一些示例脚本.我尝试了Perl,它似乎工作,所以问题是我的Python尝试. (工作)脚本是:

## tool_example.pl ##
use strict;
use warnings;
use LWP::UserAgent;

my $base = 'http://www.uniprot.org';
my $tool = 'mapping';
my $params = {
  from => 'ACC',to => 'P_REFSEQ_AC',format => 'tab',query => 'P13368 P20806 Q9UM73 P97793 Q17192'
};

my $agent = LWP::UserAgent->new;
push @{$agent->requests_redirectable},'POST';
print STDERR "Submitting...\n";
my $response = $agent->post("$base/$tool/",$params);

while (my $wait = $response->header('Retry-After')) {
  print STDERR "Waiting ($wait)...\n";
  sleep $wait;
  print STDERR "Checking...\n";
  $response = $agent->get($response->base);
}

$response->is_success ?
  print $response->content :
  die 'Failed,got ' . $response->status_line . 
    ' for ' . $response->request->uri . "\n";

我的问题是:

1)你会如何在Python中做到这一点?

2)我能够大规模“缩放”那个(即在查询字段中使用大量条目)吗?

这可以使用python的urllibs完成:

import urllib,urllib2
import time
import sys

query = ' '.join(sys.argv)   

# encode params as a list of 2-tuples
params = ( ('from','ACC'),('to','P_REFSEQ_AC'),('format','tab'),('query',query))
# url encode them
data = urllib.urlencode(params)    
url = 'http://www.uniprot.org/mapping/'

# fetch the data
try:
    foo = urllib2.urlopen(url,data)
except urllib2.HttpError,e:
    if e.code == 503:
        # blah blah get the value of the header...
        wait_time = int(e.hdrs.get('Retry-after',0))
        print 'Sleeping %i seconds...' % (wait_time,)
        time.sleep(wait_time)
        foo = urllib2.urlopen(url,data)


# foo is a file-like object,do with it what you will.
foo.read()

总结

以上是编程之家为你收集整理的如何在Python中通过HTTP与UniProt交谈?全部内容,希望文章能够帮你解决如何在Python中通过HTTP与UniProt交谈?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶