如何以最佳方式在python中搜索BIG文本文件?

时间:2019-05-23 09:17:52

标签: python pandas bigdata

我有一个很大的文本文件,里面带有DNA变体。文件有25GB,因此我什至无法通过标准编辑器打开它。我的RAM太低,无法全部读取为熊猫数据帧。我需要做什么?

我得到了另一个带有变体的文件。它们较小。拥有100-3000mb。所以我通常可以通过熊猫阅读它们。在这些文件中,我有重复的值。举个例子:

SNP_NAME SNP_NUMBER Allele1 Allele2
X1            Y1      A        C
X2            Y2      A        G
X3            Y3      G        C
X1            Y4      A        T

正如您在文件中所看到的,我有两个SNP,它们具有相同的Name和另一个numbersallels。在这种情况下,我需要使用该大文件验证正确的SNP并选择一个好的文件。

因此,如果在我的小文件中发现X1 Y1X1 Y4,我需要在大文件(它是参考文件btw)中找到一个X1 SNP,并检查{{1 }}。然后,当在大文件Alleles中有一个X1 SNPA个等位基因时,我需要从小文件删除C,这是不正确的。

直到我有了小的文件(也有引用),我才写了一个循环或字典,将两个文件都放入pandas数据框中并进行处理。 我从一个小的数据帧中创建了一个重复的SNP列表,将其与参考数据帧进行比较,并通过函数将其删除。现在,我不能只放那个大文件DF。

最后,我的问题是: 怎么处理呢?我有一些想法,但我认为它们都太慢了。我可以阅读小文件,找到重复的文件并保存为SNP的var名称。然后在清晰的python中(打开功能,我的意思是不将所有数据帧都读取到内存中,而是逐行读取)打开大文件并查找SNP名称。然后提取该行并保存到var中,然后与小型文件snps进行比较。但是...如果我有100次重复的SNP,该怎么办?这将花费很长时间。

有人可以帮助我一些建议吗?解决这个问题的典范?还是分享一些技术来处理类似的事情?

0 个答案:

没有答案