RAxML-NG

Descrição

De acordo com a página do RAxML-NG, RAxML-NG é uma ferramenta de inferência filogenética que usa o critério de optimalidade de máxima verossimilhança (ML). É o sucessor do RAxML, oferecendo melhorias em velocidade, flexibilidade e usabilidade.

Versões Disponíveis

  • raxml-ng/1.0.3 (default)

Carregando o Módulo

# Carregar RAxML-NG
module load raxml-ng/1.0.3

# Verificar instalação
raxml-ng     --version
raxml-ng-mpi --version

Submissão de Jobs

submit_raxml-ng.sh
#!/bin/bash
#SBATCH -J raxmlng
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 24:00:00
#SBATCH --mem=16G

export INPUT="test.fa"
export OUTPUT="test.fa.raxml.*"

module load raxml-ng/1.0.3

job-nanny raxml-ng --msa test.fa --model GTR+G --threads $SLURM_CPUS_PER_TASK

Busca pela Melhor Árvore

submit_raxml-ng_search.sh
#!/bin/bash
#SBATCH -J raxmlng_search
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 48:00:00
#SBATCH --mem=32G

export INPUT="alignment.phy"
export OUTPUT="RAxMLNG_*"

module load raxml-ng/1.0.3

job-nanny raxml-ng --msa alignment.phy --model GTR+G \
                 --threads $SLURM_CPUS_PER_TASK \
                 --prefix RAxMLNG --seed 12345

Bootstrap

submit_raxml-ng_bootstrap.sh
#!/bin/bash
#SBATCH -J raxmlng_boot
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 72:00:00
#SBATCH --mem=32G

export INPUT="alignment.phy"
export OUTPUT="RAxMLNG_*"

module load raxml-ng/1.0.3

# Bootstrap
job-nanny raxml-ng --bootstrap --msa alignment.phy --model GTR+G \
                 --threads $SLURM_CPUS_PER_TASK \
                 --prefix boot --seed 12345 --bs-trees 100

# Mapear bootstrap na melhor árvore
job-nanny raxml-ng --support --tree boot.raxml.bestTree \
                 --bs-trees boot.raxml.bootstraps \
                 --prefix support --threads $SLURM_CPUS_PER_TASK

Análise Completa (Busca + Bootstrap)

submit_raxml-ng_all.sh
#!/bin/bash
#SBATCH -J raxmlng_all
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 96:00:00
#SBATCH --mem=32G

export INPUT="alignment.phy"
export OUTPUT="RAxMLNG_*"

module load raxml-ng/1.0.3

job-nanny raxml-ng --all --msa alignment.phy --model GTR+G \
                 --threads $SLURM_CPUS_PER_TASK \
                 --prefix complete --seed 12345 \
                 --bs-trees 100

Modelos Disponíveis

Modelos de evolução

Modelo

Descrição

GTR+G

General Time Reversible com distribuição gamma

GTR+G4

GTR com 4 categorias gamma

GTR+I+G4

GTR com proporção invariável + gamma

JC69

Jukes-Cantor 1969

HKY85

Hasegawa-Kishino-Yano 1985

TN93

Tamura-Nei 1993

K80

Kimura 2-parâmetros

F81

Felsenstein 1981

Job Array para Múltiplos Alinhamentos

submit_raxml-ng_array.sh
#!/bin/bash
#SBATCH -J raxmlng_array
#SBATCH --array=1-10
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 48:00:00
#SBATCH --mem=32G

FILES=($(ls *.phy *.fa *.fasta))
FILE=${FILES[$SLURM_ARRAY_TASK_ID-1]}
PREFIX="raxmlng_${FILE%.*}"

export INPUT="$FILE"
export OUTPUT="${PREFIX}_*"

module load raxml-ng/1.0.3

job-nanny raxml-ng --msa $FILE --model GTR+G \
                 --threads $SLURM_CPUS_PER_TASK \
                 --prefix $PREFIX --seed 12345

Análise de Resultados

analyze_raxml-ng.sh
#!/bin/bash
#SBATCH -J analyze_raxmlng
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=4G

module load raxml-ng/1.0.3

# Verificar convergência do bootstrap
raxml-ng --bsconvergence --bs-trees boot.raxml.bootstraps \
         --prefix convergence --seed 12345

# Calcular árvore de consenso
raxml-ng --consense --tree boot.raxml.bootstraps \
         --prefix consense --seed 12345

# Extrair estatísticas
for f in *.raxml.log; do
    echo "Arquivo: $f"
    grep "Final log likelihood" $f
    grep "Tree length" $f
    grep "Number of distinct tree topologies" $f
    echo "---"
done > stats.txt

# Gerar PDF da árvore (requer Python com ete3)
cat > plot_tree.py << 'EOF'
from ete3 import Tree, TreeStyle
import glob

for tree_file in glob.glob("*.raxml.bestTree"):
    t = Tree(tree_file)
    ts = TreeStyle()
    ts.show_leaf_name = True
    ts.show_branch_length = True
    ts.show_branch_support = True

    outfile = tree_file.replace("bestTree", "tree.pdf")
    t.render(outfile, tree_style=ts)
EOF

python plot_tree.py 2>/dev/null || echo "ete3 não instalado"

Referências

Ver também