[踩坑记录] STAR比对大基因组时的内存溢出与临时文件报错终极解决方案
最近在处理 11Gb 大小的复杂基因组时,STAR 比对频频报错。从 limitGenomeGenerateRAM 的内存限制,到 ulimit -n 的文件句柄耗尽,再到 sjdbInsertNsj 的剪接位点溢出。
1. 内存限制问题
STAR 在构建索引时需要大量的内存。对于大基因组,默认的内存设置往往不够用。我们需要调整 `limitGenomeGenerateRAM` 参数。
--limitGenomeGenerateRAM 150000000000
2. 文件句柄耗尽
在处理大量 reads 时,STAR 可能会打开过多的临时文件,导致达到系统的 `ulimit -n` 限制。可以通过以下命令查看和修改限制:
ulimit -n 65535
3. 剪接位点溢出
当 intron 数量非常多时,可能会遇到 `sjdbInsertNsj` 报错。这不是内存问题,而是缓冲区大小问题。
总结
通过调整上述参数,最终在 130 线程的服务器上成功完成了比对任务。