2013-05-08 72 views
1

Python庫我有一些大的基因組數據文件來分析,它有兩種形式,像這樣的個人劑量檔案:大型標籤/逗號分隔的文本文件

id      snp1 snp2 snp3 snp4 snp5 snp6 
RS1->1000001 DOSE 1.994 1.998 1.998 1.998 1.830 1.335 
RS1->1000002 DOSE 1.291 1.998 1.998 1.998 1.830 1.335 
RS1->100001  DOSE 1.992 1.998 1.998 1.998 1.830 1.335 
RS1->100002  DOSE 1.394 1.998 1.998 1.998 1.830 1.335 
RS1->10001  DOSE 1.994 1.998 1.998 1.998 1.830 1.335 
RS1->1001001 DOSE 1.904 1.998 1.998 1.998 1.830 1.335 
RS1->1002001 DOSE 1.094 1.998 1.998 1.998 1.830 1.335 
RS1->1003001 DOSE 1.994 1.998 1.998 1.998 1.830 1.335 
RS1->1004001 DOSE 1.994 1.998 1.998 1.998 1.830 1.335 
RS1->1005002 DOSE 1.994 1.998 1.998 1.998 1.830 1.335 

另包含一些概要信息:

SNP   Al1 Al2 Freq1 MAF  Quality Rsq 
22_16050607 G A 0.99699 0.00301 0.99699 0.00000 
22_16050650 C T 0.99900 0.00100 0.99900 0.00000 
22_16051065 G A 0.99900 0.00100 0.99900 0.00000 
22_16051134 A G 0.99900 0.00100 0.99900 0.00000 
rs62224609 T C 0.91483 0.08517 0.91483 -0.00000 
rs62224610 G C 0.66733 0.33267 0.66733 0.00000 
22_16051477 C A 0.99399 0.00601 0.99399 -0.00000 
22_16051493 G A 0.99900 0.00100 0.99900 -0.00000 
22_16051497 A G 0.64529 0.35471 0.64529 0.00000 

第二個文件中的SNP列對應於第一個文件中的snp1,snp2 ...。我需要使用第二個文件中的摘要信息進行一些質量檢查和選擇,然後相應地對第一個文件中的數據應用一些統計分析。

問題是,有沒有適合這項任務的Python庫?這裏的性能至關重要,因爲這些文件非常龐大。謝謝!

+2

「真的很大」有多大? – mgilson 2013-05-08 15:38:36

+0

在我的回答中,我給了你一個很好的模塊,但如果你更具體地說明你需要做什麼從文件到你的支票和選擇文件,我可以相應地更新我的答案! – 2013-05-08 15:41:45

+0

@mgilson數百萬列和數千行。 – qed 2013-05-08 16:08:41

回答

2

對於處理大文件和數據的高性能和高效率的操作,確實沒有比pandas

更好的模塊下面的代碼將讀取你的文件轉換成DataFrame,讓操控方便:

import pandas as pd 
data = 'my_data.csv' 
df = pd.read_csv(data) 

now df是一個包含您的數據的高效數據框!此外,你甚至不需要說它是製表符分隔符,因爲大熊貓「嗅探」爲分隔符

+0

正如@mgilson在他的回答中所提到的,數據庫也是一個可行的選擇,你如何將它與熊貓進行比較?謝謝! – qed 2013-05-08 16:10:43

+0

你問我是如何與大熊貓比較的,還是那種說法?哈哈我不能告訴 – 2013-05-08 16:19:29

+0

:),我的意思是它如何與熊貓比較。 – qed 2013-05-09 09:52:41

1

csv模塊。它的後端編寫了一個C,所以它應該表現非常好。也就是說,如果格式足夠簡單,str.split甚至可以更快

在我看來,不是使用CSV文件來存儲數據,某種數據庫可能是一個更好的選擇。

+0

哪一個你認爲更好,熊貓或數據庫?你能提供一個比較嗎?謝謝! – qed 2013-05-09 09:54:06