數據類和重寫槽用於保存數據,減少內存占用,加快讀取速度。attrgetter對列表字典結構進行排序。biopython裏的SeqIO.parse感覺挺慢的,不過也懶得重寫了。用SimpleFastaParser解析,據說速度更快。實際測試表明確實比較快,主要是用來存儲支架或者染色體的長度,防止其超出邊界。
去重疊的原理是先排序,再判斷上壹個區間的結束是否小於下壹個區間的開始。如果是假的,就會重疊,根據長度/分數判斷是刪除上壹個區間還是下壹個區間。
下面操作的結果仍然是blast的表格格式(之後可以通過壹些簡單的shell命令處理,轉換成bed格式,結合bedtools批量提取序列)。
註意:如果您需要復制的格式不是blast表格格式,只需使用壹些工具如awk/sed/perl/python/shell來更改格式。妳只需要第二列的id,第九列的序列開始,第十列的序列結束,第十二列的分數才有意義。作為用於排序的字段,其余字段可以是默認的。