「eggnog」使用本地版eggnog注释基因功能

我抓不住时间,但我一直在追赶他

Posted by 云伴风行 on June 28, 2024

紧急情况,eggnog网页版暂时无法使用,只能使用本地版了,附上hmm方法的教程
最新版参考教程:https://github.com/eggnogdb/eggnog-mapper/wiki/eggNOG-mapper-v2.1.5-to-v2.1.12

创建虚拟环境

1
2
3
conda create -n eggnog_env -c conda-forge python=3.7 Biopython=1.76 psutil=5.7.0 xlsxwriter=1.4.3 -y
# 激活虚拟环境
conda activate eggnog_env

pip 安装eggnog-mapper

1
pip install eggnog-mapper -i https://pypi.tuna.tsinghua.edu.cn/simple

下载数据库(Hmmer 方法)

  • 查看程序download_eggnog_data.py -h

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    $ download_eggnog_data.py -h
    usage: download_eggnog_data.py [-h] [-D] [-F] [-P] [-M] [-H] [-d HMMER_DBS]
                                   [--dbname DBNAME] [-y] [-f] [-s] [-q]
                                   [--data_dir]
      
    optional arguments:
      -h, --help       show this help message and exit
      -D               Do not install the diamond database (default: False)
      -F               Install the novel families diamond and annotation
                       databases, required for "emapper.py -m novel_fams"
                       (default: False)
      -P               Install the Pfam database, required for de novo annotation
                       or realignment (default: False)
      -M               Install the MMseqs2 database, required for "emapper.py -m
                       mmseqs" (default: False)
      -H               Install the HMMER database specified with "-d TAXID".
                       Required for "emapper.py -m hmmer -d TAXID" (default:
                       False)
      -d HMMER_DBS     Tax ID of eggNOG HMM database to download. e.g. "-H -d 2"
                       for Bacteria. Required if "-H". Available tax IDs can be
                       found at http://eggnog5.embl.de/#/app/downloads. (default:
                       None)
      --dbname DBNAME  Tax ID of eggNOG HMM database to download. e.g. "-H -d 2
                       --dbname 'Bacteria'" to download Bacteria (taxid 2) to a
                       directory named Bacteria (default: None)
      -y               assume "yes" to all questions (default: False)
      -f               forces download even if the files exist (default: False)
      -s               simulate and print commands. Nothing is downloaded
                       (default: False)
      -q               quiet_mode (default: False)
      --data_dir       Directory to use for DATA_PATH. (default: None)
      
    

    -h, –help: 显示帮助信息并退出;

    -D: 不安装diamond数据库(默认:False);

    -F: 安装novel families的diamond和注释数据库,这对于 emapper.py -m novel_fams 是必需的(默认:False);

    -P: 安装Pfam数据库,这对于de novo注释或重新比对是必需的(默认:False);

    -M: 安装MMseqs2数据库,这对于 emapper.py -m mmseqs 是必需的(默认:False);

    -H: 安装指定的HMMER数据库。这对于 emapper.py -m hmmer -d TAXID 是必需的(默认:False);

    -d HMMER_DBS: 要下载的eggNOG HMM数据库的Tax ID。例如,-H -d 2 表示下载细菌的数据库。如果使用 -H 参数,则此参数是必需的。可用的Tax ID可以在 eggNOG下载页面 找到(默认:None);

    –dbname DBNAME: 要下载的eggNOG HMM数据库的Tax I的名称。例如,-H -d 2 --dbname 'Bacteria' 表示下载细菌(Tax ID: 2)并将其存储在名为 “Bacteria” 的目录中(默认:None);

    -y: 假设对所有问题的回答都是“是”(默认:False);

    -f: 即使文件已存在也强制下载(默认:False);

    -s: 模拟并打印命令。不下载任何内容(默认:False);

    -q: 安静模式(默认:False);

    –data_dir: 用于存储数据的目录路径(默认:None);

  • 方法一:使用wget下载

    • 第一步下载注释数据库

      1
      2
      3
      4
      5
      6
      
      # 创建存放数据路的路径
      mkdir ./eggnog_db
      # 下载数据库
      wget http://eggnog6.embl.de/download/emapperdb-5.0.2/eggnog.db.gz ./eggnog_db && gunzip ./eggnog_db/eggnog.db.gz
      # 解压
      gunzip ./eggnog_db/eggnog.db.gz
      
    • 第二步下载hmm数据库(由于wget下载非常慢,建议在网页下载,再上传到服务器)

      1
      2
      3
      4
      
      # 创建hmm数据库路径
      mkdir -p ./eggnog_db/hmmer/Eukaryota
      wget http://eggnog5.embl.de/download/eggnog_5.0/per_tax_level/2759//2759_hmms.tar.gz -p ./eggnog_db/hmmer/Eukaryota
      wget http://eggnog5.embl.de/download/eggnog_5.0/per_tax_level/2759//2759_raw_algs.tar -p ./eggnog_db/hmmer/Eukaryota
      
    • 第三步,直接复制到命令行

      1
      
      cd ./eggnog_db/hmmer/Eukaryota
      
      • 解压raw_alg.faa.gz(耗时长)
        直接粘贴到命令行就行
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      echo "Decompressing FASTAs..." && \
      tar xf 2759_raw_algs.tar && \
      echo 2759/* | xargs mv -t ./ && \
      rm -r 2759 && \
      rm 2759_raw_algs.tar && \
      numf=$(find ./ | grep -c ".faa.gz$") && \
      curr=0 && \
      for file in $(find ./ | grep ".faa.gz$"); do \
          curr=$((curr+1)); \
          echo "processing FASTAs... ${file} (${curr}/${numf})"; \
          outf=$(echo "$file" | sed "s/.raw_alg.faa.gz/.fa/"); \
          zcat "$file" | awk '/^>/{print; next}{gsub("-", ""); print}' > "$outf" && rm "$file"; \
      done
      
      • 解压2759_hmms.tar.gz (耗时长)
        注意把18行的/home/hanfc/anaconda3/envs/eggnog_env/lib/python3.7/site-packages/eggnogmapper/bin替换成自己的路径
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      
      echo "Decompressing HMMs..." && \
      tar zxf 2759_hmms.tar.gz && \
      echo 2759/* | xargs mv -t ./ && \
      rm -r 2759 && \
      rm 2759_hmms.tar.gz && \
      numf=$(find ./ | grep -c ".hmm$") && \
      curr=0 && \
      cat /dev/null > Eukaryota.hmm_tmp && \
      for file in $(find ./ | grep ".hmm$"); do \
          curr=$((curr+1)); \
          echo "merging HMMs... ${file} (${curr}/${numf})"; \
          cat "${file}" | sed -e "s/.faa.final_tree.fa//" -e "s/.faa.final_tree//" >> Eukaryota.hmm_tmp; \
          rm "${file}"; \
      done && \
      mv Eukaryota.hmm_tmp Eukaryota.hmm && \
      if [ -f Eukaryota.hmm.h3i ]; then rm Eukaryota.hmm.h3*; fi && \
      echo "hmmpress-ing HMMs... " && \
      /home/hanfc/anaconda3/envs/eggnog_env/lib/python3.7/site-packages/eggnogmapper/bin/hmmpress Eukaryota.hmm && \
      echo "generating idmap file... " && \
      cat Eukaryota.hmm | grep "^NAME" | sed -e "s/^NAME *//" | awk '{print NR" "$0}' > Eukaryota.hmm.idmap && \
      echo "removing single OG hmm files... " && \
      echo ./*hmm | xargs rm
      
  • 方法二:使用download_eggnog_data.py更加方便,但是可能下载非常慢。

    • 如果使用hmm方法,注释物种为真核生物需要指定2759,具体taxaid可以查看(http://eggnog5.embl.de/#/app/downloads)

      1
      2
      
      # 下载eggnog_db, eggnog_proteins.dmnd.gz和2759_hmms.tar.gz
      download_eggnog_data.py --data_dir ./ -H -d 2759 --dbname Eukaryota -y
      

使用emapper注释

emapper参数很多,详细信息可以查看Github信息(https://github.com/eggnogdb/eggnog-mapper/wiki/eggNOG-mapper-v2.1.5-to-v2.1.12)

  • 把数据路径临时加载到环境变量中就可以省略--data_dir参数

    1
    
    export EGGNOG_DATA_DIR=/path/eggnog_db/
    
  • 运行任务

    1
    
    emapper.py -m hmmer -d Eukaryota -i /path/pep.fa -o eggnog_ann --cpu 100 --dbmem --excel --output_dir ./eggnog_db/eggnog_ann
    

    -m 指定hmmer模型;

    -d 指定hmmer数据库名称,前面已指定 --dbname Eukaryota

    -i 指定蛋白序列文件,也可以使用cds,但是需要声明参数先翻译成蛋白序列;

    -o 输出文件前缀;

    --output_dir 输出路径;

    --dbmem 直接把所有的数据库文件加载到内存中,内存充足可以使用;

    --excel 同时输出excel格式;

  • ok 运行完成

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
     Processed queries:25954 total_time:5144.325042486191 rate:5.05 q/s
    25932 5204.61475944519 4.98 q/s (% mem usage: 10.70, % mem avail: 89.35)
    Done
    Result files:
       /home/hanfc/software/eggnog_db/eggnog_ann/eggnog_ann.emapper.hits
       /home/hanfc/software/eggnog_db/eggnog_ann/eggnog_ann.emapper.seed_orthologs
       /home/hanfc/software/eggnog_db/eggnog_ann/eggnog_ann.emapper.annotations
       /home/hanfc/software/eggnog_db/eggnog_ann/eggnog_ann.emapper.annotations.xlsx
      
    ================================================================================
    CITATION:
    If you use this software, please cite:
      
    [1] eggNOG-mapper v2: functional annotation, orthology assignments, and domain 
          prediction at the metagenomic scale. Carlos P. Cantalapiedra, 
          Ana Hernandez-Plaza, Ivica Letunic, Peer Bork, Jaime Huerta-Cepas. 2021.
          Molecular Biology and Evolution, msab293, https://doi.org/10.1093/molbev/msab293
      
    [2] eggNOG 5.0: a hierarchical, functionally and phylogenetically annotated
          orthology resource based on 5090 organisms and 2502 viruses. Jaime
          Huerta-Cepas, Damian Szklarczyk, Davide Heller, Ana Hernandez-Plaza,
          Sofia K Forslund, Helen Cook, Daniel R Mende, Ivica Letunic, Thomas
          Rattei, Lars J Jensen, Christian von Mering and Peer Bork. Nucleic Acids
          Research, Volume 47, Issue D1, 8 January 2019, Pages D309-D314,
          https://doi.org/10.1093/nar/gky1085 
      
    [3] Accelerated Profile HMM Searches. 
           Eddy SR. 2011. PLoS Comput. Biol. 7:e1002195. 
      
    e.g. Functional annotation was performed using eggNOG-mapper (version emapper-2.1.12) [1]
     based on eggNOG orthology data [2]. Sequence searches were performed using [3].
      
    ================================================================================
      
    Total hits processed: 25932
    Total time: 12114 secs
    FINISHED
    

可能的报错

  • Use “hmmpress” to create the .h3* files

    这个报错是由于路径错误导致的,需要按照上面的过程检查一下路径是否错误

  • 其他错误不希望你们遇到~

© 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!