輸入是一個製表符分隔的文件。行是變量,列是樣本。變量可以假定三個值(00,0,11,11),並按照需要修飾的順序列出(v1-> vN)。有大量的行和列,所以輸入文件需要以塊的形式讀取。
輸入如下:
s1 s2 s3 s4 v1 00 00 11 01 v2 00 00 00 00 v3 01 11 00 00 v4 00 00 00 00 (...)
我所試圖做的是輸入拆分成幾排,這裏的作品是足夠的樣品是每一個獨特的只是大的碎片。在上面的例子中,從v1開始,第一個塊應該在v3處結束,因爲在該點有足夠的信息表明樣本是唯一的。下一個塊將從第4版開始並重復該過程。任務在達到最後一行時結束。塊應打印在輸出文件中。
我嘗試:
我試圖做的是使用CSV模塊以產生由列表組成的陣列,每個含有單一變量的狀態(00,01,00)適用於所有樣品。或者,通過旋轉輸入,爲每個變量創建包含樣本狀態的列表。如果最好使用v1 = ['00','00','11','01']或者s1 = ['00',我會問這個工作應該專注於列還是行,,即。 ,'00','01','00',...]
以下代碼是指我試圖將列問題更改爲行問題的旋轉操作。 (對不起,我笨拙的Python語法,是我能做的最好的)
my_infilename='my_file.txt'
csv_infile=csv.reader(open(my_infilename,'r'), delimiter='\t')
out=open('transposed_'+my_infilename, 'w')
csv_infile=zip(*csv_infile)
line_n=0
for line in csv_infile:
line_n+=1
if line_n==1: #headers
continue
else:
line=(','.join(line)+'\n') #just to make it readable to me
out.write(line)
out.close()
什麼是解決這個問題的最好方法是什麼? pivoting可以有任何幫助嗎?有沒有我可以依賴的內置函數?
那麼,您的問題是什麼? – Marcin 2012-04-17 15:32:49
基本上,如何用一個循環放下腳本,這將允許我識別區分每個樣本所需的最小數量的有序變量。 – cometarossa 2012-04-17 15:48:59
這與您發佈的代碼有什麼關係?這個問題的哪一部分是有問題的?現在,這篇文章聽起來像「我試圖解決這個問題,但不能,那麼你能做到嗎?」 – Marcin 2012-04-17 15:52:20