2013-07-31 137 views
0

今天我又遇到了一个问题。在非制表符分隔文件中查找序列

我有一个文件看起来像:

文件

>chr1 
ACGACTGACTGTCGATCGATCGATGCTCGATGCTCGACGATCGTGCTCGATC 
>chr2 
GTGACGCACACGTGCTAGCGCTGATCGATCGTAGCTCAGTCAG 
>chr3 
CAGTCGTCGATCGTCGATCGTCG 

等(basicly一个FASTA文件)。

在其他文件中我有我读一个很好的制表符分隔的信息:

文件B

chr2 0 * 2S3M5I2M1D3M * CACTTTTTGTCTA NM:i:6 

这两个文件是真正巨大的

我想编写一个需要做的一切,只有我有问题的部分:

如果来自文件B的归档chr2与文件A中的行> chr2匹配,请按文件顺序查找CACTTTTTGTCTA(fileB) A(仅在> chr2区域中按顺序排列。 Next> chr是一个不同的染色体,所以我不想在那里搜索)。

为了简化这个让我们来看看为:CACACGTGCTAG序列文件中的

我试图用字典文件A,但它是完全不可行的。

有什么建议吗?

+0

因此,您现在在做的是从文件A创建一个字典,其中的密钥是染色体和值是DNA序列?然后使用“fileBField in fileAfield”之类的东西来查看序列是否在适当的键的值? – seaotternerd

+0

是的,它非常“不智能”。但是我挖掘了下一个方法并做了一些改进 – Irek

回答

0

喜欢的东西:

for req in fileb: 
    (tag, pattern) = parseB(req) 
    tag_matched = False 
    filea = open(file_a_name) 
    for line in filea: 
     if line.startswith('>'): 
      tag_matched = line[1:].startswith(tag) 
     elif tag_matched and (line.find(pattern) > -1) 
      do_whatever() 
    filea.close 

应该做的工作,如果你可以写一个parseB功能。

相关问题