有两个问题我想问任何熟悉纽比的人。我已经看到了非常相似的问题(和答案),但没有一个使用numpy,我想使用它,因为它提供了许多其他选项,我可能希望在未来的代码中使用。 我尝试在python中使用“random”生成一个随机核苷酸序列列表。因为我想要非均匀概率,所以我决定用numpy代替。但是,我得到了错误消息:“ValueError:a必须是一维或整数”。在
import numpy as np
def random_dna_sequence(length):
return ''.join(np.random.choice('ACTG') for _ in range(length))
with open('dna.txt', 'w+') as txtout:
for _ in range(10):
dna = random_dna_sequence(100)
txtout.write(dna)
txtout.write("\n")
print (dna)
我是一个彻底的磨砂工,我不知道多维性在哪里或如何发挥作用。我怀疑“.join()”,但我不确定如何替换它。 我的另一个问题是如何得到非均匀概率。我试过了”np.随机选择('ACTG',p=0.2,0.2,0.3,0.3)“但它不起作用。在
我希望有人能帮上忙。提前谢谢。在
您好, 伯特
就随机序列函数而言,我得到了与mhawke相似的解决方案。然而,我正在生成一个与人类基因组1号染色体一样长的序列,而且我的方法花费了几乎一分钟的时间,所以我尝试了mhawke的方法,看看我是否有任何速度上的提高。相反,它花了大约10倍的时间。因此,对于处理大序列的任何人,我建议对return语句进行以下更改:
这基本上让numpy执行循环,它做的效率更高。我希望这有帮助。在
对于问题的第一部分,请将
a
作为列表传递:或者将基定义为列表或元组:
^{pr2}$第二部分有一个类似的解决方案:将概率作为列表或元组传递:
相关问题 更多 >
编程相关推荐