2013-01-22 44 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成为一个列表本身,那就不应该是一个问题,只要你相应地使用它。

这是回答您的问题吗?