2013-05-08 45 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