Rosalind 035 Creating a Distance Matrix

本文介绍了如何使用Python计算DNA字符串的P距离矩阵,通过Hamm距离函数实现对四条DNA序列间的比较,并生成距离矩阵。
摘要由CSDN通过智能技术生成

题目背景:

这个问题涉及到计算一组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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值