PSET 6 DNA:如何计算连续 STR 的运行次数

Posted

技术标签:

【中文标题】PSET 6 DNA:如何计算连续 STR 的运行次数【英文标题】:PSET 6 DNA: How to count number of runs of consecutive STRs 【发布时间】:2020-12-26 05:13:10 【问题描述】:

我已经为 PSET6 编写了大部分代码,并且我明白了它的要点。但是我被一些围绕如何迭代 DNA 序列和计算最长连续 STR 序列的逻辑所困。对于没有参加 CS50 课程的人,我基本上必须实施一个程序,根据他们的 DNA 来识别一个人。为了解决这个问题,我必须遍历 DNA 序列并计算 DNA 子串重复的次数,并计算该子串连续运行的最长运行时间。这是我的代码

def count_substring(sequence_dna, substring):
        strcounter = 0
        run = []
        substring = strlist
        for i in range(len(sequence_dna) - len(substring)):
            while i < len(sequence_dna):
                if sequence_dna[i:i+len(substring)] == substring:
                    strcounter += 1
                    i += i + len(substring)
                    run += 1
                    run.append()
                else:
                    run = 0
                    i += i + len(substring)
        return max(run)

因此,我创建了变量来跟踪重复的总数 (strcounter) 和一个数组来跟踪最长连续运行的 STR 重复。我打开了 csvfile 并将第一行 STR 名称设置为子字符串。然后我遍历 DNA 文本文件并开始计算 STR 出现的次数,但这是我卡住的地方,因此我的代码不完整。我不确定如何编写代码并将运行次数添加到我创建的数组中。我也不确定返回最大值是否会取所有值的最大值或每个 STR 运行次数的最大值。谁能帮我?非常感谢任何建议(关于您看到的任何错误)!

【问题讨论】:

【参考方案1】:

Leoness,您似乎已将run 声明为与run = [] 的列表。稍后您将其用作带有run += 1 的int 变量,并再次用作带有run.append() 的列表。 考虑一下您希望如何对这部分逻辑进行编程。

计算运行和“最大”“长度”的另一种方法是使用 findall 方法使用正则表达式。

【讨论】:

是的,不幸的是,我在发布此问题后意识到了这一点。我决定使用 run 一个 int 来跟踪运行,然后创建另一个 int 变量来计算最长的运行。我摆脱了max() 函数,所以希望它现在能更好地工作。如果没有,我会检查findall 方法。谢谢!

以上是关于PSET 6 DNA:如何计算连续 STR 的运行次数的主要内容,如果未能解决你的问题,请参考以下文章

如何匹配 dna 序列模式

mfc下listbox控件显示字符串,实现字符格式输出的问题: 我知道%ns,但是显示有问题。求指导

如何进行dna回文序列分析

cs50 Pset4 图像模糊问题

关于 CS50 pset2 vigenere

PSET 2:Vigenere Cipher 部分工作?