需要计算有DNA序列的.txt文件中“AGAT”、“AATG”和“TATC”重复的次数

2024-09-29 02:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一个编码类,每次DNA序列中出现一个给定值时,我都很难让计数器增加

到目前为止,我的代码是:

agat_Counter = 0
aatg_Counter= 0
tatc_Counter= 0
DNAsample = open('DNA SEQUENCE FILE.txt', 'r');
for lines in DNAsample:
    if lines in DNAsample=='AGAT':
        agat_Counter+=1
    else:
        agat_Counter+=0
print(agat_Counter)
    
for lines in DNAsample:
    if lines in DNAsample=='AATG':
        aatg_Counter+=1
    else:
        aatg_Counter+=0
print(aatg_Counter)
for lines in DNAsample:
    if lines in DNAsample=='TATC':
        tatc_Counter+=0
    else:
        tatc_Counter+=0
print(tatc_Counter)

Tags: in编码forifcounter计数器序列else
2条回答

这应该行得通。问题在于你的if语句。正如您迭代一次文件一样,文件指针位于末尾(我认为),因此它不会返回。下面的代码一次遍历一行,并将字符串与4个字符的序列进行比较,注意.strip()会在文件遍历时删除\n变量中的尾随\n\r字符

通常,在打开文件时,最好使用with open(filename, mode) as var:,如下所示,这样可以在文件完成后立即关闭文件,并消除未关闭文件句柄的风险

基于原始代码的假设是DNA SEQUENCE FILE.txt文件是这样组织的:

AGAT
AATG
...
agat_Counter = 0
aatg_Counter= 0
tatc_Counter= 0

with open('DNA SEQUENCE FILE.txt', 'r') as DNAample:
    for line in DNAsample:
        strippedLine = line.strip()
        if strippedLine == 'AGAT':
            agat_Counter += 1
        elif strippedLine == 'AATG':
            aatg_Counter += 1   
        elif stripepdLine == 'TATC':
            tatc_Counter += 1

print(agat_Counter)
print(aatg_Counter)
print(tatc_Counter)

你可以用很多方法做到这一点。其中一个更简单的方法是:

DNAsample = open('DNA SEQUENCE FILE.txt', 'r').read()
agat_Counter = DNAsample.count('AGAT')
aatg_Counter= DNAsample.count('AATG')
tatc_Counter= DNAsample.count('TATC')

相关问题 更多 >