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 的运行次数的主要内容,如果未能解决你的问题,请参考以下文章