1

我有一些大的基因组数据文件要分析,它们有两种形式,一种是这样的单独剂量文件:

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 库?性能在这里至关重要,因为这些文件真的很大。谢谢!

4

2 回答 2

2

对于处理大型文件和数据的高性能和高效操作,真的没有比pandas更好的模块了

以下代码会将您的文件读入 aDataFrame并允许轻松操作:

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

现在df是一个包含您的数据的高效数据框!此外,您甚至不需要说它是制表符分隔符,因为熊猫“嗅探”分隔符

于 2013-05-08T15:37:27.047 回答
1

csv模块。它是用C后端编写的,所以它应该表现得很好。也就是说,如果格式足够简单 ,str.split可能会更快。

在我看来,与其使用 CSV 文件来存储数据,不如使用某种数据库可能是更好的选择。

于 2013-05-08T15:37:37.313 回答