用http协议在rcsb.org自动下载pdb文件

2023-10-09 12:50

本文主要是介绍用http协议在rcsb.org自动下载pdb文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请参考rcsb官方提供文档接口
由于python提供接口简单,所以选择了它

程序流程

1.从thefile.txt 文件中读取蛋白序列
2.然后从rcsb 查询,获取查询XML数据
3.解析XML文件
4.下载pdb文件

python代码

可以用python name.py 直接运行.

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import urllib
import urllib2
import xml.saxglobal_url = "https://files.rcsb.org/download/"class PdbHandler( xml.sax.ContentHandler ):def __init__(self):self.CurrentData = ""self.BlastOutput_program = ""self.BlastOutput_version = ""self.BlastOutput_db = ""self.BlastOutput_query_def = ""self.BlastOutput_query_len = ""self.blastOutput_iterations = ""self.blastOutput_query_len = 0self.BlastOutput_param = ""self.Parameters_matrix = ""self.Parameters_expect = ""self.Hit_def = ""       # 元素开始事件处理def startElement(self, tag, attributes):self.CurrentData = tagif tag == "BlastOutput":print "-------start---BlastOutput--"# 元素结束事件处理def endElement(self, tag):if self.CurrentData == "BlastOutput_program":print "BlastOutput_program:", self.BlastOutput_programelif self.CurrentData == "Hit_def":print "file name :", self.Hit_def[0:4] download_pdb(self.Hit_def[0:4])# 内容事件处理def characters(self, content):if self.CurrentData == "BlastOutput_program":self.BlastOutput_program = contentelif self.CurrentData == "BlastOutput_version":self.BlastOutput_version = contentelif self.CurrentData == "BlastOutput_db":self.BlastOutput_db = contentelif self.CurrentData == "BlastOutput_query-ID":self.BlastOutput_query_ID = contentelif self.CurrentData == "BlastOutput_query-def":self.BlastOutput_query_def = contentelif self.CurrentData == "BlastOutput_query-len":self.BlastOutput_query_len = contentelif self.CurrentData == "Parameters_matrix":self.Parameters_matrix = contentelif self.CurrentData == "Hit_def":self.Hit_def = contentdef download_pdb(file_name):try:f = urllib2.urlopen(global_url + file_name + ".pdb") data = f.read()with open("pdb/" + file_name + ".pdb", "wb") as code:     code.write(data)code.close()except Exception as e:print global_url + file_name + ".pdb"def setup_connect():test_data = {'sequence':'TDMLTLTRYVMEKGRQAKGTGELTQLLNSMLTAIKAISSAVRKAGLAHLYGIAGSVNVDQ', 'eCutOff':'10.0', 'matrix':'BLOSUM62', 'outputFormat':'XML'}#test_data['sequence'] = seqtest_data_urlencode = urllib.urlencode(test_data)requrl = "https://www.rcsb.org/pdb/rest/postBLAST"req = urllib2.Request(url = requrl,data =test_data_urlencode)print reqres_data = urllib2.urlopen(req)print res_datares = res_data.read()return resdef save_to_file(file_name, contents):try:fh = open(file_name, 'w')fh.write(contents)fh.close()      except Exception as e:print("save to file error!")def read_file():'''file_object = open('thefile.txt')try:#:  for line in file_object:#  process linefinally:file_object.close()'''if ( __name__ == "__main__"):print '__main__'# 创建一个 XMLReaderparser = xml.sax.make_parser()# turn off namepsacesparser.setFeature(xml.sax.handler.feature_namespaces, 0)# 重写 ContextHandlerHandler = PdbHandler()parser.setContentHandler( Handler )parser.parse("output1.xml")'''xml_data = setup_connect()save_to_file('output1.xml', xml_data)file_object = open('thefile.txt')try:while 1:line = file_object.readline()if not line:breakline = line.split()print( line )print( line[1] )xml_data = setup_connect(line[1])
#   save_to_file('output.txt', data)parser = xml.sax.parseString(xml_data, PdbHandler())#parser.setFeature(xml.sax.handler.feature_namespaces, 0)#Handler = #parser.setContentHandler( Handler )parser.parse()finally:file_object.close()
'''

下面是thefile.txt文件格式,字段之间用空格分隔.

TDMLTLTRYVMEKGRQAKGTGELTQLLNSMLTAIKAISSAVRKAGLAHLYGIAGSVNVDQ  1

下面是我的运行结果,下载了很多PDB文件.
这里写图片描述

这篇关于用http协议在rcsb.org自动下载pdb文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/172969

相关文章

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片