1

指定された長さ、コピー数、指定された確率などの 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()
4

1 に答える 1

0

どうぞ:

#!/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))

if __name__=='__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)

コマンドラインで試してみると:

python nameOfYourScript.py 2 2 0.25 0.25 0.25 0.25

私は得る:

CG
GA
于 2014-03-25T13:59:03.203 に答える