我試圖按照文件中序列的字母順序(而不是序列的ID)對fasta文件進行排序。 fasta文件包含200多個序列,我試圖在一個位主(使用python代碼)內找到重複數據(通過重複數據表示幾乎相同的蛋白質序列,但不是相同的ID)。 所以我想從fasta文件中創建一個字典,然後對字典的值進行排序。 我想使用的代碼如下:「NotImplementedError:SeqRecord」當使用排序在使用SeqIO解析的fasta文件時使用SeqIO
from Bio import SeqIO
input_file = open("PP_Seq.fasta")
my_dict = SeqIO.to_dict(SeqIO.parse(input_file, "fasta"))
print sorted(my_dict.values())
我不斷收到此消息錯誤:
"Traceback (most recent call last):
File "sort.py", line 4, in <module>
print sorted(my_dict.values())
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Bio/SeqRecord.py", line 730, in __lt__
raise NotImplementedError(_NO_SEQRECORD_COMPARISON)
NotImplementedError: SeqRecord comparison is deliberately not implemented. Explicitly compare the attributes of interest."
我也試圖尋找如何鰭這個錯誤,但有多少ares't有關這方面的信息,以及我讀到的很少的信息,這些信息顯然是說存儲在詞典字典中的序列長度可能是一個問題?如果是這樣,如何在沒有SeqIO的情況下對fasta文件進行排序?
你的字典是否像'{fasta_header:sequence}'? –
這意味着'SeqRecords'不是可比較的,所以它們不能被排序。你想用什麼關鍵字來排序?像'sorted(my_dict.values(),key = operator.attrgetter('seq'))''可能會工作。 – mata
@mata可以說我有這個文件作爲輸入: > seq0 ABCWYXO > SEQ1 IJKLMNOP > SEQ2 BCDEFGH > SEQ3 ABCDEFG 我所要的輸出是一個文件安排是這樣的: > SEQ3 ABCDEFG > seq0 ABCWYXO > SEQ2 BCDEFGH > SEQ1 IJKLMNOP 基本上由蛋白質序列的字母順序排序他們了...所以我想比較喜歡一個序列(〜應變g)在一個循環中對另一個字符進行排序,並以這種方式對它們進行排序。能夠根據該順序將它們放置在新文件中,並且每次都檢索自己的ID ... –