- 论坛徽章:
- 0
|
本帖最后由 hulnglei 于 2010-06-09 10:33 编辑
回复 hulnglei
用树写其实也不难,不过最好还是用C语言写,才能够达到飞快,不过这个比较费时间了。我 ...
HyryStudio 发表于 2010-06-03 19:41 ![]()
这样我顺便再问下,有兴趣的高手可以帮忙想下。如果两个字符串不是只有一个字符不同。有两个,三个,或者四个呢? 在生物上面单个字符可以解释为SNP, 2-4个也是可以解释为单倍型。也是有很用。- fo = file("out_3snp.txt",'w')
- for keya,vala in self.adict.items():
- if vala in self.bdict:
- continue
- else:
- for i1 in range(5, 31):
- for j1 in 'ACGT':
- if vala[i1] == j1:
- continue
- else:
- b1= vala[0:i1]+j1+vala[i1+1:31]
- for i2 in range(5,31):
- if i2==i1:
- if (b1 not in self.cdict) and (b1 in self.bdict):
- print >> fo, keya, self.bdict[b1][0], vala[:31], i1+1, vala[i1+32]
- break
- else:
- for j2 in 'ATCG':
- if vala[i2] == j2:
- continue
- else:
- b2 = b1[0:i2]+j2+b1[i2+1:31]
- for i3 in range(5, 31):
- if i3==i1 or i3==i2:
- if (b2 not in self.cdict) and (b2 in self.bdict):
- print >> fo, keya, self.bdict[b2][0], vala[:31], i1+1, vala[i1], j1, vala[i1+32],
- i2+1, vala[i2], j2, vala[i2+32]
- break
- else:
- for j3 in 'ACGT':
- if vala[i3] == j3:
- continue
- else:
- b3 = b2[0:i3]+j3+b2[i3+1:31]
- if (b3 not in self.cdict) and (b3 in self.bdict):
- print >> fo, keya, self.bdict[b3][0], vala[:31], i1+1, vala[i1], j1, vala[i1+32], i2+1, vala[i2], j2, vala[i2+32], i3+1, vala[i3], j3, vala[i3+32]
- -- INSERT --
复制代码 |
|