基于预训练模型,进行氨基酸序列编码,用于深度学习模型构建

news2024/11/16 9:42:46

本团队提供生物医学领域专业的AI(机器学习、深度学习)技术支持服务。如果您有需求,请扫描文末二维码关注我们。

在这里插入图片描述


在对氨基酸序列数据进行深度学习模型构建时,首先需要将字符形式的序列数据进行编码操作。最简单的当然是One-hot编码,但会引入稀疏性问题。这里提供一种基于预训练模型的编码方法,代码如下:

import os 
import pandas as pd 
import numpy as np 
from sentence_transformers import SentenceTransformer
import warnings

warnings.filterwarnings('ignore')


# 定义读取FASTA格式的氨基酸序列文件
def read_fasta(file_path):
    with open(file_path, 'r') as file:
        sequences = []
        sequence_names = []
        current_sequence = []
        
        for line in file:
            line = line.strip()
            if line.startswith('>'):
                if current_sequence:
                    sequences.append(''.join(current_sequence))
                    current_sequence = []
                sequence_names.append(line[1:])
            else:
                current_sequence.append(line)
                
        if current_sequence:
            sequences.append(''.join(current_sequence))
    # 返回两个list
    # 第一个为序列名,第二个为序列
    return sequence_names, sequences


# 将自动下载预训练模型,如果失败,需要手动从网站下载。
# 网站地址:https://huggingface.co/monsoon-nlp/protein-matryoshka-embeddings
model = SentenceTransformer('monsoon-nlp/protein-matryoshka-embeddings')


# 创建结果文件
outdir = 'embedding_results'
os.makedirs(outdir, exist_ok=True)
os.makedirs(f"{outdir}/SingleSeqEmbedding", exist_ok=True)


# 读取氨基酸序列
sequence_names, sequences = read_fasta('proteinSquence-zheng.txt')
print(f"共读入了 {len(sequence_names)} 条氨基酸序列")


# 将读入的序列转为CSV格式,并进行保存
df = pd.DataFrame({'seq_name': sequence_names,
                   'sequence': sequences
                    })
df.to_csv(f"{outdir}/sequences.csv", index=False)


# 每条序列单独编码
for idx, sequence in enumerate(sequences):
    embedding = model.encode(sequence)
    np.save(f'{outdir}/SingleSeqEmbedding/embedding_{idx}.npy', embedding)

# 所有序列编码为一个矩阵
embeddings = model.encode(sequences)
np.save(f'{outdir}/embeddings.npy', embeddings)

print('编码后的序列维度为: ', embeddings.shape)


在这里插入图片描述

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

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

相关文章

【Java】/* 双向链式队列 和 循环队列 - 底层实现 */

一、链式队列 1. 使用双向链表实现队列,可以采用尾入,头出 也可以采用 头入、尾出 (LinkedList采用尾入、头出) 2. 下面代码实现的是尾入、头出: package bageight;/*** Created with IntelliJ IDEA.* Description:* User: tangyuxiu* Date: …

[kaggle竞赛] 毒蘑菇的二元预测

毒蘑菇的二元预测 您提供了很多关于不同二元分类任务的资源和链接,看起来这些都是Kaggle竞赛中的参考资料和高分解决方案。为了帮助您更好地利用这些资源,这里是一些关键点的总结: Playground Season 4 Episode 8 主要关注的竞赛: 使用银行…

2024/8/22 英语每日一段

Belgian triathlete Claire Michel ultimately said it was a virus and not bacteria from the water that made her sick after a swim. But Belgium’s Olympic committee said in a statement that it hoped “lessons will be learned” for future Olympics. “We are th…

鸿蒙(API 12 Beta3版)【使用ImageEffect编辑图片】图片开发指导

场景介绍 ImageEffect提供了一系列接口用于图像的编辑。开发者可以通过ImageEffect接口处理不同图像输入类型Pixelmap、NativeWindow、NativeBuffer或Uri,获得滤镜处理效果。 针对ImageEffect,常见的开发场景如下: 通过ImageEffect提供的N…

iOS 18 Beta 7测试版本体验,无新功能,修复已知bug

近日苹果公司发布了iOS 18 beta7版本,版本号22A5346a。那iOS 18beta7版本是否比其他的测试版要更好用呢?以下测试结果仅供果粉参考,一机一况,以个人实际体验为准。 一、日常使用体验 1、App响应非常快,动画过渡时间稍…

【高等代数笔记】线性方程组的解法(三、四、五)

1. 线性方程组的解法 由于这个视频课的分p十分抽象,我还是把一节完整的课学完再发表笔记吧,要不然太零碎了。 接上一篇文章 阶梯形方程组为 { x 1 − x 2 2 x 3 − 1 0 0 \left\{\begin{array}{l} x_{1}-x_{2}2 \\ x_{3}-1 \\ 00 \end{array}\righ…

dll错误修复工具:一键解决系统DLL错误产生的程序问题(新手入门)

dll错误修复工具,主要解决导致Windows系统上程序出错的各种dll相关问题。金舟DirectXDLL一键修复提供了全面的且快速的扫描功能,能够检测出导致程序故障的任何dll错误,并且一键进行修复。 一、什么是dll文件 dll是系统的动态链接库文件&…

6年赚了300亿孙悟空才是真财神!带火文旅、引发装机热潮、搅动A股....这波热度你蹭到了吗?

《黑神话:悟空》上线后一博主连续32小时直播,观看人数超3000万,涨粉近46万!该主播个人收益或高达85万元!游戏里的36个取景地中,山西独占27个。8月20日,小西天景区出售门票比去年同期增长300%。 …

前端面试题-vue框架

1. 聊聊为什么会出现 React、vue 这样的框架,他们的出现解决了什么问题 用户界面越来越复杂,框架采用声明式的写法,将界面的构建和数据的管理分离出来,大大提升开发效率和维护效率。 (1)原生JS实现不太方…

如何在Visio中画精准的圆弧,角度标记,弧度标记(已解决)

1、导入 “绘图工具形状” 打开 Visio--》 然后: 点击 绘制工具形状 之后, 在界面会出现 绘制工具形状的选项 如下 本人 使用圆弧 ,弧线功能,然后两头增加箭头,实现角度标注,如下

【Qt开发】建立自己的Qt基本类、函数库封装 包括图表、多线程、串口等

【Qt开发】建立自己的Qt基本类、函数库 包括图表、多线程、串口等 文章目录 前言QtCharts绘图继承QObject的QThread多线程QSerialPort串口配置、发送、接收回调函数附录:C语言到C的入门知识点(主要适用于C语言精通到Qt的C开发入门)C语言与C的…

2024年企业记账最主流的8大财务软件大对比

企业记账的8大主流财务软件:1.合思;2.用友好会计财务软件;3.浪潮云会计;4.金蝶精斗云财务软件;5.Zoho Books;6.管家婆;7.QuickBooks;8.云账房。 对小企业主来说,采用高效…

Linux | 探究C语言文件接口与Linux系统文件接口的区别与联系 | fopen和open的区别与联系

什么是尘土?从大地之肺发出的一声叹息。 - 《阿多尼斯诗集》(阿多尼斯) 2024.8.23 目录 1、C语言IO接口 示例代码:使用 fopen 和 fclose 读写文件 示例1:通过write写文件 示例2:通过read写文件 C语言的标准流:std…

集合及数据结构第十节(上)————优先级队列,堆的创建、插入、删除与用堆模拟实现优先级队列

系列文章目录 集合及数据结构第十节(上)————优先级队列,堆的创建、插入、删除与用堆模拟实现优先级队列 优先级队列,堆的创建、插入、删除与用堆模拟实现优先级队列 优先级队列的概念堆的概念堆的存储方式堆的创建变量的作…

谷粒商城实战笔记-250-商城业务-消息队列-RabbitMQ安装-Docker

一,docker安装RabbitMq RabbitMQ 是一个开源的消息代理软件,广泛用于实现异步通信和应用程序解耦。 使用 Docker 容器化技术可以简化 RabbitMQ 的安装和部署过程。 以下是使用 Docker 安装 RabbitMQ 的详细步骤。 步骤 1: 安装 Docker 如果您的系统…

Linux 软件编程 网络 tcp

1.TCP粘包问题: TCP发送数据是连续的,两次发送的数据可能粘连成一包被接收到 1.解决粘包问题方法: 1.接收指定长度:(不稳定) 发送5个字节 接收5个字节 2.睡眠&#x…

【数据库】Mysql 批量变更所有字段类型为varchar的字符集

生成变更语句 SELECT CONCAT(ALTER TABLE , TABLE_NAME, MODIFY , COLUMN_NAME, , COLUMN_TYPE, , CHARACTER SET utf8 COLLATE utf8_general_ci , CASE WHEN IS_NULLABLE YES THEN NULL DEFAULT NULL WHEN IS_NULLABLE NO AND ISNULL(COLUMN_DEFAULT) THEN NOT NULL EL…

Adobe Illustrator矢量绘图软件win/mac软件下载安装

一、软件概述 1.1 Adobe Illustrator简介 Adobe Illustrator是一款由Adobe Systems开发的强大矢量绘图软件,专为设计师、艺术家及图形专家设计。它广泛应用于平面设计、插画、UI设计、图标设计、排版及数字媒体制作等领域。Illustrator以其独特的矢量图形处理能力…

Datawhale X 魔搭 AI夏令营第四期 | AIGC文生图——进阶上分 实战优化 Task3笔记

Hi,大家好,我是半亩花海。在上一个任务中,我们逐行精读baseline,掌握了利用AI工具提升学习效率,并制作了话剧连环画,初步了解Secpter WebUI。今天,我们将深入探讨微调的基本原理及其参数&#x…

海外版多语言互助盘三三复制超级人脉系统

此套源码是全新二开的超级人脉系统,面向海外操作新增多语言,后台可新增其他语言.