2
我寫了一些代碼,可以吐出指定長度,副本數量,指定概率等的dna序列。在IDLE中,程序工作正常,因爲我預設了我想要的概率。我希望這個程序能夠從命令行高效運行。如何將概率指定爲我的dna生成器的命令行參數?
如何使我的概率(權重)像命令行參數一樣運行,就像我對長度和副本數所做的一樣?我不知道如何將這些概率作爲參數併入命令行。謝謝你的幫助! 下面是代碼:
#!/usr/bin/env python
import sys
import random
weights=[.25,.25,.25,.25]
dna=['A','G','C','T']
def weighted_choice(weights,dna):
totals = []
running_total = 0
for w in weights:
running_total += w
totals.append(running_total)
rnd = random.random() * running_total
for i, total in enumerate(totals):
if rnd < total:
return dna[i]
def dna_gen(length):
seq=''
for i in range(length):
seq=seq+weighted_choice(weights,dna)
return seq
def dna_gen2(reps,length,weights,dna):
for i in range (reps):
print (dna_gen(length))
def main():
reps=int(sys.argv[1])
length=int(sys.argv[2])
weights=[float (w) for w in sys.argv[3:6]]
dna_gen2(reps,length,weights,dna)
if __name__=='__main__':
main()
在一個元素中將它們指定爲百分比,然後對其進行分割: 「25,25,25,25」 - > [0.25 0.25 0.25 0.25]。另外,當你解析命令行時,你可以填充'totals'和'running_total',以便每次調用'weighted_choice'時不重複相同的計算。 – LSerni
你應該看看'argparse'庫。它應該做你想做的。 http://docs.python.org/2/howto/argparse.html – chill0r