首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中存储大数据的有效方法(全基因组分析)

在Python中存储大数据的有效方法(全基因组分析)
EN

Stack Overflow用户
提问于 2016-12-07 14:58:53
回答 2查看 594关注 0票数 0

我目前正在尝试进行全基因组分析,我真的想知道我是否使用了正确的结构格式。我在网上找不到关于如何以及在哪里存储数据以提高效率的真实信息。

在这种情况下,数据是这样组织的:

一个文件(.ped) =一个染色体

一条染色体= 3000条线

一行=一个个体,它的身份和它的基因型(超过10万个字符)。

整个文件不仅仅是1,2个Go。我用酸菜来加载它。

我尝试了不同的存储数据的方法,例如,如果我将所有文件放在一个列表中,只需要30秒就可以存储来自4个文件的数据:

代码语言:javascript
运行
复制
pedFile = [
[['G01231GHS', 'G01231GHS', 0, 0, 1, 1], 'ATTTCTC', 'TGTCT00CTGA'],
[['G01324GHS', 'G01324GHS', 0, 0, 1, 1], 'ATT0TAG', 'TGCT000ATGA']
]

其中第一个字符串是第一个染色体分析,等等。

代码语言:javascript
运行
复制
index_chr = {'chr2':1, 'chr5':2, 'chr13':3, 'chr16':4}

我也尝试过这种类型的结构:

代码语言:javascript
运行
复制
pedDico = {
'G01231GHS': {'id':['G01231GHS', 'G01231GHS', 0, 0, 1, 1], 'chr2': 'ATT0CTC', 'chr5': 'TGTCT00CTGA'},
'G01324GHS': {'id':['G01324GHS', 'G01324GHS', 0, 0, 1, 1], 'chr2':'ATT0TAG', 'chr5': 'TGCT000ATGA'}
}

但上面的结构似乎都没有更有效的。

问题是需要过滤数据,这意味着使用for循环来比较个体之间的数据,这意味着它需要几个小时才能运行。我也尝试了numpy数组,但构建它需要太多时间。

你能想到一个更智能的结构吗?尝试使用列表、字典或numpy数组来处理如此庞大的数据,我是不是完全搞错了?

EN

回答 2

Stack Overflow用户

发布于 2016-12-07 16:13:24

我想你想要shelve。它会清理你的字典,但一次只能解开一个词条。

代码语言:javascript
运行
复制
import shelve
db=shelve.open(filename,writeback=True)
db.update(pedDico)
db.close()

然后当你以后想要使用它的时候

代码语言:javascript
运行
复制
import shelve
db=shelve.open(filename)
for dbKey in list(db.keys()):
    data=db[dbKey]  #only unpickle this dictionary entry
    #Do stuff with data
    db.sync() #clear db[dbkey] out of memory and move on

通过这种方式,您不必一直将大型数据库装入和装出内存。

票数 0
EN

Stack Overflow用户

发布于 2016-12-07 16:45:59

基因组测序是一项计算繁重的任务,正如所描述的那样,有大量的数据。也许python不是做这件事的合适工具。看看一些图形处理器加速的方法,比如BarraCUDA (http://seqbarracuda.sourceforge.net/index.html)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41011236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档