python调用api接口获取数据_python批量爬取NCBI基因注释并调用谷歌API批量翻译
作者:沙雕学习小组
这里有视频教程:https://www.bilibili.com/video/av87724182
今天想实现这个功能:
差异分析得到了200多个基因(甚至更多)
我要一个一个把基因的summary信息得到,要手动一个一个查可能要查到下个星期,周五就要汇报了啊……!
2
有python怕啥?!不要慌
动手之前先动脑
step1:获取这个基因在NCBI上的summary信息——输入gene.txt得到genesummary.txt
step2:检查输出文件是否有空行,若有删掉输入genesummary.txt得到newsummary.txt
step3:批量翻译——输入newsummary.txt,得到genetrans.txt
step1:获取这个基因在NCBI上的summary信息——输入gene.txt得到genesummary.txt
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Abaofrom Bio import Entrez # pip install biopython
#from translate_api.translate_api import api # pip install translate_api
#from Pytrans import *
import reEntrez.email = "shinningbzw@foxmail.com" # email#这里修改文件路径和文件名,绝对路径
output_file = 'genesummary.txt' # 注意你的输出文件路径:绝对路径
input_file = 'gene.txt'# 输入文件:去重后的基因列表 (将基因列保存为 txt,uniq *.txt>gene_list.txt )gene_list = []
line_c = []
count = len(open(input_file, 'r').readlines())
print("Waiting...")#from Pytrans import *
import requests
from Pytrans import *def google_translate(content):'''google translation'''js = Pytrans()tk = js.getTk(content)if len(content) > 4891:print("too long!!!")returnparam = {'tk': tk, 'q': content}result = requests.get("""http://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2""", params=param)trans = result.json()[0]ret = ''# for i in range(len(trans)):# line = trans[i][0]# if line != None:# ret += trans[i][0]for i in range(len(trans)):line = trans[i][0]if line != None:ret += trans[i][0]return ret#a = google_translate("hello,Input file will be translated, please be patient")
#print(a)# get gene list
for line in open(input_file):if line != "基因":gene_list.append(line)gene_list.remove(gene_list[0])
rm_pattern = re.compile('[.*?]')with open(output_file, 'a+', encoding='utf-8') as f:for line in gene_list:gene = str(line.strip())gene_term = "(" + gene +"[Gene Name]) AND Homo sapiens[Organism]"Entrez.email = "shinningbzw@foxmail.com"handle = Entrez.esearch(db="gene", term=gene_term)gene_id = Entrez.read(handle)['IdList'][0]sum_handle = Entrez.esummary(db="gene", id=gene_id)sum_record = Entrez.read(sum_handle)r_gene_sum = sum_record['DocumentSummarySet']['DocumentSummary'][0]['Summary']gene_sum = rm_pattern.sub('', r_gene_sum)#translation = google_translate(gene_sum)#f.write(gene + "n" + gene_sum + "n" + translation + "n")f.write(gene + "n" + gene_sum + "n" )line_c.append("b")if count % len(line_c) == 0:perc = (len(line_c) / count) * 100print("Completed " + str(int(perc)) + "%")
step2:检查输出文件是否有空行,若有删掉。输入genesummary.txt得到newsummary.txt
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:cici#这里修改你的文件路径,请看清文件名奥~
with open('genesummary.txt', 'r', encoding='utf-8') as fr, open('newsummary.txt', 'w', encoding='utf-8') as fd:for text in fr.readlines():if text.split():fd.write(text)print('输出成功....')
step3:批量翻译
这里先写个函数
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Topshiimport execjsclass Pytrans():def __init__(self):self.ctx = execjs.compile("""function TL(a) {var k = "";var b = 406644;var b1 = 3293161072;var jd = ".";var $b = "+-a^+6";var Zb = "+-3^+b+-f";for (var e = [], f = 0, g = 0; g < a.length; g++) {var m = a.charCodeAt(g);128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023),e[f++] = m >> 18 | 240,e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224,e[f++] = m >> 6 & 63 | 128),e[f++] = m & 63 | 128)}a = b;for (f = 0; f < e.length; f++) a += e[f],a = RL(a, $b);a = RL(a, Zb);a ^= b1 || 0;0 > a && (a = (a & 2147483647) + 2147483648);a %= 1E6;return a.toString() + jd + (a ^ b)};function RL(a, b) {var t = "a";var Yb = "+";for (var c = 0; c < b.length - 2; c += 3) {var d = b.charAt(c + 2),d = d >= t ? d.charCodeAt(0) - 87 : Number(d),d = b.charAt(c + 1) == Yb ? a >>> d: a << d;a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d}return a}""")def getTk(self, text):return self.ctx.call("TL", text)
调用这个函数——输入newsummary.txt,得到genetrans.txt
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Topshi
from Pytrans import *
import requestsdef google_translate(content):'''google translation'''js = Pytrans()tk = js.getTk(content)if len(content) > 4891:print("too long!!!")returnparam = {'tk': tk, 'q': content}result = requests.get("""http://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2""", params=param)trans = result.json()[0]ret = ''for i in range(len(trans)):line = trans[i][0]if line != None:ret += trans[i][0]return reta = google_translate("hello,Input file will be translated, please be patient")
print(a)genotype_annotation_list = []translate_file = open('genetrans.txt', "a+", encoding='utf-8')with open('newsummary.txt', 'r') as f: #有空行会报错!!for element in f:genotype_annotation_list.append(element.strip())
# print(genotype_annotation_list)
count = 0
for ga in genotype_annotation_list:translation = google_translate(ga)#translate_file.write(ga + 't' + translation + 'n')translate_file.write(translation + 'n')count += 1print('complete', '%.1f%%' % ((count / len(genotype_annotation_list)) * 100))
欢迎关注我们
python调用api接口获取数据_python批量爬取NCBI基因注释并调用谷歌API批量翻译相关推荐
- python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...
与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接 ...
- python调用第三方接口获取数据_python 接口实现 供第三方调用的例子
python 接口实现 供第三方调用的例子 实验环境 1.环境问题 python 2.7 以上自带的pyunit bottle 作为一个python的简易服务器 在python安装目录 打开命令窗口( ...
- 如何利用python调用API接口获取数据进行测试
一.Python 可以使用 requests 库来调用 API 接口获取数据.以下是基本的步骤: 1.安装 requests 库 pip install requests 2.导入 requests ...
- java接口对接——别人调用我们接口获取数据
java接口对接--别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...
- python跑一亿次循环_python爬虫爬取微博评论
原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...
- python调用接口获取数据_python:接口间数据传递与调用方法
如下所示: import requests import unittest import json from pubulic_way.get_token import getSession class ...
- python数据接口获取数据_python UI自动化实战记录二:请求接口数据并提取数据
该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python ...
- 盲僧发现了华点——教你如何使用API接口获取数据
那么先介绍一下我们的老朋友 "API" 一.API是什么 API是应用程序的开发接口,在开发程序的时候,我们有些功能可能不需要从到到位去研发,我们可以拿现有的开发出来的功能模块来 ...
- 通过API接口获取数据至后台
前言:这是我第一次写CSDN,如果有什么不对的地方麻烦指导一下 正题:不知道各位在项目中有没有遇到项目联动情况,比如其他项目的会员,可能在这边也需要使用,如果有,那么这篇文章可能对你有用 因为数据量可 ...
最新文章
- mysql9索引实战_课程介绍目录索引
- PHP 将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针
- zabbix添加对web页面url的状态监控
- python按日期排序_python按修改时间顺序排列文件的实例代码
- boost::detail模块实现数字特征的测试程序
- Shell下的环境变量
- 017 矩阵中的路径
- windows python安装opencv_OpenCV开发(1)——OpenCV3.4+Python3.5+Windows10安装问题解决
- pycharm关联python ide_Python+Selenium进阶版 (一)- Python IDE工具-PyCharm的安装和使用...
- Android:如何使用资源名称从资源中获取字符串?
- CS 1.6 服务器信息读取
- Delphi xe7组件和控件的安装方法
- Windows安装MySql
- 为何要做冒烟测试 如何做冒烟测试
- 神经网络处理表格数据,神经网络如何识别图像
- 利安德巴赛尔启动韩国年产能40万吨的聚丙烯生产设施;固特异完成收购固铂轮胎 | 能动...
- 【前端学习笔记】(五)(CSS布局 盒子模型)
- 控制SHLIXIN上海立新液压比例阀放大器
- 华中科技大学 计算机 数据库 试卷,华中科技大学计算机学院数据库总复习
- 基于Python的美丽图片屏幕保护
热门文章
- 语音识别(四)——DTW, Spectrogram, Cepstrum Analysis
- 计算机科学与技术第2次上机实验,天大计算机科学与技术学院—汇编语言—上机实验报告302...
- oracle 11 导入到 10,oracle11g导入到10g
- 关于Integer大小比较的问题
- rsync的安装使用01
- (转)Three challenges you’re going to face when building a chatbot
- 浏览器中的XML与JavaScript
- UVa11205 The Broken Pedometer
- /proc/sys/net/ipv4详解(2)
- C语言:格式字符串中的类型