如何将生物序列tokenization为token?

原理讲解

tokenization是自然语言处理领域非常成熟的一项技术,tokenization就是把我们研究的语言转换成计算机能够识别的数字——token。


在生物领域,如何把核苷酸或氨基酸序列tokenization成token呢?

我们可以使用k-mer技术: k-mer指的是将k个序列单元作为一个滑动窗口,从第一个序列单元开始扫描,提取出序列中的k-mer。然后我们再对k-mer建立索引。


如下图所示,我们采用了3-mer窗口将“AGCACT”每次滑动1个碱基。

3-mer
3-mer

k-mer技术有两个可选值:窗口大小k值和k-mer的滑动步长

tokenization示意图
tokenization示意图

为什么不使用one-hot编码和直接将AGCT编码为1 2 3 4进行序列的tokenization呢?而且这样占用的内存要小很多。

原因在于:功能序列一般都是多核苷酸或多氨基酸,k-mer技术可以将一段序列表示为1个数字,模型记住1个数字要比记住k个数字容易的多。


代码实现:利用k-mer技术把核苷酸或氨基酸序列tokenization成token

def seq2kmer(file_dir, k):
    """
    将file文件中的序列转换为 kmers,滑动步长固定为1
    :param file_dir: 原始序列文件路径
    :param k: 自定义窗口大小
    :return:
    "
""

    """读取示例数据,由于示例数据是多行的,为了避免换行符对结果产生影响,需要将多行字符串转换为单行字符串。"""
    with open(file_dir) as object:
        contents = object.read()

    seq = contents.replace('\n''')  # contents.replace('\n', '') 将换行符全都去掉,将行与行紧密相连。

    kmer = [seq[x:x + k] for x in range(len(seq) - k + 1)]
    kmers = " ".join(kmer)  # .join(kmer) 将列表kmer连接成一个字符串,kmer之间用空格分隔。
    """输出1:将转换为的的kmers保存到txt文本中。"""
    with open(f"{k}mers_{file_dir}""w") as object:
        object.write(kmers)

    from itertools import product
    nucleotides = 'ACGT'
    """生成所有kmers"""
    kmers_all = [''.join(combination) for combination in product(nucleotides, repeat=k)]  # 使用itertools.product生成所有可能的组合
    """输出2:穷举生成所有kmers,并保存到txt文本中。"""
    with open(f"{k}mers_all.txt""w") as object:
        contents = str(kmers_all)
        object.write(contents)

    """输出3:将file_dir文件的kmers索引写入txt文本"""
    index = [kmers_all.index(seq[x:x + k]) for x in range(len(seq) - k + 1)]
    with open(f"index_{k}mers_{file_dir}""w") as object:
        object.write(str(index))


# 使用示例数据运行seq2kmer
k = 6
seq2kmer("acrA.txt", k)

输入文件和结果文件


输入文件acrA.txt和生成的三个文件
输入文件acrA.txt和生成的三个文件

输入文件acrA.txt
输入文件acrA.txt

6mers_acrA.txt
6mers_acrA.txt

6mers_all.txt
6mers_all.txt

index_6mers_acrA.txt
index_6mers_acrA.txt

注意:以上代码暂未将[CLS]分类token、[PAD]填充token、[UNK]未知token、[SEP]分句token和[MASK]掩码token(“[]” 也是token的一部分)加入到词汇表中


谢谢阅读

本文由 mdnice 多平台发布

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

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

相关文章

网络设备登录——《路由与交换技术》实验报告

目录 一、实验目的 二、实验设备和环境 三、实验记录 1.通过 Console 登录 步骤1:连接配置电缆。 步骤2:启动PC,运行超级终端。 步骤3:进入Console 配置界面 2.通过 Telnet 登录 步骤1:通过 Console 接口配置 Telnet 用户。 步骤2:配置 super 口令 步骤3:配置登录欢迎…

神经网络构建原理(以MINIST为例)

神经网络构建原理(以MINIST为例) 在 MNIST 手写数字识别任务中,构建神经网络并训练模型来进行分类是经典的深度学习应用。MNIST 数据集包含 28x28 像素的手写数字图像(0-9),任务是构建一个神经网络,能够根据输入的图像…

吉首大学--23级题目讲解

7-1 单链表基本操作 在 C/C 中,.(点)和 ->(箭头)运算符用于访问结构体或类的成员,但它们的使用场景不同。 1. . 运算符 . 运算符用于访问结构体或类的成员,通过对象或结构体变量直接访问。…

es的封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…

Element Plus 中Input输入框

通过鼠标或键盘输入字符 input为受控组件,他总会显示Vue绑定值,正常情况下,input的输入事件会正常被响应,他的处理程序应该更新组件的绑定值(或使用v-model)。否则,输入框的值将不会改变 不支…

windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘

文章目录 问题解决方法 问题 今天在windows环境下配置MySQL主从同步,在修改my.ini文件后发现MySQL启动失败了 打开my.ini检查参数发现没有问题 [mysqld] #开启二进制日志,记录了所有更改数据库数据的SQL语句 log‐bin mysql‐bin #设置服务id&#x…

[数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别

重要说明:数据集里面有2/3是增强数据集,请仔细查看图片预览,确认符合要求在下载,分辨率均为640x640 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件…

Python 二级考试

易错点 电脑基础知识 定义学生关系模式如下:Student (S#, Sn, Ssex,class,monitorS#)(其属性分别为学号、学生名、性别、班级和班长学号) 在关系模式中,如果…

python-SZ斐波那契数列/更相减损数

一:SZ斐波那契数列题目描述 你应该很熟悉斐波那契数列,不是吗?现在小理不知在哪里搞了个山寨版斐波拉契数列,如下公式: F(n) { $\ \ \ \ \ \ \ \ \ \ \ \ $ a,( n1) $\ \ \ \ \ \ \ \ \ \ \ \ $ b,( n2) $\ \ \ \ \ \ …

【优选算法之双指针】No.2--- 经典双指针算法(下)

文章目录 前言一、双指针示例:1.1 ⽔果成篮1.2 和为s的两个数字1.3 三数之和1.4 四数之和 二、双指针总结: 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专…

安装黑群晖系统,并使用NAS公网助手访问教程(好文)

由于正版群晖系统的价格不菲,对于预算有限的用户来说,安装黑群晖系统成为了一个不错的选择(如果您预算充足,建议选择白群晖)。如您对宅系科技比较感兴趣,欢迎查看本文,将详细介绍如何安装黑群晖…

allWebPlugin中间件自定义alert、confirm及prompt使用

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

跨游戏引擎的H5渲染解决方案(腾讯)

本文是腾讯的一篇H5 跨引擎解决方案的精炼。 介绍 本文通过实现基于精简版的HTML5(HyperText Mark Language 5)来屏蔽不同引擎,平台底层的差异。 好处: 采用H5的开发方式,可以将开发和运营分离,运营部门自…

代码随想录Day 51|题目:99.岛屿数量、100.岛屿的最大面积

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 题目一:99. 岛屿数量思路深度优先搜索DFS广度优先搜索BFS 题目二:100. 岛屿的最大面积DFSBFS 总结 题目一:99. 岛屿数量 99. 岛屿数量 (kamacoder.com) 思路 …

Tomcat服务器—Windows下载配置详细教程

一、关于 1.1 简介 Tomcat是一个开源的Java Servlet容器和Web服务器,由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages (JSP) 规范,用于运行Java Web应用程序。Tomcat支持多种Java EE功能,并提供了高效的性能和可扩展性&am…

华为OD机试 - 分解正整数 - 数学推导(Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

Redisson实现分布式锁(看门狗机制)

目录 可重入锁: 锁重试和看门狗机制: 主从一致性: 首先引入依赖,配置好信息 3.使用Redisson的分布式锁 可重入锁: 可重入锁实现是通过redsi中的hash实现的,key依旧是业务名称加id,然后第一个…

如何成立一家自己的等级保护测评机构?需要哪些条件?有哪些要求?

给大家的福利,点击下方蓝色字 即可免费领取↓↓↓ 🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 各省、自治区、直辖市公安厅、局网络安全保卫总队,新疆生产建设兵团公安局网络安…

【高分系列卫星简介——高分一号(GF-1)】

高分一号卫星(GF-1) 高分一号(GF-1)是中国高分辨率对地观测系统(简称“高分专项”)的第一颗卫星,具有里程碑式的意义。以下是对高分一号卫星的详细介绍: 一、基本信息 发射时间&…

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

提示&#xff1a;C君认为的难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会…