2013-01-22 47 views
-1

我寫了這個代碼重複在多個元素的函數

import sys 
file = open(sys.argv[1], 'r') 
string = '' 
for line in file: 
    if line.startswith(">"): 
     pass 
    else: 
     string = string + line.strip() 
#print (list(string)) 
w = input("Please enter window size:") 
test = [string[i:i+w] for i in range (0,len(string),w)] 
seq = input("Please enter the number of sequences you wish to read:") 
#print (test[0:seq]) 

它會產生看起來像這 -

['TAAAACACCC', 'TCAATTCAAG', 'GGTTTTTGAG', 'CGAGCTTTTT', 'ACTCAAAGAA', 'TCCAAGATAG', 'CGTTTAAAAA', 'TTTAGGGGTG', 'TTAGGCTCAG', 'CATAGAGTTT']

現在,下一步就是讀取一個列表的列表在列表的每個元素中出現GC(或可以是CG)的字母。有通過列表以這樣的方式,輸出文件看起來像一個地遍歷:

Segment 1- The %GC is <the calculated number> 
Segment 2- The %GC is <the calculated number> 
Segment 3- The %GC is <the calculated number> 

由於文件是wayy到大,段的數量i(列表等'TAAGATATA'的每個單獨的元件)將越來越巨大我不知道如何獲得輸出文件中的段的數字(1,2,3 ...)。另外,因爲我是python(和編程)的新手,我不太擅長使用函數。

+0

向我們展示您迄今爲止編寫的代碼,兄弟 –

+0

我不明白這個問題 - 您能給出一個更明確的例子,在這種情況下什麼是Segments? –

+0

@ TheodrosZelleke-它的一個生物程序。將花費很多時間來解釋,而且是不必要的。我想要的是循環遍歷文件,以便我可以得到段(list = segemnt的每個元素)編號及其相應的GC%(我可以小心) –

回答

1

我不確定你在問什麼。

inp = ['TAAAACACCC', 'TCAATTCAAG', 'GGTTTTTGAG', 'CGAGCTTTTT', 'ACTCAAAGAA', 'TCCAAGATAG', 'CGTTTAAAAA', 'TTTAGGGGTG', 'TTAGGCTCAG', 'CATAGAGTTT'] 

for i, segment in enumerate(inp): 
    print "Segment {} - The %GC is {}".format(i, segment.count("GC")) 

Segment 0 - The %GC is 0 
Segment 1 - The %GC is 0 
Segment 2 - The %GC is 0 
Segment 3 - The %GC is 1 
Segment 4 - The %GC is 0 
Segment 5 - The %GC is 0 
Segment 6 - The %GC is 0 
Segment 7 - The %GC is 0 
Segment 8 - The %GC is 1 
Segment 9 - The %GC is 0 
+0

i我正在使用python 2.7。它沒有格式功能,我想。 –

+0

就像我,並且有(這是一個字符串的實例方法)。 – katrielalex

0

你可以嘗試在Python中map功能。 http://docs.python.org/3.1/library/functions.html#map提供了它的一般用法,但這裏是一個使用Python3的例子。

def func1(myObject): 
    '''Trivial example function''' 
    return myObject * 2 
myList = [1,2,3] 
myMap = map(func1,myList) 
print(list(myMap)) 

地圖在一個可迭代(例如列表,字符串等)執行的每個項目的方法和每個方法的執行結果放置到地圖,然後可將其打印出來作爲一個列表或遍歷等一個列表。

如果你想讓你的myObject成爲一個列表本身,那就不應該是一個問題,只要你相應地使用它。

這是回答您的問題嗎?