我有一个CSV文件,看起来像这样:
(在我的CSV中没有标题,但为了清楚起见,我在这里添加了标题)
geneName, personNumber, allele1, allele2
gene-1-A, PERSON1, C, G
gene-2_s, PERSON1, A, C
gene_3_D, PERSON1, T, T
.
.
.
gene-1_A, PERSON2, G, G
gene_3_D, PERSON2, A, C
.
.
etc.
每个人可以有50k个基因,在文件中,我有400个人。
我需要实现一些条件,比如:
if personX has allele1 in gene-1_A = "A" AND allele1 in gene-1_A = "B" then add to results.txt "PersonX 'cancer possible'"
在这种情况下很重要:
有时需要检查2个基因。
例如:
if (gene1 = 'A' AND 'B') AND (gene213213 = 'G' AND 'G') THEN add then add to results.txt "PersonX 'cancer possible'"
但条件不是问题。我可以写。但是在文件中搜索基因呢。我无法对其进行索引,因为有时一个人有基因,而另一个人没有。
我知道如何通过两种方式做到这一点:
-
通过pandas将整个CSV文件读取到内存中,然后通过替换函数或使用其他方式创建新的列创建条件。但它仍然将整个文件加载到内存中。
-
用纯python逐行读取文件并检查每一行。在第一种情况下,如果一个基因是好的,将结果保存在新列中。在第二种情况下,当我需要检查2个或多个基因时,我可以将结果保存在变量中。使用的内存更少(我想),但时间更长。
这是我的两个命题,我不知道在这种情况下哪个更好。我的解决方案很可能不是解决这个问题的最佳方案,所以如果你有其他想法,我很乐意提供帮助。
因此,我需要将所有可能的病人保存在一个新的档案中。但移动它们不是问题。