snippy
Tags: snp variant-calling phylogeny core-genome snippy bactopia-tool
Chamada rápida de variantes de haplótipos e alinhamento do genoma central.
Esta Ferramenta Bactopia utiliza o Snippy para encontrar SNPs entre um genoma de referência e um conjunto de reads, realizar alinhamento do genoma central e gerar árvores filogenéticas. Inclui detecção opcional de recombinação com Gubbins e construção de árvore filogenética com IQ-Tree.
Uso
Bactopia CLI:
bactopia --wf snippy \
--bactopia /path/to/your/bactopia/results
Nextflow:
nextflow run bactopia/bactopia/workflows/bactopia-tools/snippy/main.nf \
--bactopia /path/to/your/bactopia/results
Saídas
Arquivos de Saída Esperados
<BACTOPIA_DIR>
├── <SAMPLE_NAME>
│ └── tools
│ └── snippy-<TIMESTAMP>
│ └── GCF_000292685
│ ├── <SAMPLE_NAME>.aligned.fa.gz
│ ├── <SAMPLE_NAME>.annotated.vcf.gz
│ ├── <SAMPLE_NAME>.bam
│ ├── <SAMPLE_NAME>.bam.bai
│ ├── <SAMPLE_NAME>.bed.gz
│ ├── <SAMPLE_NAME>.consensus.fa.gz
│ ├── <SAMPLE_NAME>.consensus.subs.fa.gz
│ ├── <SAMPLE_NAME>.consensus.subs.masked.fa.gz
│ ├── <SAMPLE_NAME>.coverage.txt.gz
│ ├── <SAMPLE_NAME>.csv.gz
│ ├── <SAMPLE_NAME>.filt.vcf.gz
│ ├── <SAMPLE_NAME>.gff.gz
│ ├── <SAMPLE_NAME>.html
│ ├── <SAMPLE_NAME>.raw.vcf.gz
│ ├── <SAMPLE_NAME>.subs.vcf.gz
│ ├── <SAMPLE_NAME>.tab
│ ├── <SAMPLE_NAME>.txt
│ ├── <SAMPLE_NAME>.vcf.gz
│ └── logs
│ ├── <SAMPLE_NAME>.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── ERR6005894
│ └── tools
│ └── snippy-<TIMESTAMP>
│ └── GCF_000292685
│ ├── ERR6005894.aligned.fa.gz
│ ├── ERR6005894.annotated.vcf.gz
│ ├── ERR6005894.bam
│ ├── ERR6005894.bam.bai
│ ├── ERR6005894.bed.gz
│ ├── ERR6005894.consensus.fa.gz
│ ├── ERR6005894.consensus.subs.fa.gz
│ ├── ERR6005894.consensus.subs.masked.fa.gz
│ ├── ERR6005894.coverage.txt.gz
│ ├── ERR6005894.csv.gz
│ ├── ERR6005894.filt.vcf.gz
│ ├── ERR6005894.gff.gz
│ ├── ERR6005894.html
│ ├── ERR6005894.raw.vcf.gz
│ ├── ERR6005894.subs.vcf.gz
│ ├── ERR6005894.tab
│ ├── ERR6005894.txt
│ ├── ERR6005894.vcf.gz
│ └── logs
│ ├── ERR6005894.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── ERR6005894SE
│ └── tools
│ └── snippy-<TIMESTAMP>
│ └── GCF_000292685
│ ├── ERR6005894SE.aligned.fa.gz
│ ├── ERR6005894SE.annotated.vcf.gz
│ ├── ERR6005894SE.bam
│ ├── ERR6005894SE.bam.bai
│ ├── ERR6005894SE.bed.gz
│ ├── ERR6005894SE.consensus.fa.gz
│ ├── ERR6005894SE.consensus.subs.fa.gz
│ ├── ERR6005894SE.consensus.subs.masked.fa.gz
│ ├── ERR6005894SE.coverage.txt.gz
│ ├── ERR6005894SE.csv.gz
│ ├── ERR6005894SE.filt.vcf.gz
│ ├── ERR6005894SE.gff.gz
│ ├── ERR6005894SE.html
│ ├── ERR6005894SE.raw.vcf.gz
│ ├── ERR6005894SE.subs.vcf.gz
│ ├── ERR6005894SE.tab
│ ├── ERR6005894SE.txt
│ ├── ERR6005894SE.vcf.gz
│ └── logs
│ ├── ERR6005894SE.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── SRR2838702
│ └── tools
│ └── snippy-<TIMESTAMP>
│ └── GCF_000292685
│ ├── SRR2838702.aligned.fa.gz
│ ├── SRR2838702.annotated.vcf.gz
│ ├── SRR2838702.bam
│ ├── SRR2838702.bam.bai
│ ├── SRR2838702.bed.gz
│ ├── SRR2838702.consensus.fa.gz
│ ├── SRR2838702.consensus.subs.fa.gz
│ ├── SRR2838702.consensus.subs.masked.fa.gz
│ ├── SRR2838702.coverage.txt.gz
│ ├── SRR2838702.csv.gz
│ ├── SRR2838702.filt.vcf.gz
│ ├── SRR2838702.gff.gz
│ ├── SRR2838702.html
│ ├── SRR2838702.raw.vcf.gz
│ ├── SRR2838702.subs.vcf.gz
│ ├── SRR2838702.tab
│ ├── SRR2838702.txt
│ ├── SRR2838702.vcf.gz
│ └── logs
│ ├── SRR2838702.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── SRR2838702SE
│ └── tools
│ └── snippy-<TIMESTAMP>
│ └── GCF_000292685
│ ├── SRR2838702SE.aligned.fa.gz
│ ├── SRR2838702SE.annotated.vcf.gz
│ ├── SRR2838702SE.bam
│ ├── SRR2838702SE.bam.bai
│ ├── SRR2838702SE.bed.gz
│ ├── SRR2838702SE.consensus.fa.gz
│ ├── SRR2838702SE.consensus.subs.fa.gz
│ ├── SRR2838702SE.consensus.subs.masked.fa.gz
│ ├── SRR2838702SE.coverage.txt.gz
│ ├── SRR2838702SE.csv.gz
│ ├── SRR2838702SE.filt.vcf.gz
│ ├── SRR2838702SE.gff.gz
│ ├── SRR2838702SE.html
│ ├── SRR2838702SE.raw.vcf.gz
│ ├── SRR2838702SE.subs.vcf.gz
│ ├── SRR2838702SE.tab
│ ├── SRR2838702SE.txt
│ ├── SRR2838702SE.vcf.gz
│ └── logs
│ ├── SRR2838702SE.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── SRR2838702SE_2
│ └── tools
│ └── snippy-<TIMESTAMP>
│ └── GCF_000292685
│ ├── SRR2838702SE_2.aligned.fa.gz
│ ├── SRR2838702SE_2.annotated.vcf.gz
│ ├── SRR2838702SE_2.bam
│ ├── SRR2838702SE_2.bam.bai
│ ├── SRR2838702SE_2.bed.gz
│ ├── SRR2838702SE_2.consensus.fa.gz
│ ├── SRR2838702SE_2.consensus.subs.fa.gz
│ ├── SRR2838702SE_2.consensus.subs.masked.fa.gz
│ ├── SRR2838702SE_2.coverage.txt.gz
│ ├── SRR2838702SE_2.csv.gz
│ ├── SRR2838702SE_2.filt.vcf.gz
│ ├── SRR2838702SE_2.gff.gz
│ ├── SRR2838702SE_2.html
│ ├── SRR2838702SE_2.raw.vcf.gz
│ ├── SRR2838702SE_2.subs.vcf.gz
│ ├── SRR2838702SE_2.tab
│ ├── SRR2838702SE_2.txt
│ ├── SRR2838702SE_2.vcf.gz
│ └── logs
│ ├── SRR2838702SE_2.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── SRR2838702_2
│ └── tools
│ └── snippy-<TIMESTAMP>
│ └── GCF_000292685
│ ├── SRR2838702_2.aligned.fa.gz
│ ├── SRR2838702_2.annotated.vcf.gz
│ ├── SRR2838702_2.bam
│ ├── SRR2838702_2.bam.bai
│ ├── SRR2838702_2.bed.gz
│ ├── SRR2838702_2.consensus.fa.gz
│ ├── SRR2838702_2.consensus.subs.fa.gz
│ ├── SRR2838702_2.consensus.subs.masked.fa.gz
│ ├── SRR2838702_2.coverage.txt.gz
│ ├── SRR2838702_2.csv.gz
│ ├── SRR2838702_2.filt.vcf.gz
│ ├── SRR2838702_2.gff.gz
│ ├── SRR2838702_2.html
│ ├── SRR2838702_2.raw.vcf.gz
│ ├── SRR2838702_2.subs.vcf.gz
│ ├── SRR2838702_2.tab
│ ├── SRR2838702_2.txt
│ ├── SRR2838702_2.vcf.gz
│ └── logs
│ ├── SRR2838702_2.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
└── bactopia-runs
└── snippy-<TIMESTAMP>
├── GCF_000292685.samples.txt
├── core-snp-clean.full.aln.gz
├── core-snp.distance.tsv
├── core-snp.full.aln.gz
├── core-snp.masked.aln.gz
├── core-snp.masked.distance.tsv
├── gubbins
│ ├── core-snp.branch_base_reconstruction.embl.gz
│ ├── core-snp.filtered_polymorphic_sites.fasta.gz
│ ├── core-snp.filtered_polymorphic_sites.phylip
│ ├── core-snp.final_tree.tre
│ ├── core-snp.node_labelled.final_tree.tre
│ ├── core-snp.per_branch_statistics.csv
│ ├── core-snp.recombination_predictions.embl.gz
│ ├── core-snp.recombination_predictions.gff.gz
│ ├── core-snp.summary_of_snp_distribution.vcf.gz
│ └── logs
│ ├── core-snp.log
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── nf-reports
│ ├── snippy-dag.dot
│ ├── snippy-report.html
│ └── snippy-timeline.html
├── snippy-core
│ ├── core-snp.aln.gz
│ ├── core-snp.tab.gz
│ ├── core-snp.txt
│ ├── core-snp.vcf.gz
│ └── logs
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
├── snpdists
│ └── logs
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
└── snpdists-masked
└── logs
├── nf.command.{begin,err,log,out,run,sh,trace}
└── versions.yml
Chamada de Variantes
| Arquivo | Descrição |
|---|---|
*.vcf | Chamadas de variantes em formato VCF |
*.bam | Arquivo de alinhamento |
*.txt | Relatório resumido do Snippy |
Alinhamento do Genoma Central
| Arquivo | Descrição |
|---|---|
core.full.aln | Alinhamento completo do genoma central |
core.snps.aln | Alinhamento de SNPs do genoma central |
Análise de Recombinação
Criado apenas se a análise de recombinação estiver habilitada
| Arquivo | Descrição |
|---|---|
*.filtered.aln | Alinhamento com regiões de recombinação removidas |
*.gff | Predições de recombinação |
Filogenia
Criado apenas se a análise filogenética estiver habilitada
| Arquivo | Descrição |
|---|---|
*.treefile | Árvore filogenética no formato Newick |
Resultados Consolidados
| Arquivo | Descrição |
|---|---|
snippy.tsv | Resumo consolidado das análises do Snippy |
Trilha de Auditoria
Abaixo estão os arquivos que podem ajudar você a entender quais parâmetros e versões de programas foram utilizados.
Logs
Cada processo executado terá uma pasta chamada logs. Nesta pasta há arquivos úteis
para você revisar caso necessário.
| Extensão | Descrição |
|---|---|
| .begin | Arquivo vazio utilizado para indicar que o processo foi iniciado |
| .err | Contém as saídas STDERR do processo |
| .log | Contém as saídas STDERR e STDOUT do processo |
| .out | Contém as saídas STDOUT do processo |
| .run | O script que o Nextflow usa para preparar/liberar arquivos e enfileirar processos com base no perfil definido |
| .sh | O script executado pelo bash para o processo |
| .trace | O relatório de rastreamento do Nextflow para o processo |
| versions.yml | Um arquivo no formato YAML com as versões dos programas |
Relatórios do Nextflow
Esses relatórios do Nextflow fornecem um excelente resumo da sua execução. Eles podem ser usados para otimizar o uso de recursos e estimar os custos esperados ao utilizar plataformas de nuvem.
| Nome do Arquivo | Descrição |
|---|---|
| snippy-dag.dot | A visualização DAG do Nextflow |
| snippy-report.html | O Relatório de Execução do Nextflow |
| snippy-timeline.html | O Relatório de Linha do Tempo do Nextflow |
| snippy-trace.txt | O relatório de Rastreamento do Nextflow |
Parâmetros
Parâmetros Obrigatórios
Define onde o pipeline deve encontrar os dados de entrada e salvar os dados de saída.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--bactopia | string | O caminho para os resultados do bactopia a serem usados como entradas |
Parâmetros de Download de Genomas do NCBI
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--species | string | Nome da espécie para baixar montagens | |
--accession | string | Um número de acesso de montagem do NCBI para ser baixado | |
--accessions | string | Um arquivo com números de acesso de montagens do NCBI (um por linha) para serem baixados | |
--format | string | fasta | Lista de formatos separados por vírgula para baixar |
--section | string | refseq | Seção do NCBI para download |
--assembly_level | string | complete | Lista de níveis de montagem separados por vírgula para baixar |
--kingdom | string | bacteria | Lista de formatos separados por vírgula para baixar |
--limit | string | Limitar o número de montagens a serem baixadas | |
--keep_downloads | boolean | false | Salvar os arquivos baixados na pasta bactopia-runs |
Parâmetros de Execução do Snippy
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--reference | string | Genoma de referência no formato GenBank | |
--snippy_mapqual | integer | 60 | Qualidade mínima de mapeamento de reads a considerar |
--snippy_basequal | integer | 13 | Qualidade mínima de base a considerar |
--snippy_mincov | integer | 10 | Profundidade mínima do sítio para chamada de alelos |
--snippy_minfrac | integer | 0 | Proporção mínima para evidência de variante (0=AUTO) |
--snippy_minqual | integer | 100 | QUALIDADE mínima na coluna 6 do VCF |
--snippy_maxsoft | integer | 10 | Máximo de soft clipping permitido |
--snippy_bwaopt | string | Opções extras do BWA MEM, ex.: -x pacbio | |
--snippy_fbopt | string | Opções extras do Freebayes, ex.: --theta 1E-6 --read-snp-limit 2 | |
--snippy_remove_bam | boolean | false | Excluir arquivos BAM após a chamada de variantes |
--snippy_opts | string | Opções extras entre aspas para o Snippy |
Parâmetros do Snippy-Core
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--snippy_core_maxhap | integer | 100 | Maior haplótipo a decompor |
--snippy_core_mask | string | Arquivo BED de sítios a mascarar | |
--snippy_core_mask_char | string | X | Caractere de mascaramento |
--snippy_core_opts | string | Opções extras entre aspas para o snippy-core |
Parâmetros do SNP-Dists
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--snpdists_a | boolean | false | Contar todas as diferenças, não apenas [AGTC] |
--snpdists_b | boolean | false | Manter a célula do canto superior esquerdo |
--snpdists_csv | boolean | false | Gerar saída em CSV em vez de TSV |
--snpdists_k | boolean | false | Manter capitalização, não converter todas as letras para maiúsculas |
Parâmetros do Gubbins
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--gubbins_iterations | integer | 5 | Número máximo de iterações |
--gubbins_min_snps | integer | 3 | Mínimo de SNPs para identificar um bloco de recombinação |
--gubbins_min_window_size | integer | 100 | Tamanho mínimo da janela |
--gubbins_max_window_size | integer | 10000 | Tamanho máximo da janela |
--gubbins_filter_percentage | number | 25.0 | Filtrar taxa com mais do que esta porcentagem de lacunas |
--gubbins_remove_identical_sequences | boolean | false | Remover sequências idênticas |
--gubbins_opts | string | Opções extras do Gubbins entre aspas | |
--skip_recombination | boolean | false | Pular a execução do Gubbins nos subworkflows |
Parâmetros do IQ-TREE
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--iqtree_model | string | HKY | Nome do modelo de substituição |
--iqtree_bb | integer | 1000 | Réplicas de bootstrap ultrarrápido |
--iqtree_alrt | integer | 1000 | Réplicas do teste de razão de verossimilhança aproximado tipo SH |
--iqtree_asr | boolean | false | Reconstrução de estado ancestral por Bayes empírico |
--iqtree_opts | string | Opções extras do IQ-TREE entre aspas. | |
--skip_phylogeny | boolean | false | Pular a execução do IQ-TREE nos subworkflows |
Parâmetros de Filtragem
Use estes parâmetros para especificar quais amostras incluir ou excluir.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--include | string | Um arquivo de texto contendo nomes de amostras (um por linha) a incluir na análise | |
--exclude | string | Um arquivo de texto contendo nomes de amostras (um por linha) a excluir da análise |
Parâmetros Opcionais
Estes parâmetros opcionais podem ser úteis em determinadas situações.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--outdir | string | bactopia | Diretório base para gravar os resultados |
--skip_compression | boolean | false | Os arquivos de saída não serão comprimidos |
--datasets | string | O caminho para armazenar em cache os conjuntos de dados | |
--keep_all_files | boolean | false | Mantém todos os arquivos de análise criados |
Parâmetros de Requisição Máxima de Recursos
Define o limite máximo de recursos solicitados para qualquer tarefa individual.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--max_retry | integer | 3 | Número máximo de tentativas de um processo antes de permitir que ele falhe. |
--max_cpus | integer | 4 | Número máximo de CPUs que podem ser solicitadas para qualquer tarefa individual. |
--max_memory | string | 128.GB | Quantidade máxima de memória que pode ser solicitada para qualquer tarefa individual. |
--max_time | string | 240.h | Tempo máximo que pode ser solicitado para qualquer tarefa individual. |
--max_downloads | integer | 3 | Número máximo de amostras a baixar simultaneamente |
Parâmetros de Configuração do Nextflow
Parâmetros para ajustar a configuração do Nextflow.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--nfconfig | string | Um arquivo de configuração compatível com Nextflow para perfis personalizados, carregado por último e que substituirá variáveis existentes se definido. | |
--publish_dir_mode | string | copy | Método usado para salvar os resultados do pipeline no diretório de saída. (opções: symlink, rellink, link, copy, copyNoFollow, move) |
--infodir | string | ${params.outdir}/pipeline_info | Diretório para manter os logs e relatórios do Nextflow do pipeline. |
--force | boolean | false | O Nextflow irá sobrescrever arquivos de saída existentes. |
--cleanup_workdir | boolean | false | Após a execução bem-sucedida do Bactopia, o diretório work será excluído. |
Opções de configuração institucional
Parâmetros usados para descrever perfis de configuração centralizados. Estes não devem ser editados.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--custom_config_version | string | master | ID de commit Git para configurações institucionais. |
--custom_config_base | string | https://raw.githubusercontent.com/nf-core/configs/master | Diretório base para configurações institucionais. |
--config_profile_name | string | Nome do perfil de configuração institucional. | |
--config_profile_description | string | Descrição do perfil de configuração institucional. | |
--config_profile_contact | string | Informações de contato do perfil de configuração institucional. | |
--config_profile_url | string | Link URL do perfil de configuração institucional. |
Parâmetros de Perfil do Nextflow
Parâmetros para ajustar a configuração do Nextflow.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--condadir | string | Diretório que o Nextflow deve usar para os ambientes Conda | |
--registry | string | quay.io | Registro de onde baixar os contêineres Docker. |
--datasets_cache | string | <HOME>/.bactopia/datasets | Diretório onde os conjuntos de dados baixados devem ser armazenados. |
--singularity_cache | string | Diretório onde as imagens Singularity remotas são armazenadas. | |
--singularity_pull_docker_container | boolean | Em vez de baixar diretamente as imagens Singularity, força o fluxo de trabalho a baixar e converter contêineres Docker. | |
--force_rebuild | boolean | false | Forçar a substituição de ambientes pré-construídos existentes. |
--queue | string | general,high-memory | Nome(s) da(s) fila(s) separados por vírgula a serem usados por um agendador de tarefas (ex.: AWS Batch ou SLURM) |
--cluster_opts | string | Opções adicionais a passar para o executor. (ex.: SLURM: '--account=my_acct_name' | |
--container_opts | string | Opções adicionais a passar para Apptainer, Docker ou Singularity. (ex.: Singularity: '-D pwd' | |
--disable_scratch | boolean | false | Todos os arquivos intermediários criados nos nós de trabalho serão transferidos para o nó principal. |
Parâmetros Úteis
Parâmetros raramente utilizados que podem ser convenientes em alguns casos.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
--monochrome_logs | boolean | Não usar saídas de log coloridas. | |
--nfdir | boolean | Exibir o diretório para o qual o Nextflow baixou o Bactopia | |
--sleep_time | integer | 5 | O tempo (em segundos) que o Nextflow aguardará após configurar os conjuntos de dados antes da execução. |
--validate_params | boolean | true | Booleano para validar os parâmetros em relação ao esquema em tempo de execução |
--help | boolean | Exibir texto de ajuda. | |
--wf | string | bactopia | Especificar qual fluxo de trabalho ou Ferramenta Bactopia executar |
--list_wfs | boolean | Listar os fluxos de trabalho e Ferramentas Bactopia disponíveis para usar com '--wf' | |
--show_hidden_params | boolean | Mostrar todos os parâmetros ao usar --help | |
--help_all | boolean | Um alias para --help --show_hidden_params | |
--version | boolean | Exibir texto de versão. |
Composição
Este fluxo de trabalho utiliza os seguintes subworkflows:
- gubbins - Detectar e filtrar regiões de recombinação em alinhamentos bacterianos.
- iqtree - Construir árvores filogenéticas de máxima verossimilhança a partir de alinhamentos.
- ncbigenomedownload - Baixar genomas bacterianos do banco de dados RefSeq do NCBI.
- snippy_core - Gerar alinhamento de SNPs do genoma central a partir das saídas por amostra do Snippy.
- snippy_run - Chamar variantes em relação a um genoma de referência usando o Snippy.
Citações
Se você usar este fluxo de trabalho em sua análise, por favor cite os seguintes trabalhos.
-
Bactopia
Petit III RA, Read TD Bactopia - a flexible pipeline for complete analysis of bacterial genomes. mSystems 5 (2020) -
Snippy
Seemann T Snippy: fast bacterial chamada de variantes from NGS reads (GitHub) -
Gubbins
Croucher NJ, Page AJ, Connor TR, Delaney AJ, Keane JA, Bentley SD, Parkhill J, Harris SR Rapid phylogenetic analysis of large samples of recombinant bacterial whole genome sequences using Gubbins. Nucleic Acids Research 43(3), e15. (2015) -
IQ-TREE
Nguyen L-T, Schmidt HA, von Haeseler A, Minh BQ IQ-TREE: A fast and effective stochastic algorithm for estimating maximum likelihood phylogenies. Mol. Biol. Evol. 32:268-274 (2015)