指定された長さ、コピー数、指定された確率などの DNA シーケンスを吐き出すことができるコードをいくつか書きました。 IDLE では、必要な確率を事前に設定すると、プログラムは正常に動作します。このプログラムをコマンドラインから効率的に実行したい。
長さとコピー数に対して行ったように、確率 (重み) をコマンド ライン引数として実行するにはどうすればよいですか? コマンドラインで確率を引数として組み込む方法がわかりません。ご協力いただきありがとうございます!コードは次のとおりです。
#!/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()