我有一个脚本需要花费很多时间,并且在2天之后无法完成...我将1个文件解析为2个字典,如下所示:
gfftree = {'chr1':[(gene_id, gstart, gend),...], 'chr2':[(gene_id, gstart, gend),...],...}
TElocation = {'chr1':[(TE_id, TEstart, TEend),...], 'chr2':[(TE_id, TEstart, TEend),...],...}
Run Code Online (Sandbox Code Playgroud)
.
- 目的是找到TE_id,其TEstart或TEend或两者都位于每个chr(密钥)中的gene_id'gstart和gend之间.
这是我的代码:
TE_in_TSS = []
for TErange in TElocation[chromosome]:
TE_id, TEstart, TEend = TErange
for item in gfftree[chromosome]:
gene, gstart, gend = item
if len(list(set(range(int(gstart),int(gend)+1)) & set(range(int(TEstart),int(TEend)+1)))) > 0:
TE_in_TSS.append((gene, TE_id, TEstart, TEend))
else:
pass
Run Code Online (Sandbox Code Playgroud)
到目前为止,我确信这个循环对于小数据很好,但是当涉及到800,000 TE_id和4,000 gene_id等更大的循环时,需要时间......而且我不知道它是否可以完成......