作者:沙雕学习小组
这里有视频教程: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批量翻译相关推荐

  1. python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...

    与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接 ...

  2. python调用第三方接口获取数据_python 接口实现 供第三方调用的例子

    python 接口实现 供第三方调用的例子 实验环境 1.环境问题 python 2.7 以上自带的pyunit bottle 作为一个python的简易服务器 在python安装目录 打开命令窗口( ...

  3. 如何利用python调用API接口获取数据进行测试

    一.Python 可以使用 requests 库来调用 API 接口获取数据.以下是基本的步骤: 1.安装 requests 库 pip install requests 2.导入 requests ...

  4. java接口对接——别人调用我们接口获取数据

    java接口对接--别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...

  5. python跑一亿次循环_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

  6. python调用接口获取数据_python:接口间数据传递与调用方法

    如下所示: import requests import unittest import json from pubulic_way.get_token import getSession class ...

  7. python数据接口获取数据_python UI自动化实战记录二:请求接口数据并提取数据

    该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python ...

  8. 盲僧发现了华点——教你如何使用API接口获取数据

    那么先介绍一下我们的老朋友  "API" 一.API是什么 API是应用程序的开发接口,在开发程序的时候,我们有些功能可能不需要从到到位去研发,我们可以拿现有的开发出来的功能模块来 ...

  9. 通过API接口获取数据至后台

    前言:这是我第一次写CSDN,如果有什么不对的地方麻烦指导一下 正题:不知道各位在项目中有没有遇到项目联动情况,比如其他项目的会员,可能在这边也需要使用,如果有,那么这篇文章可能对你有用 因为数据量可 ...

最新文章

  1. mysql9索引实战_课程介绍目录索引
  2. PHP 将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针
  3. zabbix添加对web页面url的状态监控
  4. python按日期排序_python按修改时间顺序排列文件的实例代码
  5. boost::detail模块实现数字特征的测试程序
  6. Shell下的环境变量
  7. 017 矩阵中的路径
  8. windows python安装opencv_OpenCV开发(1)——OpenCV3.4+Python3.5+Windows10安装问题解决
  9. pycharm关联python ide_Python+Selenium进阶版 (一)- Python IDE工具-PyCharm的安装和使用...
  10. Android:如何使用资源名称从资源中获取字符串?
  11. CS 1.6 服务器信息读取
  12. Delphi xe7组件和控件的安装方法
  13. Windows安装MySql
  14. 为何要做冒烟测试 如何做冒烟测试
  15. 神经网络处理表格数据,神经网络如何识别图像
  16. 利安德巴赛尔启动韩国年产能40万吨的聚丙烯生产设施;固特异完成收购固铂轮胎 | 能动...
  17. 【前端学习笔记】(五)(CSS布局 盒子模型)
  18. 控制SHLIXIN上海立新液压比例阀放大器
  19. 华中科技大学 计算机 数据库 试卷,华中科技大学计算机学院数据库总复习
  20. 基于Python的美丽图片屏幕保护

热门文章

  1. 语音识别(四)——DTW, Spectrogram, Cepstrum Analysis
  2. 计算机科学与技术第2次上机实验,天大计算机科学与技术学院—汇编语言—上机实验报告302...
  3. oracle 11 导入到 10,oracle11g导入到10g
  4. 关于Integer大小比较的问题
  5. rsync的安装使用01
  6. (转)Three challenges you’re going to face when building a chatbot
  7. 浏览器中的XML与JavaScript
  8. UVa11205 The Broken Pedometer
  9. /proc/sys/net/ipv4详解(2)
  10. C语言:格式字符串中的类型