Rosalind 035 Creating a Distance Matrix

2023-12-31 17:39:27

题目背景:

这个问题涉及到计算一组DNA字符串的p距离矩阵。p距离是衡量序列间进化距离的一种方法。以下是问题和过程的详细说明:

  1. 理解P距离:两个DNA字符串之间的p距离是指在相应位置上两个字符串不同的核苷酸比例。数学上来说,如果你有两个长度相同的字符串s1s2,那么p距离dp(s1, s2)就是不同位置的数量除以字符串的总长度。

  2. 距离矩阵:距离矩阵D是一个方阵,其中每个元素Di,j代表数据集中第i个和第j个DNA字符串之间的p距离。

? ? ?3. 如何构建距离矩阵

???????????假设我们有4条DNA序列。

? ? ? ? ? ?我们需要比较每一对序列,计算它们之间的p距离。

? ? ? ? ? ?然后把这些p距离放在一个表格(矩阵)中。这个表格有4行4列,因为我们有4条序列。

? ? ? ? ? ?每行和每列代表一条序列。表格中的每个数字都是两条序列之间的p距离。

https://rosalind.info/problems/pdst/

代码:

from method import fasta
name_list,value_list = fasta('')


def hamm(a,b):
    count = 0
    for i in range(len(a)):
        if a[i] != b[i]:
            count+=1
    return float(count/len(a))


#value_list = ['TTTCCATTTA','GATTCATTTC','TTTCCATTTT','GTTCCATTTA']

ans = []
for i in value_list:
    temp = []
    for j in value_list:
        temp.append('{:.5f}'.format(hamm(i, j)))
    ans.append(temp)

for i in ans:
    print(' '.join(i))

文章来源:https://blog.csdn.net/weixin_45848873/article/details/135317508
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。