我是一名Python初学者,我正在编写代码以在随机位置生成随机突变。 我写了一个函数,其中包括:
代码的基本概念:
说,我们必须从(A)篮中挑一个球,然后从另一个篮(B)中换另一个球。两个球的颜色必须不同。
我知道我需要使用while循环,但是我做不到。
def random(s)
length = len(s)
seq = list(s)
nucl = "ATGC" ## pick one nucleotide from this list
lengthnucl= len(nucleotide_list)
position_orgseq = np.random.choice(range(0,length))
position_nucl = np.random.choice(range(0,lengthnucl))
#while c < length:
##if the two nucleotides chosen are not equaul then:
#two nucleotides are from
# TTTTGGGCCCCAAA - original seq, ATGC = nucloetide list
if seq[position_orgseq] != nucleotide_list[position_nucl]:
seq[position_orgseq] = nucleotide_list[position_nucl]
final = "".join(seq)
return s,final
actual_seq, mut_seq = random("TTTTGGGCCCCAAA")
print(actual_seq)
print(mut_seq)
答案 0 :(得分:0)
首先,正如@Error-注释中的Syntatical Remorse所述,无需导入numpy,而应使用内置的random(特别是,您可以使用random.randint())。
您的代码没有运行,您的变量名错误。除此之外,您很亲近。您对使用while循环的直觉是正确的。您可以简单地继续循环,直到两个随机值在两个列表中没有给出相同的核苷酸为止。像这样:
from random import randint
def random(s):
length = len(s)
seq = list(s)
nucl = "ATGC"
lengthnucl = len(nucl)
position_orgseq = randint(0, length - 1)
position_nucl = randint(0, lengthnucl - 1)
while seq[position_orgseq] == nucl[position_nucl]:
position_orgseq = randint(0, length - 1)
position_nucl = randint(0, lengthnucl - 1)
seq[position_orgseq] = nucl[position_nucl]
final = "".join(seq)
return s, final
actual_seq, mut_seq = random("TTTTGGGCCCCAAA")
print(actual_seq)
print(mut_seq)
这可能会进一步优化。