我正在使用Python字典将DNA碱基读取到密码子中,但是希望程序识别是否输入了废话。目前发生的所有情况是使用类似的东西时出现一个关键错误
"密码子 += cod[F[x]]">
有没有办法在碱基字符串(AGCTATATCAT)(例如)中搜索字典中找不到的字符串?例如,如果其他不是 ACGT 的角色在其中,我将如何检测到这一点?
谢谢
您可以通过执行以下操作来检查字符串中的所有字符是否都在给定set
中:
if set(string).difference(set("AGCT")):
# There are characters other then 'AGCT' in string
else:
# All characters in the string are one of "AGCT"
验证字符串中的每个字符是否为有效基数的一种快速方法是使用set.issuperset
方法。例如,
valid_bases = set('ACGT')
for s in ('AGCTAT', 'ATCQAT'):
print(s, valid_bases.issuperset(s))
输出
AGCTAT True
ATCQAT False
如果要识别非法字符,可以使用设置差值:
valid_bases = set('ACGT')
for s in ('AGCTAT', 'ATCQAT', 'ATCQAZT'):
bad = set(s) - valid_bases
print(s, bad or "ok")
输出
AGCTAT ok
ATCQAT {'Q'}
ATCQAZT {'Z', 'Q'}