如何使用列表和循环来计算二核苷酸对的出现?

2024-09-30 06:18:50 发布

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

我有一个DNA文本文件,我需要特别使用列表和循环来计算二核苷酸对的出现次数(例如:AA、AC、AT、AG、CA、CC…等等),然后再次使用列表和循环将计数打印到一个新的文本文件中,作为一个表,表中有两列,由一个选项卡分隔:二核苷酸序列和计数。我知道如何在很长的一段时间内做到这一点(将每一对存储在变量中,然后使用count计算出现次数,然后打开文本文件并将每个计数打印到文本文件),但我现在刚刚开始学习列表和循环,并对我将如何做到这一点感到困惑

例:我就是这样做的:

dna1.txt是我电脑上dna序列文本文件的(随机)示例:

随机序列(即dna1.txt):

AggAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgAgCtAgCtAgCtAgCtAgCtAgCtAgAgAgAgAgAgAg CTAGTAATGAGTGCTGGTATAGTGATAGCGTCTAGAGTCATTCTGTAGCAGTTATGCC GTGGATATATCCATAGACGACACTGGGTGCTCCAGCACCACGTACAGAGACGAC TGCGATGATAGAGGTGAGCTAAACGTTCTACACCACATGAATCATCAGCCGGGT AGATTGCCAGGCGTGGTAACGGGTACGTGGCGGATCTCGCGCGCAGTCAC ACCCGAATCTTTCGTCGACTACGGAGCGATCGATCGAGAGCGGGCTTGATTGAGCTCCT CATGGATTAGGCTGAGGTCAACCTTCGCATGGAGCCTCGGGCATTTAAGGTCGACTGTCG

dna_txt = open("dna1.txt")
dna_txtcontents = dna_txt.read()
aa_count = dna_txtcontents.count("aa")
print str(aa_count)

然后为每一对继续,然后将每一个计数存储在一个新的文本文件中,但我如何通过使用列表和循环来对每一对的两个出现进行计数,然后将计数存储在一个新的文本文件中,从而使我自己变得更容易呢?哦,还要确保程序可以工作,不管序列是大写还是小写

谢谢


Tags: txt列表count序列次数acdnaaa
1条回答
网友
1楼 · 发布于 2024-09-30 06:18:50

您可以使用^{}创建所有二核苷酸对。要使其不区分大小写,请将所有内容转换为小写(或大写)

import itertools

with open("dna1.txt") as dna_txt:
    dna_txtcontents = dna_txt.read().upper()

nt_pair_counts = {}
for nt_pair in itertools.product('ACTG', repeat=2):
    nt_pair = "".join(nt_pair)
    nt_pair_counts[nt_pair] = dna_txtcontents.count(nt_pair)

with open("out.txt", "wt", encoding="utf-8") as fd:
    for nt, count in nt_pair_counts.items():
        print(nt, count, sep="\t", file=fd)

相关问题 更多 >

    热门问题