Biopython 如何从FASTA文件中进行多个成对对齐并打印相似度百分比?

Biopython 如何从FASTA文件中进行多个成对对齐并打印相似度百分比?,biopython,pairwise,Biopython,Pairwise,我想对FASTA文件中包含的每个蛋白质序列进行多次成对比较,然后打印序列相似性百分比(平均值或单个值)。我认为我需要使用itertools来创建所有的组合,对齐它们,然后可能将匹配数除以对齐的序列长度,以获得%的序列相似性,但我对需要执行此操作的特定脚本有困难,如果可能,最好使用biopython。感谢您的帮助 我的答案不涉及Biopython,但由于还没有发布其他答案,我还是会发布它: 我目前正在开发的生物信息学包黑云母(),将使用以下脚本解决您的问题: 将numpy导入为np 进口黑云母 按

我想对FASTA文件中包含的每个蛋白质序列进行多次成对比较,然后打印序列相似性百分比(平均值或单个值)。我认为我需要使用itertools来创建所有的组合,对齐它们,然后可能将匹配数除以对齐的序列长度,以获得%的序列相似性,但我对需要执行此操作的特定脚本有困难,如果可能,最好使用biopython。感谢您的帮助

我的答案不涉及Biopython,但由于还没有发布其他答案,我还是会发布它:

我目前正在开发的生物信息学包黑云母(),将使用以下脚本解决您的问题:

将numpy导入为np
进口黑云母
按顺序导入黑云母
将黑云母.sequence.io.fasta作为fasta导入
导入黑云母.sequence.align作为对齐
导入黑云母.database.entrez作为entrez
#5个示例序列(细菌荧光素酶变体)
UID=[
“Q7N575”、“P19839”、“P09140”、“P07740”、“P24113”
]
#将这些序列作为一个文件从NCBI下载
file\u name=entrez.fetch\u单个\u文件(
uids,黑云母.temp_文件(“fasta”),db_name=“protein”,ret_type=“fasta”
)
#将文件中的每个序列作为“ProteinSequence”对象读取
fasta_file=fasta.FastaFile()
fasta_file.read(文件名)
序列=列表(fasta.get\u序列(fasta\u文件).values())
#BLOSUM62
替换矩阵=align.SubstitutionMatrix.std_蛋白质矩阵()
#将填充成对序列恒等式的矩阵
恒等式=np.one((len(序列),len(序列)))
#迭代序列
对于范围内的i(len(序列)):
对于范围(i)中的j:
#两两对齐序列
对齐=align.align\u最佳(
序列[i],序列[j],替换矩阵
)[0]
#计算两两序列恒等式并填充矩阵
标识=对齐。获取序列标识(对齐)
恒等式[i,j]=恒等式
恒等式[j,i]=恒等式
打印(身份)
输出:

[[1.         0.97214485 0.62921348 0.84225352 0.59776536]
 [0.97214485 1.         0.62359551 0.85352113 0.60055866]
 [0.62921348 0.62359551 1.         0.61126761 0.85393258]
 [0.84225352 0.85352113 0.61126761 1.         0.59383754]
 [0.59776536 0.60055866 0.85393258 0.59383754 1.        ]]