我有一个很大的文本文件,里面带有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
和另一个numbers
和allels
。在这种情况下,我需要使用该大文件验证正确的SNP并选择一个好的文件。
因此,如果在我的小文件中发现X1 Y1
和X1 Y4
,我需要在大文件(它是参考文件btw)中找到一个X1 SNP
,并检查{{1 }}。然后,当在大文件Alleles
中有一个X1 SNP
和A
个等位基因时,我需要从小文件删除C
,这是不正确的。
直到我有了小的文件(也有引用),我才写了一个循环或字典,将两个文件都放入pandas数据框中并进行处理。 我从一个小的数据帧中创建了一个重复的SNP列表,将其与参考数据帧进行比较,并通过函数将其删除。现在,我不能只放那个大文件DF。
最后,我的问题是: 怎么处理呢?我有一些想法,但我认为它们都太慢了。我可以阅读小文件,找到重复的文件并保存为SNP的var名称。然后在清晰的python中(打开功能,我的意思是不将所有数据帧都读取到内存中,而是逐行读取)打开大文件并查找SNP名称。然后提取该行并保存到var中,然后与小型文件snps进行比较。但是...如果我有100次重复的SNP,该怎么办?这将花费很长时间。
有人可以帮助我一些建议吗?解决这个问题的典范?还是分享一些技术来处理类似的事情?