根据基因名批量查找它的Uniprot编号

2024-01-20 11:44

本文主要是介绍根据基因名批量查找它的Uniprot编号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:

前几天老师交给我一个任务,给我一个基因列表,让我查找它们所编码的蛋白质的蛋白质序列。我上了一下uniprot数据库,发现这个任务可以分成两步:

  • 找到这个基因在Uniprot数据库中所对应的蛋白质编码
  • 根据蛋白质编码批量下载蛋白质序列(以前的文章)

下面我们以基因“BOP1”为例:

然后可以看到:

这里我们可以看到,有一个个框,代表不同的蛋白。我们要找的是人,所以应该是Homo sapiens。Gene也是BOP1。对应上了!Q14137就是我们要找的uniprot编码。也可以这样说:BOP1~Q14137。

知道了一个那好办,给我们100,1000个呢?这时候我们的爬虫就出现了。直接给代码:

# 导包
import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active#加载selenium配置
user_data_dir = r'C:\Users\*****'
options = Options()
options.add_argument(f'--user-data-dir={user_data_dir}')
driver = webdriver.Edge(options=options)
#读取文件
file_path = r'*****/step1.xlsx'
df = pd.read_excel(file_path, header=None)
# 获取蛋白名称列的数据
protein_names = df[0].tolist()
#开爬
for protein in protein_names:# 构建带有查询参数的URLurl = f'https://www.uniprot.org/uniprotkb?query={protein}'print(url)driver.get(url)# 使用Selenium等待页面加载完成(最多等待30秒)wait = WebDriverWait(driver, 30)wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div/div/div/div/main/ul/li[2]/section/div[1]/div[1]/h2/a/span')))# 使用XPath查找页面上的内容#xpath_expression = '/html/body/div/div/div/div/main/ul/li/section/div[1]/div[1]/h2/a/span'xpath_expression = '/html/body/div/div/div/div/main/ul/li/section/div[1]/div[2]/div'# 使用XPath查找页面上的内容ul = driver.find_element(By.XPATH, '/html/body/div/div/div/div/main/ul')lis = ul.find_elements(By.TAG_NAME, 'li')for li in lis:title = li.find_element(By.XPATH, './section/div[1]/div[2]/div').textresult = title.split("·")if protein in result[1] and 'Homo sapiens (Human)' in result[2]:protein_slice = li.find_element(By.XPATH, './section/div[1]/div[1]/h2/a/span').textprotein_slice = protein_slice.split("·")result = [x.strip() for x in protein_slice]protein_name = result[0]sheet.append([protein, result[0]])breakoutput_file = 'output2.xlsx'
workbook.save(output_file)# 关闭浏览器
driver.quit()

我们来看看输出文件:

这篇关于根据基因名批量查找它的Uniprot编号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并