【发布时间】:2020-10-19 21:01:02
【问题描述】:
我正在尝试编写一个 python 代码来查找 DNA 序列中的限制性酶切位点。限制性内切酶切割特定的 DNA 序列,但有些没有那么严格,例如 XmnI 切割该序列:
GAANNNNTTC
其中 N 可以是任何核苷酸(A、C、G 或 T)。如果我的数学是正确的,那么它可以切割 4^4 = 256 个独特的序列。我想列出这 256 个短序列,然后根据(更长的)输入 DNA 序列检查每个短序列。但是,我很难生成 256 个序列。这是我目前所拥有的:
cutsequencequery = "GAANNNNTTC"
Nseq = ["A", "C", "G", "T"]
querylist = []
if "N" in cutsequencequery:
Nlist = [cutsequencequery.replace("N", t) for t in Nseq]
for j in list(Nlist):
querylist.append(j)
for i in querylist:
print(i)
print(len(querylist))
这是输出:
GAAAAAATTC
GAACCCCTTC
GAAGGGGTTC
GAATTTTTTC
4
所以它将每个 N 切换为 A、C、G 和 T,但我认为我需要另一个循环(或 3 个?)来生成所有 256 个组合。有没有我看不到的有效方法?
【问题讨论】:
-
所以每次出现“N”时,你都想替换
Nseq中的每个值 -
完全正确。将每个 N 切换为 A、T、G 或 C,并生成序列的每个组合。
-
要替换那些
N,您需要为每个N循环一个for,然后将它们替换为nseq的下一组可能结果。无论如何,我在下面发布了(我认为是)使用itertool's product 的解决方案。
标签: python string loops random sequence