1、在随机生成的7个长为32个核苷酸的DNA序列中,在每个DNA序列中的随机位点插入相同的序列,长度为8的模式P=ATGCAACT,你不知道模式P是怎样的序列,或者不知道在每条序列中它插入在哪里,DNA允许这个模式P在某些核苷酸位点上出现突变,突变后形成不完全相同的7个模式。要求:通过对DNA序列的分析重构模式P。
2、算法:
考虑一组t条DNA序列,每条序列中含有n个核苷酸。在这t条序列中,每条都选择一个位点,形成了一个数组S=(S1,S2,...,St),其中1<=Si<=n-l+1。从这些位点起始的l-元组片段编码在一个t*l阶的联配矩阵,第(i,j)处的元素表示元素为第i条序列上的第Si+j-1个元素的对应的核苷酸。基于这个联配矩阵计算4*l阶的剖面矩阵,其中第(i,j)处的元素表示核苷酸i在联配矩阵中第j列中出现的次数,i从1到4,表示A、T、G、C。取剖面矩阵中具有最大记录数的核苷酸序列片段,形成共有字符串
如1所述的7个突变的模式中,假设我们知道位置(...表示模式前后的DNA序列)。
......ATCCAGCT.......
......GGGCAACT.......
......AAGCAACC.......
......TTGGAACT.......
......ATGCCATT.......
......ATGGCACT.......
首先形成联配矩阵。
ATCCAGCT
GGGCAACT
AAGCAACC
TTGGAACT
ATGCCATT
ATGGCACT
接着形成剖面矩阵
A 5 1 0 0 5 50 0
T 1 5 0 0 0 1 1 6
G 1 1 6 3 0 1 0 0
C 0 0 1 4 2 06 1
最后得出共有字符串
A T G C A A C T