LucaOne模型的词汇表系统

news/2025/11/13 20:44:29/文章来源:https://www.cnblogs.com/ylifs/p/19219510

https://github1s.com/lucaone/LucaOne/blob/master/src/models/alphabet.py#L1-L205

通过定义词汇表,就能输入蛋白质或者DNA。

这段代码定义了 LucaOne模型的词汇表系统(Alphabet类),是模型处理不同生物分子序列的核心组件。让我详细解释:

主要功能

1. 定义三种预定义词汇表

# 基因专用词汇表(DNA/RNA)
gene_standard_toks = ['1', '2', '3', '4', '5', '.', '-', '*']  
# 蛋白质专用词汇表(氨基酸)
prot_standard_toks = ['L', 'A', 'G', 'V', 'S', 'E', 'R', 'T', 'I', 'D', 'P', 'K', 'Q', 'N', 'F', 'Y', 'M', 'H', 'W', 'C', 'X', 'B', 'U', 'Z', 'O', 'J', '.', '-', '*']
# 基因+蛋白质混合词汇表
gene_prot_standard_toks = ['1', '2', '3', '4', '5', 'L', 'A', 'G', 'V', 'S', 'E', 'R', 'T', 'I', 'D', 'P', 'K', 'Q', 'N', 'F', 'Y', 'M', 'H', 'W', 'C', 'X', 'B', 'U', 'Z', 'O', 'J', '.', '-', '*']

2. 特殊Token定义

gene_prot_prepend_toks = ['[PAD]', '[UNK]']  # 前置特殊token
gene_prot_append_toks = ['[CLS]', '[SEP]', '[MASK]']  # 后置特殊token

3. 关键特性解析

DNA/RNA序列处理

# 检测是否为核酸序列
ATCGU = {"A", "T", "C", "G", "U"}
if seq_type in ["gene", "dna", "rna", "nucleic_acid", "nucleotide"]:if len(ATCGU & set(list(seq.upper()))) > 0:  # 检查是否包含ATCGU字符seq = gene_seq_replace(seq)  # 将ATCGU转换为数字编码

数字编码映射

基因序列使用数字编码:

  • A/T/C/G/U1/2/3/4/5
  • 这样做是为了统一处理不同生物分子类型

4. Alphabet类的主要方法

编码序列

def encode(self, seq_type, seq):# 如果是DNA/RNA,先进行数字编码转换# 然后tokenize并转换为索引

掩码语言模型编码

def encode_for_eval_mask(self, seq_type, seq):# 用于评估掩码任务,将'-'替换为[MASK] token

实际应用示例

# 创建混合词汇表
alphabet = Alphabet.from_predefined("gene_prot")# 编码DNA序列
dna_seq = "ATCGATTAGCT"
encoded = alphabet.encode("gene", dna_seq)  # 输出: [数字索引列表]# 编码蛋白质序列  
protein_seq = "MALWMRLLPLL"
encoded = alphabet.encode("prot", protein_seq)  # 输出: [氨基酸索引列表]

总结

这个Alphabet类是一个多模态生物分子词汇表系统,它能够:

  1. 统一处理DNA、RNA和蛋白质序列
  2. 将核苷酸字符(A/T/C/G/U)映射为数字(1-5)
  3. 支持BERT风格的特殊token([CLS]、[SEP]、[MASK]等)
  4. 为LucaOne模型提供序列到索引的转换能力

这使得LucaOne模型能够用统一的框架处理不同类型的生物序列数据。

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

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

相关文章

v4l2用户侧使用流程

前言 v4l2的用户侧使用方法的简单demo,参考:media/v4l/v4l2grab.c 实际上,v4l2的用户侧有libv4l开源库。用户可以使用此开源库快速搭建其用户侧代码。 流程 int main() {// openfd = v4l2_open("/dev/video0&q…

2025 年终端数据安全软件公司推荐数篷科技(深圳)有限公司,数据安全领域的坚实力量

在数字化浪潮席卷全球的当下,数据已然成为企业的核心资产,其安全防护至关重要。随着 AI、云计算等新兴技术的广泛应用,数据安全面临着前所未有的挑战,如数据泄露、非法访问等风险日益加剧。在此背景下,一款可靠的…

Day37(7)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project01\springboot-web-01

HTTP状态码大全 https://cloud.tencent.com/developer/chapter/13553package com.itheima;import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.ResponseEntity; import org.springfra…

网络协议工程 - eNSP及相关软件安装 - [eNSP, VirtualBox, WinPcap, Wireshark, Win7] - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

20232314 2025-2026-1 《网络与系统攻防技术》实验五实验报告

一、实验内容从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取信息。 尝试获取BBS、论坛、QQ、MSN中某一好友的IP地址,并查询获取该好友所在的具体地理位置。 使用nmap开源软件对靶机环境…

深度学习实验一之图像特征提取和深度学习训练数据标注 - 实践

深度学习实验一之图像特征提取和深度学习训练数据标注 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

题解:ABC232G Modulo Shortest Path

由于 \(\forall i,a_i < m,b_i < m\),所以可能的边权要么是 \(a_i+b_j\),要么是 \(a_i+b_j-m\),下文简称其为一类边和二类边。 暴力建图太浪费了,发现与一个 \(a_i\) 的连边是二类边的 \(b_j\) 的值单调不减…

如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程,附安装包)

如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程,附安装包)​手把手教你如何通过 .dmg 安装包安装 MySQL 8.0.20 数据库。一、下载安装包(如果你还没下) 安装包下载:https://pan.quark.cn/s/459eb1a02c4…

题解:P3791 普通数学题

考虑做类似数位 dp 的东西。 首先把 \(n,m\) 各加一,限制转换为 \(i<n,j<m\)。 套路地枚举 \(i,j\) 和 \(n,m\) 二进制下第一个不同的位置,则更低位就可以任取了。不难发现这个时候 \(i \operatorname{xor} j …

芒格变富的逻辑

芒格变富的逻辑 金钱:金钱只是数字,资产才有价值。能带来现金流的东西。 如何变的富有: 别去羡慕蠢人,人要靠自己自律、耐心、量入为出、长期复利(缓慢寻找有价值的团队合作,以合理的价格买好公司(慢慢寻找好资…

基于Ai元人文构想的关系图

基于Ai元人文构想的关系图 基于岐金兰的Ai元人文构想,我们绘制了一个更全面、更深入的「AI元人文构想与价值工程生态系统」关系图,它展示了从基础资源到文明愿景的完整架构。 flowchart TDsubgraph A [基础资源层]A1…

题解:P10360 [PA 2024] Desant 3

很妙的一道题。 首先我们肯定有一个 $O\left ( 2^n\operatorname{poly}\left ( n,m \right ) \right ) $ 的做法,但这无法通过 \(n \leq 35\)。 考虑把状态用 \(0,1,?\) 来表示,其中 \(?\) 表示这个士兵状态仍未决…

软件项目管理工具推荐|飞书项目 vs Asana vs ClickUp vs Jira

文章将深入分析四款主流项目管理工具在需求管理、缺陷追踪、测试管理、产品协作等软件研发的关键场景中的差异与优势,帮助研发团队评估哪款工具更契合自身工作模式。 无论你是敏捷开发团队、产品经理,还是工程管理者…

题解:AT_abc232_g [ABC232G] Modulo Shortest Path

由于 \(\forall i,a_i < m,b_i < m\),所以可能的边权要么是 \(a_i+b_j\),要么是 \(a_i+b_j-m\),下文简称其为一类边和二类边。 暴力建图太浪费了,发现与一个 \(a_i\) 的连边是二类边的 \(b_j\) 的值单调不减…

dify插件开发

自定义模型供应商 当我们想使用的模型在dify官方平台上没有对应的供应商时,我们只能自己集成。 比如公司内部的delphai部署了一些开源模型,我们想集成到dify上,这时需要以插件的形式安装到dify上。(旧版本开发自定义…

其他游戏攻略

自动化游戏 异星工厂:从零开始的零基础异星工厂2.0新手流程攻略。 异形工厂2 戴森球计划 城市建设游戏 都市地平线《citis skylines》《都市天际线》零基础到玩转游戏教程 模拟经营 星露谷物语 魂游 只狼:影逝二度:…

11.13 模拟赛 T3

题意:给出一个 \(n\) 个点标准的(分界点为 \(\lfloor \frac{l+r}2 \rfloor\))的线段树。定义一个区间的权值为,将这个区间正常地摊开在线段树上访问的结点数。例如,\(n=5,[2, 3]\) 的权值就是 \(5\)。\(q\) 组询问…

再加个数学专题

先是矩快吧 题先是两道模拟赛的矩阵快速幂优化dp 先开个坑等补 目前写法最好的:点击查看代码 #include<bits/stdc++.h> #define int long long using namespace std; const int N=2005,M=105,inf=1e18,mod=1092…

QF-Lib:用一个库搞定Python量化回测和策略开发

搞过量化交易的人都清楚,测试策略的时候流程能有多乱:Pandas 管数据、Matplotlib 画图、Backtrader 跑回测,最后还要再用 Excel 做汇总。本来想简单验证个想法,结果工具链越搞越复杂,最后自己都不知道在干什么了。…