实验篇——亚细胞定位

news2024/11/23 3:37:48

实验篇——亚细胞定位

文章目录

  • 前言
  • 一、亚细胞定位的在线网站
    • 1. UniProt
    • 2. WoLFPSORT
    • 3. BUSCA
    • 4. TargetP-2.0
  • 二、代码实现
    • 1. 基于UniProt(不会)
    • 2. 基于WoLFPSORT
      • 后续(已完善,有关代码放置于[python爬虫学习(一)](https://blog.csdn.net/2301_78630677/article/details/132241087)):
  • 总结


前言

有关亚细胞定位的详细信息,请参考另一篇文章:
理化性质与亚细胞定位


一、亚细胞定位的在线网站

1. UniProt

网址:https://www.uniprot.org/
在这个网站中有一个关键的概念——ID映射(若AA序列文件不是在该官网中下载的,而是从外界导入的,那么要先将AA序列的ID转变为UniProt ID)

请添加图片描述

注意:首先要清楚待转换的AA序列的ID标识符来源于哪个数据库

在这里插入图片描述

我输入了“sp|Q9FIK7.1|AACT1_ARATH”,这是某个AA序列的ID,得到如下结果,可知道它对应的UniProt ID 为 “Q8S4Y1”

在这里插入图片描述

然后在搜索栏中输入该名称,得到

请添加图片描述

2. WoLFPSORT

网址:https://wolfpsort.hgc.jp/
这个网站可以批量处理小量的AA序列,允许的大小(200K),根据实际情况,一般可以容纳几百到几千个氨基酸序列。

请添加图片描述

在这里插入图片描述

结果查看:

请添加图片描述

示例:

LaggChr1G00000010.1 details chlo: 5, nucl: 3.5, mito: 3, cyto_nucl: 3, cyto: 1.5, cysk: 1

LaggChr1G00000010.1这个蛋白质的亚细胞定位信息如下:

叶绿体(chlo)得分:5
细胞核(nucl)得分:3.5
线粒体(mito)得分:3
细胞质-细胞核(cyto-nucl)得分:3
细胞质(cyto)得分:1.5
细胞骨架(cysk)得分:1
这些得分表示蛋白质在各个亚细胞定位的可能性,较高的得分表示较高的概率。

他们是按得分排列的,故取第一个就行。

3. BUSCA

url: http://busca.biocomp.unibo.it/
最多可以输入500个序列
可以下载结果表格(还挺方便)

请添加图片描述
结果查看:
请添加图片描述

4. TargetP-2.0

TargetP-2.0
url = http://www.cbs.dtu.dk/services/TargetP/
我看了一下,它介绍中说能处理5000个AA序列,但是要得到结果文件是要下载这个软件,在网页上看不到结果(我没下载,因为下载它好像要填一些信息什么的)

二、代码实现

1. 基于UniProt(不会)

推荐:这是一篇有关于用R语言实现“根据uniprot ID 批量检测基因的亚细胞定位“
这篇文章是在已知道Uniprot ID的情况下实现的爬取

我最开始也是看的这篇文章,所以想要基于uniProt官网来通过爬虫爬取。但是我弄了好久才有点搞懂这个网站(它的功能太多了,太繁杂)。最主要是那个ID映射(我完全卡在这第一步了),因为我并不知道我的AA序列的ID来自哪个数据库 ,而且全是英文,就相当于我用之前还要了解好多数据库。我也看了许多关于这个官网介绍的教程,也是有点…

2. 基于WoLFPSORT

主要是对结果的整理
从前文可知,它返回的结果是一堆的,要想从中提取出来蛋白质的亚细胞定位,可以用代码实现

import requests
url = "https://wolfpsort.hgc.jp/results/pLAcbca22a5a0ccf7d913a9fc0fb140c3f4.html"
r = requests.get(url)
print(r.status_code)
# print(r.encoding)
text = r.text
# print(text)
lines = text.split("<BR>")
AA_ID_list = []
yaxibao_list =[]
for i in lines:
    if "details" in i:
        AA_ID = i.split("<A")[0].strip().split()[-1]
        yaxibao = i.split("details")[1].strip().split()[1][:-1]
        AA_ID_list.append(AA_ID)
        yaxibao_list.append(yaxibao)
with open("yaxibao.csv","w",encoding="utf-8") as f:
    f.write("AA_ID, yaxibao\n")  # 写入列名
    for j in range(len(AA_ID_list)):
        f.write(f"{AA_ID_list[j]}, {yaxibao_list[j]}\n")

text:
在这里插入图片描述

yaxibao.csv

在这里插入图片描述

后续(已完善,有关代码放置于python爬虫学习(一)):

因为在WoLF PSORT官网中一次提交的数据大小最多200kb,那 我可以试着将原来几万kb大小的AA序列的大文件分为(我试了一下,一个大小为“17639Kb"的文件,我将它分为以3000个AA序列为一组的一些小文件,总共分成了106个小文件,我将其中一个小文件导入官网中,发现可以得到结果,然后我又将它分为以4000个AA序列为一组的一些小文件,总共分成了80个小文件,我将其中一个小文件导入官网中,发现超出了200kb)

所以根据估算,这个网站差不多最多可以处理3000~4000个AA序列(个人认为,已经很好了)

若是一定要批量处理大量的AA序列,可以尝试运用爬虫:
(一个思路,其中结果页面的url无法获得)

import requests
import os
import pandas as pd
from bs4 import BeautifulSoup

def split_gene_file(source_file, output_folder, genes_per_file):
    df = pd.read_csv(source_file, sep='\t')
    num_files = len(df) // genes_per_file + 1
    os.makedirs(output_folder, exist_ok=True)

    for i in range(num_files):
        start = i * genes_per_file
        end = start + genes_per_file
        df_subset = df.iloc[start:end]
        output_file = f"{output_folder}/gene_file_{i + 1}.csv"
        df_subset.to_csv(output_file, index=False)

split_gene_file("D:\yuceji\Lindera_aggregata.gene.pep", "gene1", 4000)
files = os.listdir("D:\python\PycharmProjects\pythonProject1\爬虫\gene1")


base_url = "https://wolfpsort.hgc.jp/"
new_url = []
for i in range(len(files)):
    with open(f"D:\python\PycharmProjects\pythonProject1\爬虫\gene1\gene_file_{i + 1}.csv", "r") as f:
        aa_sequence = f.read()

    # 构建WoLFPSORT请求的数据
    data = {
        "seq": aa_sequence
    }

    # 发送POST请求到WoLFPSORT官网
    response = requests.post(base_url, data=data)

    print(response.status_code)
    print(response.text)
    
    # 检查请求是否成功
    if response.status_code == 200:
        # 解析结果页面的URL
        soup = BeautifulSoup(response.content, "html.parser")
        result_links = soup.find_all("a", href=True)
        print(result_links)

        result_url = None
        # 遍历所有的链接
        for link in result_links:
            href = link.get("href", "")

            # 判断链接是否包含 "results"
            if "results" in href:
                result_url = base_url + href
                break

        if result_url:
            print(result_url)
            new_url.append(result_url)
        else:
            print("无法找到亚细胞定位结果页面的URL")


for i in range(len(new_url)):
    # url = "https://wolfpsort.hgc.jp/results/pLAcbca22a5a0ccf7d913a9fc0fb140c3f4.html"
    r = requests.get(new_url[i])
    print(r.status_code)
    # print(r.encoding)
    text = r.text
    # print(text)
    lines = text.split("<BR>")
    AA_ID_list = []
    yaxibao_list = []
    for i in lines:
        if "details" in i:
            AA_ID = i.split("<A")[0].strip().split()[-1]
            yaxibao = i.split("details")[1].strip().split()[1][:-1]
            AA_ID_list.append(AA_ID)
            yaxibao_list.append(yaxibao)
    with open(f"yaxiba{i}o.csv", "w", encoding="utf-8") as f:
        f.write("AA_ID, yaxibao\n")  # 写入列名
        for j in range(len(AA_ID_list)):
            f.write(f"{AA_ID_list[j]}, {yaxibao_list[j]}\n")

这个爬虫代码中返回的url并不是我要的那种,例如:https://wolfpsort.hgc.jp/results/pLA2dbb41dafad4afb342b5000abcb263b1.html
而是:(如图所示) 请添加图片描述

我点进这个链接是这样的:
在这里插入图片描述

我也不知道为什么,只能等我再学学爬虫,希望之后能解决这个问题吧!(当然也希望有大佬能帮忙指教一下)

我还看了看结果页面的源代码(HTML语言):
在这里插入图片描述

怎么说呢,既然我不能爬取到结果页面的url,那我只能将结果页面url的获得的步骤放在官网中实现,而后面的结果整理则用代码实现。


总结

本章详细介绍了许多用于亚细胞定位的网站,其中,我还是比较推荐 WoLFPSORT这个网站的(简单易懂,十分好上手)。至于后续的代码实现我也是基于这个网站,但是因为爬虫学习还不到位(无法爬取到结果页面的url)。只能等以后在学习爬虫时,再修改。

羌笛何须怨杨柳,春风不度玉门关。

–2023-8-12 实验篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/874174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[保研/考研机试] 杨辉三角形 西北工业大学复试上机题 C++实现

题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 输入n值&#xff0c;使用递归函数&#xff0c;求杨辉三角形中各个位置上的值。 输入描述: 一个大于等于2的整型数n 输出描述: 题目可能有多组不同的测试数据&#xff0c;对于每组输入数据&#xff0c; 按题目的要求输…

Java笔记-kafka

修改kafka的server.properties配置 概念 单播 一个消费组的消费者们只有一个能消费到消息。类似queue队列。 多播 不同的消费组的消费者能重复消费到消息&#xff0c;类似publish-subscribe模式 消费组偏移 kafka和别的消息中间件不一样&#xff0c;不同组可以重复消费&a…

Grafana监控 Redis Cluster

Grafana监控 Redis Cluster 主要是使用grafana来实现监控&#xff0c;grafana可以对接多种数据源&#xff0c;在官网中可以找到Redis数据源&#xff0c;需要安装redis data source插件。当然也可以利用Prometheus来做数据源&#xff0c;下面分别记录一下这两种数据源的安装配置…

前后端分离------后端创建笔记(04)前后端对接

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

“MongoDB基础知识【超详细】

"探索MongoDB的无边之境&#xff1a;沉浸式数据库之旅" 欢迎来到MongoDB的精彩世界&#xff01;在这个博客中&#xff0c;我们将带您进入一个充满创新和无限潜力的数据库领域。无论您是开发者、数据工程师还是技术爱好者&#xff0c;MongoDB都将为您带来一场令人心动…

网络安全威胁与防御策略

第一章&#xff1a;引言 随着数字化时代的快速发展&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。然而&#xff0c;网络的广泛应用也引发了一系列严峻的网络安全威胁。恶意软件、网络攻击、数据泄露等问题层出不穷&#xff0c;给个人和企业带来了巨大的风险。本文…

UI美工设计岗位的基本职责概述(合集)

UI美工设计岗位的基本职责概述1 1、有良好的美术功底、设计新颖&#xff0c;整体配色及设计创意理念&#xff0c;能够独立完成整个网站页面设计及制作; 2、熟练运用DIV CSS&#xff0c;HTML 设计制作网页 ; 3、熟练运用Photoshop,Dreamweaver,Coreldraw(或Illustrator),Fla…

7-2 计算物体自由下落的距离

一个物体从100米的高空自由落下。编写程序&#xff0c;求它在前3秒内下落的垂直距离。设重力加速度为10米/秒2。 输入格式: 本题目没有输入。 输出格式: 按照下列格式输出 height 垂直距离值结果保留2位小数。 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB …

异常(下)Java常见异常,异常的使用原则

文章目录 前言一、Java常见异常 1.常见异常2.实例展示二、异常的使用原则总结 前言 该文介绍了Java的一些常见异常&#xff0c;并给出对应的例子进行解释。介绍异常的使用原则&#xff0c;即创建&#xff0c;抛出异常的编程规范。 一、Java常见异常 前要&#xff1a;Java API中…

实训五:用户和组账号管理

实训五&#xff1a;用户和组账号管理 2017 年 X 月 X 日 今日公布 四&#xff1a;实训内容 用root用户登录系统&#xff0c;查看用户账号文件/etc/passwd和口令文件/etc/shadow的内容&#xff0c;注意观察其存储格式、各账户所使用的Shell、UID、GID等属性信息。 答&#xf…

ITIL4—度量和报告实践

1. 关于本文 本文为度量和报告实践提供了实用指南&#xff0c;分为五个主要部分&#xff0c;涵盖&#xff1a; 本实践的基本信息本实践相关的流程和活动&#xff0c;及其在服务价值链中的作用参与本实践的组织和人员支持本实践的信息和技术合作伙伴和供应商在本实践中的注意事…

【构造】CF1853D

Problem - D - Codeforces 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>using i64 long long;const int N 1e6 10;int ans[N];void solve() {int n;std::cin >> n;std::vector<std::pair<int,int> > a(n 1);for …

如何高效进行项目任务管理?掌握这些神器助你一臂之力

任务管理是项目管理中的重点部分&#xff0c;关系到项目能否顺利的完成。项目经理该如何进行项目任务管理呢&#xff1f; 一、项目任务管理中的挑战 二、项目任务管理指南 三、项目任务管理神器 首先我们需要先清楚当下企业在项目任务管理中遇到的挑战。 一、项目任务管理中的…

【Kafka】2.在SpringBoot中使用官方原生java版Kafka客户端

目 录 1. 新建一个消息生产者2. 新建一个消息消费者3. 测 试 在开始之前&#xff0c;需要先做点准备工作&#xff0c;用 IDEA 新建一个 Maven 项目&#xff0c;取名 kafka-study&#xff0c;然后删掉它的 src 目录&#xff0c;接着在 pom.xml 里面引入下面的依赖。这个项目的作…

HCIP学习--BGP3

目录 前置内容 BGP下一跳的修改问题 BGP的属性 配置 PrefVal权重属性 负载分担 LocPrf 负载分担 NextHop AS-PATH Ogn 配置 MED 配置 BGP选路规则 BGP的社团属性 配置及解释 前置内容 HCIP学习--BGP1_板栗妖怪的博客-CSDN博客 HCIP学习--BGP2_板栗妖怪的博客…

Python 解析c文件并导出到Excel

文章目录 1. 目录结构&#xff1a;2.代码1. test.c2. write_excel.py3. cparser.py4. 模板.xlsx5. output.xlsx 脚本中主要使用 openpyxl cparser 库 1. 目录结构&#xff1a; ast.txt &#xff1a;存放解析 c 文件的语法树&#xff0c;便于查找内容cparser.py &#xff1a;解…

@Param详解

文章目录 背景什么是ParamParam的使用方法使用方法&#xff1a;遇到的问题及因Param解决了什么问题使用与不使用对比 Param是如何进行映射的总结 背景 最近在开发过程中&#xff0c;在写mapper接口是在参数前加了Param注解&#xff0c;但是在运行的时候就会报错&#xff0c;说…

Elasticsearch 8.X 复杂分词搞不定,怎么办?

1、实战问题 球友提问&#xff1a;我想停用所有纯数字的分词 &#xff0c; 官网上的这个方法好像对ik分词器无效&#xff01; 有没有什么别的方法啊&#xff0c; chart gpt 说分词可以用正则匹配 但是测试好像是不行的 我的es版本是 8.5.3。 2、进一步沟通后&#xff0c;得…

若依框架浅浅介绍

由若依官网所给介绍可知 1、文件结构介绍 在ruoyi-admin的pom.xml文件中引入了ruoyi-framework、ruoyi-quartz和ruoyi-generatior模块&#xff0c;在ruoyi-framework的pom.xml文件中引入了ruoyi-system模块。 2、技术栈介绍 前端&#xff1a;Vue、Element UI后端&#xff1a…

Netty:在一个ByteBuf中寻找另外一个ByteBuf出现的位置

说明 利用ByteBufUtil的indexOf(ByteBuf needle, ByteBuf haystack)函数可以在haystack中寻找needle出现的位置。如果没有找到&#xff0c;返回-1。 示例 在一个ByteBuf 中找到了另外一个ByteBuf package com.thb;import io.netty.buffer.ByteBuf; import io.netty.buffer.…