我的問題關於列表/集成員的搜索效率。我想比較一小組基因組kmers(核苷酸串)到一個非常大的kmers列表來測試成員資格。由於該算法是爲大型真核生物基因組設計的,因此該大型列表可以達到GB範圍的列表。如何在Python中的超大型數據集上執行高效的成員資格搜索
較小的列表只會在KB範圍內,但可能有數百萬個這樣的列表!顯然,我迫切需要一種有效的方式來搜索這個大名單。
根據我所看到的類似問題,我不應該把大列表轉換成一個集合,因爲它會花費太多的內存。我一直在使用較小的列表作爲集合,但它並不能爲我節省大量的時間。
最後,一旦腳本完成,它將被設計爲運行在通常用於大型基因組算法的大型內存機器上。
謝謝
這聽起來像是一個前綴trie的工作 - http://en.wikipedia.org/wiki/Trie –
請提供您正在搜索的數據的示例以及您正在使用的代碼的近似值,以及您的預期產出。 –
如果您將有大型內存機器可用於處理將大型數據集作爲「集合」存儲在內存中,則可能是利用硬件最簡單的方法。大內存機器有多少內存? – SethMMorton