这里是python菜鸟。
我正在尝试以 fasta 格式组合一些蛋白质序列,然后删除重复项。我通过搜索找到了这段代码,它运行得很好,但我遇到了一个我无法理解的问题。这是导致错误的示例序列:
>someseq1
MKYFPLFPTLVFAARVVAFPAYASLAGLSQQELDAIIPTLEAREPGLPPGPLENSSAKLV
>firstseq with 5 mutations:
MKYFPLFPTLVFAARVVAFPAYASLAGLSQQELDAIIPTLEAREPGLPPGPLENSSAKLV
>secondseq with 9 mutations:
MKYFPLFPTLVYAVGVVAFPDYASLAGLSQQELDAIIPTLEAREPGLPPGPLENSSAKLV
>thirdseq
MISQSFVSLTVLLLGLVNLSPAFAFPQYGSLAGLSARDLNVLIPRLNEVDPPTPPGPLAYNGTKLVHDDA
>thirdone – in claim
MISTSKHLFVLLPLFLVSHLSLVLGFPAYASLGGLTERQVEEYTSKLPIVFPPPPPEPIKDPWLKLVNDR
原始文件和序列很长,所以为了方便起见,我缩短了它。
我在论坛上找到了这段代码,它运行良好并且写入了一个没有重复的新文件:
from Bio import SeqIO
import time
start = time.time()
seen = []
records = []
for record in SeqIO.parse("Prob2.fa", "fasta"):
if str(record.seq) not in seen:
seen.append(str(record.seq))
records.append(record)
#writing to a fasta file
SeqIO.write(records, "Checked.fa", "fasta")
end = time.time()
print(f"Run time is {(end- start)/60}")
现在,python 解释器给了我这个错误:
Traceback (most recent call last):
File "C:\Users\Arif\Desktop\DuplicateSequenceFinder\DuplicateFinder.py", line 10, in <module>
for record in SeqIO.parse("Prob2.fa", "fasta"):
File "C:\Users\Arif\AppData\Local\Programs\Python\Python311\Lib\site-packages\Bio\SeqIO\Interfaces.py", line 72, in __next__
return next(self.records)
File "C:\Users\Arif\AppData\Local\Programs\Python\Python311\Lib\site-packages\Bio\SeqIO\FastaIO.py", line 238, in iterate
for title, sequence in SimpleFastaParser(handle):
File "C:\Users\Arif\AppData\Local\Programs\Python\Python311\Lib\site-packages\Bio\SeqIO\FastaIO.py", line 50, in SimpleFastaParser
for line in handle:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 449: illegal multibyte sequence
我发现问题出在标题中,“-”字符写为“- in Claim”(列表中的第三个序列)。如果我删除它,它工作正常,但其他序列标题中也提到了其他“-”。我通过删除一半序列并检查它是否仍然给出错误来找到它。现在,如果我删除这个“-”并输入一个新的“-”,它就可以正常工作。所以我只是想了解这里真正的问题是什么。这样我以后就能以正确的输入格式书写。
我最初在Word中编写这些序列,后来在notepad++中编辑它们并将其另存为“.fa”文件。
其次,我想找出找到了多少重复项并提及记录 ID/标头。因此,如果有人可以帮助我应该插入哪些代码行,我将非常感激。