python - CS50 PSET6 - DNA - 适用于 SMALL 但不适用于 LARGE 数据库
问题描述
我正在使用 CS50 并被困在这个 pset6 上。
我制作了这段代码,它适用于“小型”给定数据库。在“大”上,我的 DNA 序列值错误。就像,使用 debug50 我得到 Albus 序列应该是 15,49,38... 而我的序列是 21,55,64...
怎么了?以及为什么它适用于小型数据库而不是大型数据库?
谢谢您的帮助!
# Import ARGV and CSV library
from sys import argv, exit
import pandas as pd
import csv
# Check if argv has 3 arguments (program name, cvs file and dna sequence)
while True:
if len(argv) != 3:
print("Usage: python dna.py data.csv sequence.txt")
exit(1)
else:
break
with open(argv[2], 'r', encoding="UTF-8") as txt:
dna_seq = txt.read()
#Find the number of STR - AGATC,TTTTTTCT,AATG,TCTAG,GATA,TATC,GAAA,TCTG
AGATC = dna_seq.count("AGATC")
TTTTTTCT = dna_seq.count("TTTTTTCT")
AATG = dna_seq.count("AATG")
TCTAG = dna_seq.count("TCTAG")
GATA = dna_seq.count("GATA")
TATC = dna_seq.count("TATC")
GAAA = dna_seq.count("GAAA")
TCTG = dna_seq.count("TCTG")
name = 0
if argv[1] == "databases/small.csv":
with open(argv[1], 'r') as csv_file:
reader = csv.DictReader(csv_file)
for row in reader:
dna_db = row['name'], row['AGATC'], row['AATG'], row['TATC']
dna_db = list(dna_db)
seq = [AGATC, AATG, TATC]
seq = [str(x) for x in seq]
if dna_db[1:4] == seq:
name = dna_db[:1]
break
else:
name = "No match"
elif argv[1] == "databases/large.csv":
with open(argv[1], 'r') as csv_file:
reader = csv.DictReader(csv_file)
for row in reader:
dna_db = row['name'], row['AGATC'], row['TTTTTTCT'], row['AATG'], row['TCTAG'],
row['GATA'], row['TATC'], row['GAAA'], row['TCTG']
dna_db = list(dna_db)
seq = [AGATC,TTTTTTCT,AATG,TCTAG,GATA,TATC,GAAA,TCTG]
seq = [str(x) for x in seq]
if dna_db[1:9] == seq:
name = dna_db[:1]
break
else:
name = "No match"
print(name)
解决方案
推荐阅读
- html - 从另一个组件调用函数时,函数内部的对象未执行
- apache - 在 CentOS7 旧路由的 apache2 (httpd) 中重定向到新路由
- dart - 如果不适合侧面,如何在 Flutter 中将文本定位在图像下方?
- python-3.x - np.random.seed 与 random_state 有什么区别?
- javascript - 重新加载时如何让网页重新访问数据库
- android - 如何从视图中调用活动方法?
- javascript - 如何使用单个脚本更改多个元素的样式?
- facebook - 查询使用该服务的facebook用户的好友列表
- reactjs - 如何使用 React Hooks 测试 hoc 有状态组件?
- encryption - EnvoyProxy、Diffie Hellman Key 和 ssl 安全性