mmseqs2蛋白质聚类数据格式转化
mmseqs2 对蛋白质结构中的序列进行同源性聚类分析(mmseqs2进行pdb蛋白质序列聚类分析_pdb 蛋白质聚类-CSDN博客)的结果格式如下:
8p0k_H 8p0k_H
8p0k_H 8p0n_H
8p0k_H 8p0j_H
8p0v_M 8p0v_M
8p0y_O 8p0y_O
8p0y_O 8p10_O
8p0y_O 8p0y_A
8p0y_O 8p10_D
8p0y_O 8p24_V
8p0y_O 8p24_Z
其中,第一列为聚类的代表序列,第二列为这一聚类的同源序列
注: 链的编号为pdb_strand_id
把这个格式转换成csv文件:
第一列为编号,第二列为聚类的代表序列,第三列为所有的其它同源序列,逗号隔开。
如:
IDX CLUSTER HOMOLOG
1 8p0k_H "8p0n_H,8p0j_H"
代码:
import csv
from collections import defaultdict
# 初始化字典存储代表序列及其同源序列
clusters = defaultdict(list)
# 从文件中读取数据
with open('result.tsv', 'r') as file:
for line in file:
rep, seq = line.strip().split() # 去除换行符并按制表符分割
if rep != seq: # 只保留同源序列,去掉代表序列
clusters[rep].append(seq)
# 将结果写入CSV
with open('clusters.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['IDX', 'CLUSTER', 'HOMOLOG'])
for idx, (rep, seqs) in enumerate(clusters.items(), 1):
writer.writerow([idx, rep, ','.join(seqs)])
print("CSV文件已生成")
可以进一步把不符合要求的结构过滤掉,从而得到的数据集可以用于结构预测或蛋白质设计的模型研究。