Pymongo,如何查找字段值和输入字符串的编辑距离

时间:2014-08-05 12:36:10

标签: mongodb pymongo

我想找到两个序列之间的相似性,为此我使用编辑距离。由于我有非常大的数据,我使用的是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'}

1 个答案:

答案 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