csv数据文件总共是3.2 GB,上帝知道有多少行和列(假设非常大)。该文件是具有针对个体群体的SNP数据的基因组数据。因此,csv文件包含TD102230
等ID和A/A
和A/T
等遗传数据。
现在我使用了Text::CSV
和Array::Transpose
模块,但似乎无法正确使用(就像在计算集群中冻结一样)。是否有特定的模块可以做到这一点?我是Perl的新手(在低级编程方面经验不多,以前主要使用R和MATLAB),所以详细的解释特别受欢迎!
答案 0 :(得分:0)
将任务分解为几个步骤以节省内存。
答案 1 :(得分:0)
作为直接答案,您应该逐行阅读文件,使用Text::CSV
处理它们,将新值推送到数组,每个数组对应原始列,然后只用join
或类似输出它们获得原始的转置表示。在join
之后立即处理每个数组也有助于解决内存问题。
将值写入外部文件而不是数组并将其与OS工具连接是另一种解决内存需求的方法。
你也应该考虑为什么需要这个。是否真的没有更好的方法可以解决手边的实际任务,因为转换本身并不是真正的目的吗?