DNA汉明距离

时间:2016-03-31 19:11:36

标签: dynamic distance hamming-distance

如果我将DNA表示为二进制值,那么计算它们之间距离的最佳方法是什么。

So : A = 00, T = 11, G = 01 and C = 10

汉明ATGCTAAC之间的距离是3,但是它们的二进制表示给出了不同的答案:

0011011011000010 = 5的汉明距离。

如果以这种方式表示DNA碱基,那么距离计算的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用二进制操作来执行此类操作(在Java中,但您可以使用任何语言应用逻辑):

int seq1 = 54, seq2 = 194;//ATGC and TAAC
int evenBit = 0xAAAAAAAA, oddBit = 0x55555555;

int pseudoDist = seq1 ^ seq2;
int dist = (pseudoDist&evenBit)>>1;
dist |= pseudoDist&oddBit;
int finalDist = Integer.bitCount(dist);//output 3

我们的想法是获得与seq1 ^ seq2

不同的位总数

但是你不能只计算这些位,因为你将获得汉明距离,所以你必须使用:(pseudoDist&0xAAAAAAAA>>1)和{压缩所有对应同一个核苷酸的位到同一位。 {1}}。第一个将位保持在偶数位置,第二个位于奇数位置。

现在您使用pseudoDist&0x55555555,您可以计算位数。