###eggNOG32G内存注释完整步骤
#开启screen
screen -S eggArHeCHN
#diamond比对
diamond blastp --db eggnog_proteins --query ./ArHeCHN.chr.pep --out eggNOG.xml --outfmt 5 --sensitive --max-target-seqs 20 --evalue 1e-5 --id 10 --tmpdir /dev/shm --index-chunks 1
运行时间1h7min
? --threads 是否可以调整命令时采用的线程数 ?#In-house Perl脚本提取xml比对结果
parsing_blast_result.pl --no-header --max-hit-num 1 --HSP-num 1 eggNOG.xml | cut -f 1,2,11,12 > eggNOG.emapper.seed_orthologs
#在111上测试执行下面的命令
/opt/biosoft/eggnog-mapper-2.1.11/emapper.py -m no_search --annotate_hits_table eggNOG.emapper.seed_orthologs -o eggNOG --override --cpu 4
运行结果:
Total hits processed: 38371 Total time: 85 secs
#注释结果为eggNOG.emapper.annotations
#生成eggNOG.txt文件
grep -v -P "^#" eggNOG.emapper.annotations | cut -f 1,8 > eggNOG.txt
你的电脑只有 32GB 内存,而 EggNOG-mapper 在 --dbmem 模式下可能会占用高达 45GB 内存,这可能会导致系统崩溃或严重变慢。可以尝试以下方法来降低内存使用量:
1. 不使用 --dbmem 模式(最直接的办法)
--dbmem 选项会将整个数据库加载到内存中,而你的内存不足以支持它。可以去掉 --dbmem,这样会使用磁盘上的数据库文件,但速度可能会变慢:
/opt/biosoft/eggnog-mapper-2.1.11/emapper.py -m no_search --annotate_hits_table eggNOG.emapper.seed_orthologs -o eggNOG --override
2. 使用 --cpu 限制线程数
如果你使用的是多线程,多个线程会加剧内存占用。你可以通过 --cpu 选项减少并行线程数,比如:
/opt/biosoft/eggnog-mapper-2.1.11/emapper.py -m no_search --annotate_hits_table eggNOG.emapper.seed_orthologs -o eggNOG --override --cpu 4
如果仍然超内存,可以尝试更小的值(如 --cpu 2)。
3. 逐步处理数据
如果你的输入文件很大,可以把 eggNOG.emapper.seed_orthologs 拆分成多个小文件,分别运行 emapper.py,然后合并结果。例如:
split -l 1000 eggNOG.emapper.seed_orthologs part_
然后对每个 part_* 文件单独运行 emapper.py,最后合并输出。
4. 交换空间(Swap)
如果一定要使用 --dbmem,但内存不足,可以添加 Swap 来缓解:
sudo fallocate -l 64G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
这样可以增加 64GB 交换空间,避免进程被系统杀死,但速度会变慢。
5. 使用小型数据库
如果 EggNOG-mapper 允许选择更小的数据库(如某个特定物种的数据库,而不是完整数据库),可以考虑使用较小的数据集,减少内存占用。
如果你仍然遇到问题,可以告诉我你的具体数据量,我可以帮你找到更合适的方法。