背景
现在越来越多的工作利用深度学习来实现DNA序列的分类或者回归任务,但是如何把DNA序列编码成深度学习的向量化输入?换句话说,怎么把由A,C,G,T组成的DNA“字符串”转化成深度学习需要的向量(矩阵)格式?
目前常用的方法有one-hot encoding和 k k k-mer frequency vector。One-hot encoding是把A表示成[1,0,0,0], C表示成[0,1,0,0],G表示成[0,0,1,0],T表示成[0,0,0,1],这样一条长度为 L L L的DNA序列可以转成 4 ∗ L 4*L 4∗L的矩阵,但多数情况下参与训练的DNA序列长度都不一样,然而深度学习模型要求输入的矩阵大小一致,这时候如果长度差别不是很大,可以用cutting & padding的方法;如果长度差别很大,one-hot encoding就不太适合了。这时候可以采用 k k k-mer frequency vector来表示DNA序列,也就是把这条序列中所有的 k k k-mer的出现频率或者次数提取出来,组成一个向量作为输入,这种方法的很显然会丢失很多序列的信息,比如 k k k-mer之间的interaction。
这里要介绍的GP-GCN framework[1]就是为了解决这些问题。[1]这篇文章主要是拿病毒的序列作为例子来验证这个框架,实际上这个框架可以用于任何DNA序列。
GP-GCN framework原理
如果对原理不感兴趣,可以跳过这部分直接看软件教程哦~
-
sequence to graph
对于一条DNA序列 s s s,我们都可以把它转化成一个graph。graph的点对应 k k k-mer,边对应