估计阅读时长: 2 分钟

假若现在有两条Fasta序列放在你面前,现在需要你进行这两条Fasta序列的相似度计算分析。如果对于我而言,大学刚毕业刚入门生物信息学的时候,可能只能够想到通过blast比对的方式进行序列相似性计算分析。基于blast比对方式可以找到生物学意义上的序列相似性结果,但是计算的效率会比较低。假设现在让你使用这些序列进行机器学习建模分析,或者基于传统数学意义上的基于相似度的无监督聚类分析的时候,面对这些长度上长短不一的生物序列数据,可能会比较蒙圈,因为传统的数学分析方法都要求我们分析的目标至少应该是等长的向量数据。

使用图理论描述序列

在接触过图分析理论,对序列数据有一个比较深刻的认识之后,实现上面的分析目标,实际上我们可以将目标生物序列转换为图对象,然后基于图对象进行一维嵌入表示的方式将长度上长短不一的序列转换为等长的数值向量。最后基于得到的向量数据,就可以进行基于常规的数学方法做机器学习建模或者无监督的数据挖掘分析了。

生物序列图嵌入方法就是这样一种基于图论的方法将变长的序列数据转换为等长的向量的方法,其主要是通过图理论将不同长度的两条生物序列嵌入表示为两个等长的向量,当任意的生物序列都转换为等长的两个向量之后,我们就可以通过传统的聚类算法,机器学习算法来进行生物序列数据的分析,例如无监督聚类,机器学习分类。

那这个方法的实现原理是怎样的?

序列的图对象表示

其实这个序列图嵌入方法与自然语言处理分析之中的TextRank算法中对自然语言文本的图嵌入过程有一些类似,只不过TextRank处理的自然语言文本是没有太多重复单词的文本数据,而对于序列图嵌入方法而言,其所进行图嵌入的目标则是存在有大量重复单词出现的序列数据。序列图嵌入和TextRank自然语言文本处理方法,在最开始对所输入的目标文本的图对象表示,都可以基于下面的方法描述来进行:

  1. 对于任意一个给定的文本数据,我们会需要首先进行文本的分词处理,对于TextRank算法所处理的自然语言文本,如果是英文文本的话,会非常容易,直接按照空格做拆分。对于中文还需要一些额外的算法做分词。对于生物序列数据,则是非常简单的吧序列文本里面的每一个字符拿出来就是一个单词对象了
  2. 接着我们就可以在分词结果的基础上进行图对象的构建了:在图对象里面,都是存在有节点和节点之间的边连接关系这两种类型的数据组成的。在我们前面所分词处理后的文本数据中,所分出来的每一个单词实际上都相当于图对象之中的节点对象;那么,这个时候,源文本中的前一个单词和后一个单词二者之间就可以添加一条边连接。通过单词和单词之间的前后链接关系我们就可以将任意一个文本数据转换为基于单词节点的图对象了

在完成了上面所描述的图对象的构建之后,我们接下来就可以将这个图对象进行向量化表示就完成了将我们所获得的序列数据描述为等长的向量数据这一目标了。那么如何将我们的图对象进行向量化描述呢?

> example_sequence
ATGCCCGTCCCGTAAA
Adjacent Count Normalized
A-A 2 0.125
A-T 1 0.0625
T-A 1 0.0625
A-G 0 0
G-A 0 0
A-C 0 0
C-A 0 0
T-T 0 0
T-C 1 0.0625
C-T 0 0
T-G 1 0.0625
G-T 2 0.125
C-C 4 0.25
C-G 2 0.125
G-C 1 0.0625
G-G 0 0

通过序列中,残基元素之间的边连接关系得到上面的相邻碱基计数表格后,实际上就完成了对一条任意长度的Fasta序列嵌入为了等长元素向量;在完成对原始Count值进行序列长度归一化之后,就可以与其他的任意Fasta序列的嵌入向量结果之间进行比较计算

图对象嵌入表示

因为我们创建图对象的本意就是用来描述任意两个节点之间的关联关系的,所以对于任意图对象而言,我们使用两两组合排列的方式吧图对象里面所有节点的连接关系给列举出来实际上就可以将图对象转换为向量了。当组合出来的两个节点之间存在有边连接关系的时候,就把边连接关系的权重放入到向量中对应的位置;当组合出来两个节点之间没有边连接关系的时候,就放一个零,这样子,把图对象表示为向量是不是非常简单。

对于通过自然语言文本生成的图对象而言,上面的方法可能会有些行不通,因为自然语言分词出来的单词可能是无限数量类型的,所以假若描述为向量的话,向量理论上也是无限长的。但是对于生物序列数据所产生的图对象而言,则情况简单的多了。

其实我们观察生物序列的文本特点就可以了解到,任意一条生物序列数据,里面都是由有限的基础的若干元素所构成的:DNA序列ATGC,RNA序列AUGC,蛋白序列则是20种常见氨基酸的简写字母。那么我们通过上面所描述的方法进行生物序列图对象的向量化表示,得到的就是有限长度的向量结果。

那么现在既然有了可以用来描述对应生物序列的向量数据了,那现在我们就可以基于这些向量进行常规数学方法的机器学习建模和数据挖掘分析了。

使用GCModeller进行Fasta序列的图嵌入

使用SGT算法进行任意序列的图嵌入

谢桂纲
Latest posts by 谢桂纲 (see all)

Attachments

  • Fasta-A • 544 kB • 128 click
    29.06.2023

  • visualize • 45 kB • 105 click
    01.07.2023

One response

  1. 针对图对象进行向量化表示嵌入:

    首先,通过node2vec方法,将node表示为向量
    第二步,针对node向量矩阵,进行umap降维计算,对node进行排序,生成node排序序列
    第三步,针对node排序序列进行SGT序列图嵌入,实现将网络图对象嵌入为一维向量

    来自江苏

Leave a Reply

Your email address will not be published. Required fields are marked *

博客文章
December 2024
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031  
  1. 在mysql之中,针对24小时内的数据按照半个小时进行一次统计数量: ```sql SELECT DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(add_time) / 1800) * 1800), '%Y-%m-%d %H:%i') AS half_hour, COUNT(*) AS count FROM user_track.page_view WHERE add_time >=…

  2. 针对图对象进行向量化表示嵌入: 首先,通过node2vec方法,将node表示为向量 第二步,针对node向量矩阵,进行umap降维计算,对node进行排序,生成node排序序列 第三步,针对node排序序列进行SGT序列图嵌入,实现将网络图对象嵌入为一维向量