2014-10-08 81 views
0

我有一个关于如何查找字符串文件(特别是FASTA文件)中字符串(特别是DNA序列)完全匹配数的问题。我想要做的就像命令行中的“grep -c”字符串“file_of_strings.fasta”。我的代码如下:查找文件python中字符串的完全匹配数

count = 0 
for line in open("sequences.fasta"): 
    if sequence in line: 
     count += 1 

这似乎并不被计算在我的文件中的特定字符串的实例的数量,我不知道是什么原因。任何帮助将非常感激!

那么,这么一个FASTA文件的格式为:

>SEQUENCE_1 
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL 
>SEQUENCE_2 
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI 
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH 
+0

嗯似乎是正确的名单。你是不是在找子吧? – brunsgaard 2014-10-08 04:00:12

+0

你是否假设每行只有一次发生? – User 2014-10-08 04:03:37

回答

1
with open('file') as f: 
    print(f.read().count(sequence)) 
+0

所以我可以这样做:count = f.read()。count(sequence)? – user439463 2014-10-08 04:23:52

+0

是的..尝试一下;) – brunsgaard 2014-10-08 04:24:57

0

使用正则表达式(如果你不是假设每行一个比赛,你的代码假定每行一个匹配):

import re 
f = open("sequences.fasta") 
print len(re.findall(sequence, f.read())) 
f.close() 
  1. 阅读文件作为字符串
  2. 外观使用re.findall WH比赛ICH将返回一个包含匹配
  3. 从步骤计算列表的长度2