Dynamic DNA汉明距离

Dynamic DNA汉明距离,dynamic,distance,hamming-distance,Dynamic,Distance,Hamming Distance,如果我将DNA表示为二进制值,那么计算它们之间距离的最佳方法是什么 So : A = 00, T = 11, G = 01 and C = 10 ATGC和TAAC之间的汉明距离为3,但它们的二进制表示给出了不同的答案: 00110110和11000010=5的汉明距离 如果以这种方式表示DNA碱基,那么距离计算的最佳方式是什么?您可以使用二进制操作来执行类似操作(在Java中,但您可以在任何语言中应用逻辑): 这样做的目的是获得与以下内容不同的总位数:seq1^seq2 但是你还不能仅仅计算

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

So : A = 00, T = 11, G = 01 and C = 10
ATGC
TAAC
之间的汉明距离为3,但它们的二进制表示给出了不同的答案:

00110110
11000010
=5的汉明距离


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

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

这样做的目的是获得与以下内容不同的总位数:
seq1^seq2

但是你还不能仅仅计算比特数,因为你会得到汉明距离,所以你必须使用:
(pseudoDist&0xaaaaaa>>1)
pseudoDist&0x555555
将所有对应于同一核苷酸的比特压缩为同一比特。第一个保持位在偶数位置,第二个保持位在奇数位置


现在,您可以使用
evenBits | oddBits
,并可以计算位。

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

这样做的目的是获得与以下内容不同的总位数:
seq1^seq2

但是你还不能仅仅计算比特数,因为你会得到汉明距离,所以你必须使用:
(pseudoDist&0xaaaaaa>>1)
pseudoDist&0x555555
将所有对应于同一核苷酸的比特压缩为同一比特。第一个保持位在偶数位置,第二个保持位在奇数位置


现在您使用
evenBits | oddBits
,您可以计算位。

该代码是用Java编写的,
finalDist
给出了答案。我刚刚将
00110110
11000010
转换为用Java编写的十进制代码,
finalDist
给出了答案。我刚刚将
00110110
11000010
转换为十进制
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