2015-04-29 74 views
1

我需要的程序用3行對齊的dna序列(每個長度爲'n')讀取一個文本文件,並打印出長度爲'n'的隨機列。Python-如何每次重複循環獲得新結果?

The alignment text

如果您不想點擊的東西,它本質上是這樣的:

AGAACGC 
AACCTAG 
AGCTCAC 

這是我的計劃:

import random 

file = open('3seq.txt', 'r') 

seq1 = file.readline().strip() 
seq2 = file.readline().strip() 
seq3 = file.readline().strip() 

length = len(seq1) 


rand1 = '' 
rand2 = '' 
rand3 = '' 

for blah in range(length): 
    x = random.randrange(length) 
    rand1 += seq1[x] 
    rand2 += seq2[x] 
    rand3 += seq3[x] 
print rand1 
print rand2 
print rand3 

結果會是這樣的:

ACAGGAA 
ATAAACA 
ACAAGTA 

如果不太清楚,我很抱歉。

所以,問題是這樣的:

我怎樣才能改變我的計劃,使我得到「x」的結果數量?說我想3個結果:

ACAGGAA 
ATAAACA 
ACAAGTA 

AGCCCAA 
CAGGGAC 
CACCCAC 

CGACGCA 
TAAGATC 
CAACGCC 

我得到我想要的答案......我只是想要更多的它打印出來。

任何幫助?

+0

封裝當前的腳本功能,並稱之爲'內循環3'倍。 – ZdaR

+1

似乎有點類似[這個問題](http://stackoverflow.com/questions/29932251/generating-random-string-from-a-different-string-in-python)。同學? – TigerhawkT3

回答

0

清理代碼一點點,對於指定的工作創造一個功能,它看起來是這樣的:

import random 
sequence = open('3seq.txt', 'r') 
seq1, seq2, seq3 = sequence.readlines() 
sequence.close() 

x = 3 

def get_random(seq1, seq2, seq3): 
    length = len(seq1) 

    rand1 = '' 
    rand2 = '' 
    rand3 = '' 

    for i in range(length): 
     x = random.randrange(length) 
     rand1 += seq1[x] 
     rand2 += seq2[x] 
     rand3 += seq3[x] 
    print rand1 
    print rand2 
    print rand3 
    print 

for j in xrange(x): # 'x' being defined at the top. 
    get_random(seq1, seq2, seq3) 
+0

非常感謝!這清除了如何使用功能相當不錯。 –

+0

非常高興能夠幫助您,您還可以通過提高答案並用綠色標記標記它,如果這真的滿足您的問題,也可以表示讚賞。謝謝。 – ZdaR

+0

還有一個小問題。是否有理由使用'xrange'而不是'range'?我在我的程序中將它們互換,並且在任何情況下似乎仍然可以正常工作。 –

相關問題