我是一位在Python中具有一点编程经验的生物学家。我的一个研究方法涉及使用此数据库分析大型基因列表:https://david.ncifcrf.gov/ 任何人都可以告知我是否可以对输出进行关键字搜索并返回与关键字相关的基因名称?这是用于看起来如此的“表格”输出:https://david.ncifcrf.gov/annotationReport.jsp?annot=59,12,87,88,30,38,46,3,5,55,53,70,79¤tList=0 还有后端和api选项。 非常感谢所有的见解和建议。关于使用Python自动化数据挖掘的建议
回答
如果有一个API为您提供所有数据,则可以自动化几乎所有与之相关的数据。 API是REST或SOAP,所以首先你需要弄清楚你需要什么。
如果API是基于REST:
import urllib2, json
url = "https://mysuperapiurl.com/api-ws/api/port/"
u = 'APIUsername'
p = 'APIPassword'
def encodeUserData(user, password):
return "Basic " + (user + ":" + password).encode("base64").rstrip()
req = urllib2.Request(url)
req.add_header('Accept', 'application/json')
req.add_header("Content-type", "application/x-www-form-urlencoded")
req.add_header('Authorization', encodeUserData(u, p))
res = urllib2.urlopen(req)
j = json.load(res) # Here is all the data from the API
json_str= json.dumps(j) # this is the same as above as string
如果API是SOAP,它变得有点困难。我推荐的是zeep。如果因为您的服务器为2.6或因为有多人正在处理它而无法执行此操作,请使用suds
。
用肥皂水API调用看起来是这样的:
import logging, time, requests, re, suds_requests
from datetime import timedelta,date,datetime,tzinfo
from requests.auth import HTTPBasicAuth
from suds.client import Client
from suds.wsse import *
from suds import null
from cStringIO import StringIO
from bs4 import BeautifulSoup as Soup
log_stream = StringIO()
logging.basicConfig(stream=log_stream, level=logging.INFO)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
WSDL_URL = 'http://213.166.38.97:8080/SRIManagementWS/services/SRIManagementSOAP?wsdl'
username='username'
password='password'
session = requests.session()
session.auth=(username, password)
def addSecurityHeader(client,username,password):
security=Security()
userNameToken=UsernameToken(username,password)
security.tokens.append(userNameToken)
client.set_options(wsse=security)
addSecurityHeader(client,username,password)
arg1 = "argument_1"
arg2 = "argument_2"
try:
client.service.GetServiceById(arg1, arg2)
except TypeNotFound as e:
print e
logresults = log_stream.getvalue()
,您会收到XML的回报,所以我用beautifulsoup
美化结果:
soup = Soup(logresults)
print soup.prettify()
确定这样的API连接部分被覆盖,你在哪里存储你的数据,你在哪里迭代这些数据来执行关键字搜索?在你的数据库中。我建议MySQLdb
。设置你的表,并考虑你要存储在哪个列中的什么信息(你从API中收集的信息)。
def dbconnect():
try:
db = MySQLdb.connect(
host='localhost',
user='root',
passwd='password',
db='mysuperdb'
)
except Exception as e:
sys.exit("Can't connect to database")
return db
def getSQL():
db = dbconnect()
cursor = db.cursor()
sql = "select * from yoursupertable"
dta = cursor.execute(sql)
results = cursor.fetchall()
return results
def dataResult():
results = getSQL()
for column in results:
id = (column[1])
print dataResult()
因此,这是您设置的关键字(也可以通过另一个SQL这样做),你从一个列表,字典,文本文件或硬编码的关键字数据库中提取的结果进行比较,并确定做什么,如果他们匹配等:) :)
谢谢你的帮助。我会让你知道它是怎么回事。 – AnnaD
如果这个答案对你有帮助,请考虑投票/接受答案。 –
- 1. python数据挖掘
- 2. 使用Python进行数据挖掘
- 3. 关于使用twitter数据进行数据挖掘
- 4. 关于文本挖掘的建议/帮助
- 5. 用于MPI的数据挖掘库
- 6. 热门项目建议 - 时间敏感数据 - 数据挖掘
- 7. 用于挖掘自动化测试结果的CouchDB视图
- 8. HTML数据挖掘
- 9. Kissmetrics数据挖掘
- 10. 建议这种情况的数据挖掘算法
- 11. 挖掘Twitter数据以查找关于用户的见解?
- 12. 用于核心外计算/数据挖掘的Python工具
- 13. 数据挖掘相关论坛
- 14. 关系数据挖掘,而不ILP
- 15. hadoop的数据挖掘库
- 16. 无法挖掘按钮 - 使用UI自动化
- 17. 数据挖掘:基于若干意见
- 18. 使用Sql Server进行数据挖掘
- 19. 使用Neo4j进行数据挖掘
- 20. 在数据挖掘中构建DecisionTree
- 21. 橙色数据挖掘版本3.3(Python)的关联规则
- 22. 的Oracle SQL导航数据挖掘文本挖掘
- 23. 关于一些数据挖掘算法的问题
- 24. 关于数据挖掘的基本查询
- 25. 数据挖掘 - K近邻
- 26. 休眠4数据挖掘
- 27. JSON到R数据挖掘
- 28. 数据挖掘字符串
- 29. 数据挖掘情况
- 30. R数据挖掘语法
如果有一个开放的API,你应该尝试在调查网络抓取之前使用它。另外https://david.ncifcrf.gov/annotationReport.jsp?annot=59,12,87,88,30,38,46,3,5,55,53,70,79¤tList=0不适用于我。 –
API限制是否满足您的需求?少于400个基因,将网址输入限制为2048个字符,每天200个请求?至于关于您提供的关键字搜索链接的öhrhr问题似乎并不奏效(会话已过期) –
仅供参考,您提供的第二个链接已损坏。 – Petar