我想找到两个序列之间的相似性,为此我使用编辑距离。由于我有非常大的数据,我使用的是mongodb数据库 我的数据格式为
{
"POS": "*",
"MAPQ": "0",
"`SEQ": "AGGGTTAGGGTTAGGGTTAGGGCTAGGGTTAGGGTAAGGGTTAGGGTTAGGGTTAGGGTTAGGGTTATGGTTAGGGTTAGTGGTAGGGTTAGGTTTAGGGG"
},
{
"POS": "*",
"MAPQ": "0",
"`SEQ": "TAGGGTTAGTGGTAGGGTTAGGTTTAGGGG""
},
这里,如果我输入一个seq =" GATAGAAACCCTAACCCTCTAACCCTAACCCTCTAACCCTAACCCTCTAACAGTAACCCTATAGGGTTAGTGGTAGGGTTAGGTTTAGGGG"
for doc in fastqseq.find({}, {'SEQ':1,'_id':0}):
print doc
ed = edit_distance(doc,seq)
print ed
对于上面的代码,我得到的输出 文件" /Library/Python/2.7/site-packages/nltk/metrics/distance.py",第61行,在edit_distance中 _edit_dist_step(lev,i + 1,j + 1,s1 [i],s2 [j]) KeyError:0
感谢任何建议
打印文档的输出
{u'SEQ': u'ATCTGATATCCTGGAAAAGCACCCACACCCCCAGGTGAGCATCTGACAGCCTGGAACAGCATCCACAACCCCAGGTGAACATCCGACAGCCTGAAGCAGAA'}
{u'SEQ': u'TGTTCCAGGCTGTCAGAGGCTCACCTGGGCGGGGGGGGGCTGTTTCAGTCTGTCAGATGCTCCCCTGGGGGGGGGGGTTCTGTTCCAGGCTGCAGGATGCT'}
{u'SEQ': u'GGGGGTGTGGGTGCTGTTCCAGGCCGTCAGATGCTCACTTGGGGGTGCAGGGTGCTGTTCCAGTCTGTCAGATGCTCACCTGGGGGTGTGGGTTGTGTTCC'}
答案 0 :(得分:0)
您需要将一个字符串与另一个字符串进行比较。 doc
是一本字典,因此您无法像使用它一样使用它。
未经测试,但这个一般性的想法应该起作用:
docs = fastqseq.find({}, {'SEQ':1,'_id':0})
for d1 in docs:
for d2 in docs:
distance = edit_distance(d1['SEQ'],d2['SEQ'])
// use the distance variable here