在defaultdict中使用levenshtein距離我正在做一些測序分析,我試圖根據一些標識符創建基因序列的默認字典。所以,在看下面的例子中,我創建了一個字典,並把兩個序列AGAGAG
和ATATAT
在同一個列表中,因爲他們有CCCCCC
相同的標識符:python
輸入:
CCCCCCAGAGAG
CCCCCCATATAT
代碼:
from collections import defaultdict
d = defaultdict(list)
d['CCCCCC'].append('AGAGAG')
d['CCCCCC'].append('ATATAT')
我的問題是,如果密鑰序列是1:1的Levenshtein距離內我希望它被視爲相同的密鑰。所以,如果我碰到過,看起來像這樣的順序:
CCCCCTACACAC
我想通過字典來看看,看看有CCCCCC
,看到distance('CCCCCC', 'CCCCCT') < 2
所以也許改變CCCCCA
到CCCCCC
,然後添加到同一列表,以上。
希望有這樣做的好方法。謝謝。
對於你的例子,你的意思是'距離('CCCCCC','CCCCCT')<2'? – Kasramvd
你是說前六個字是鑰匙?字符串也可以是字母的任意組合嗎? –
如果你考慮每個字符串的每個字符串在LD方面,那麼你將會做太多的計算。最重要的是首先排序所有鏈接。您應該對'CCCCCC'長度字符串的每個索引進行排序,然後比較幾個附近的字符串(如果我們談論的是數百萬個字符串)。 「一對夫婦」的定義取決於你的組合的大小。無論如何,在這種情況下,你只需要做比較少的比較。 – PascalVKooten