我正在尝试编写一个脚本来从包含七个单独Genbank条目的文件中删除重复的氨基酸序列(一旦工作,我想将脚本应用于包含1000-5000
个条目的文件)。
这是数据......
WP_013250615.1
Candidatus Nitrospira defluvii
Seq('MKHVVDIELAGRRLTLETGRIAKQADGAIWATYGDTVVLATAVASQNAKPGVDF...PAG', IUPACProtein())
705
WP_014960802.1
Leptospirillum ferriphilum
Seq('MNPIFVEAVVGGKTVRLETGRMAKQADGSVVVWADGTVVIATAVASKVSKPGVD...SGR', IUPACProtein())
713
WP_036083494.1
Leptospirillum ferriphilum
Seq('MNPIFVEAVVGGKTVRLETGRMAKQADGSVVVWADGTVVIATAVASKVSKPGVD...SGR', IUPACProtein())
713
WP_014449743.1
Leptospirillum ferrooxidans
Seq('MNPIIVNVSVGGKNIRLETGRMAKLAGGSATVWADGTVVLATAVSAKSMKPGID...GGQ', IUPACProtein())
710
WP_023525658.1
Leptospirillum sp. Group II 'C75'
Seq('MNPIFVEAVVGGKTVRLETGRMAKQADGSVVVWADGTVVIATAVASKVSKPGVD...SGR', IUPACProtein())
713
WP_028844965.1
Thermodesulfovibrio thiophilus
Seq('MEVELNIKGQNLSLQTGIIARQTDGSVLVKYGDTYVLCTVVAEKTPKEGLDFIP...TKK', IUPACProtein())
710
YP_002249618.1
Thermodesulfovibrio yellowstonii DSM 11347
Seq('MEVELEIKGKKLVLQTGIFAKQTNGSVLAKYGDTYVLCTVVAEKTPKEGLDFVP...TKT', IUPACProtein())
710
其中一个条目是重复的( Leptospirillum ferriphilum 的物种和序列都相同)。我想迭代地浏览文件,只保留对于物种名称和序列都是唯一的条目(我期望较大的文件将具有相同序列但来自不同物种的条目,我想保留)。删除重复后,我需要将Genbank文件转换为fasta格式。
我可以使用SeqIO.parse命令提取数据,但到目前为止还无法删除重复项(我已尝试过set()命令)。当我检查输出文件时,我仍然有7个条目而不是6个。
有什么想法吗?
答案 0 :(得分:1)
您希望浏览每个条目,并将它们放入字典中,将种类名称映射到列表中,例如
species_dict = {}
for p in proteins:
grab the species name
grab the sequence
if not species name in species_dict:
species_dict[species name] = [sequence]
else:
if not sequence in species_dict[species name]:
species_dict[species name].append(sequence)
按正则表达式'.*\d{10,10}\.\d{1,1}\s*(?P<sequence_name>\w+)'
抓取物种名称,按'Seq('(?P<sequence>\w+)'
答案 1 :(得分:0)
这应该可以完成工作。它遍历原始列表,将每一行放入一个列表中,然后删除带有set的重复项,最后迭代新列表,没有重复项到新文件。
sequences = []
with open('file.txt', 'r') as f:
for line in f:
sequences.append(line)
new_list = list(set(sequences))
with open('new_file.txt', 'w') as f:
for seq in new_list:
f.write(seq)