Tecnología de la Red Genómica de la Fiocruz.

Construido para análisis con virus de referencia (versión v1.3.0).

De que se trata

ViralFlow es un workflow elaborado para profesionales de la salud, con el objetivo de ejecutar todas las etapas de un análisis genómico viral por referencia.

El código fue escrito en el lenguaje de workflow Nextflow, y puede ser aplicado para diferentes virus, donde el usuario, después de instalar la herramienta, necesita rodar solamente una línea de código.

El grupo que desarrolló el ViralFlow no ofrece soporte, por el momento, para errores relacionados con la aplicación del código en otras plataformas. Hasta el presente, el código ha sido utilizado solamente en datos generados por secuenciadores Illumina, empleando estrategia de reads por pares (paired-end) o no emparejados (single-end).

La publicación de la primera versión del ViralFlow puede ser verificada en el link a continuación.. La publicación de la vérsion 1.0, que incluye las funciones descritas en este documento, puede ser verificada en el link a continuación..

Análisis intra-huésped

El ViralFlow presenta un algoritmo propio para detectar regiones de iSNV (intrahost Single Nucleotide Variant).

Para que un determinado locus multi alélico tenga un alelo con menor frecuencia, considerado iSNV, tres condiciones deben cumplirse, estas condiciones están esquematizadas en la parte superior de la figura que se muestra a continuación.

Siguiendo esta lógica, la pare inferior de la figura a continuación representa 3 sitios multi alélicos y ejemplifica la lógica para considerar cuáles de ellos serian considerados iSNVs.

dependencias

Para la instalación y ejecución del ViralFlow, será necesario disponer de al menos 4,4 Gb de memoria, para la elaboración de los contenedores, e de tres dependencias:

  • pip
  • Git
  • uidmap

La lista con las versiones de cada herramienta utilizada en el ViralFlow puede ser verificada en el siguiente link.. Adicionalmente, para la instalación con un ambiente controlado, se usa el Conda. El ViralFlow utiliza la herramienta de creación de contenedores Singularity y del lenguaje de workflow Nextflow. Para garantizar el funcionamiento correcto del ViralFlow es esencial tener las versiones adecuadas del Singularity y del Nextflow, y ambos pueden ser instalados simultáneamente con el ViralFlow.


  • Conda es un administrador de paquetes de código abierto. Fue inicialmente desarrollado para gerenciar ambientes de paquetes de lenguaje Python, permitiendo el control de versiones.

    Para que todos los usuarios utilicen el ViralFlow con las versiones exactas del Singularity y del Nextflow, hemos creado un ambiente con estas versiones, permitiendo una estandarización en los ambientes de instalación del ViralFlow, así como la resolución de eventuales errores.

  • Singularity es una herramienta que ejecuta la virtualización a nivel del sistema operacional, tarea popularmente conocida como creación de contenedores.

    Para un pipeline computacional funcionar, como el ViralFlow, se necesita de varias dependencias (otras herramientas y bibliotecas del sistema operacional); y para evitar que el usuario necesite instalar todas las dependencias manualmente en su máquina, utilizamos el sistema de contenedores.

    Con la creación de contenedores, el usuario solo necesita instalar una herramienta, en este caso el Singularity, y después construir los contenedores basándose en archivos de receta (en el caso del ViralFlow, también fue automatizado con el script setupContainers.sh). De esta forma, diferentes grupos de investigación pueden rodar la herramienta en el mismo ambiente computacional, sin cambios en el comportamiento del ViralFlow, garantizando la reproductibilidad de los resultados.

  • Nextflow es un administrador de workflows de bioinformática que permite el desarrollo de workflows portátiles y reproducibles.

    Nextflow permite la ejecución de los workflows en diversos ambientes computacionales, como ambientes locales, de computación de alta performance (HPC), servicios de computación en la nube, AWS y Google Cloud, y también, en sistemas de orquestación de contenedores como Kubernetes.

    Adicionalmente, el Nextflow proporciona soporte para gerenciar las dependencias de Conda, Docker, Podman o Singularity.

¿Cómo instalar (MacOS)?

Considerando las limitaciones del uso del Singularity en el MacOS, para rodar el ViralFlow en este tipo de sistema se sugiere utilizar un software de virtualización Linux llamado Lima. De esta forma, el usuario debe seguir tres pasos para la instalación del Lima, y después continuar con la guía de instalación del Ubuntu

Instalando el Lima

Instale el Lima utilizando el administrador de paquetes Homebrew:

brew install lima


Instalando la instancia Ubuntu

Siga el paso a paso de la instalación de la instancia Ubuntu introduciendo el comando a seguir

limactl start


Inicie el Ubuntu

Cuando la maquina virtual sea instalada, utilice el comando a continuación para iniciar el Ubuntu y siga los pasos de instalación del ViralFlow normalmente.

lima


¿Cómo instalar (Ubuntu)?

Para realizar la instalación del ViralFlow, deben seguirse cuatro pasos: Instalar las dependencias del sistema, en el caso de haberlo hecho antes; Instalar el Conda; Instalar el ViralFlow y, finalmente, montar los contenedores para los análisis. Este proceso es realizado una única vez.

La instalación y uso del ViralFlow ya fue probada con los sistemas:

  • Ubuntu 20.04 LTS;
  • Ubuntu 22.04 LTS;

Instalando as dependencias del sistema

En el caso de no tener el instalador de dependencias pip, el sistema de control de versiones git y el paquete uidmap, usted debe realizar la instalación de las siguientes líneas de código:

sudo apt update -y && \
  sudo apt upgrade -y && \
  sudo apt install curl git python3-pip uidmap -y


Instalando y configurando el ambiente micromamba

Recomendamos el administrador de ambientes micromamba por su paralelización al realizar el download e instalación de las dependencias. En el caso de que usted utilice otro administrador de ambientes, como conda, miniconda, mamba, etc, puede continuar con la instalación del ViralFlow ignorando esta etapa, sin embargo, pueden ocurrir conflictos durante la instalación por las versiones de las dependencias especificadas, y sus respectivas disponibilidades en diferentes canales de recursos.

En el caso de no tener el administrador de ambientes micromamba instalado, podrá hacerlo y configurar con las siguientes líneas de código:

cd $HOME
curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/1.5.7 | tar -xvj bin/micromamba
./bin/micromamba shell init -s bash -p ~/micromamba
source ~/.bashrc
micromamba activate


Instalando el ViralFlow

Si usted ya dispone de las dependencias citadas y el conda instalado, podrá instalar el ViralFlow con 5 líneas de código:

git clone https://github.com/WallauBioinfo/ViralFlow
cd ViralFlow/
micromamba env create -f envs/env.yml
micromamba activate viralflow
pip install -e .


Construyendo los contenedores

Todas las etapas del ViralFlow son ejecutadas en ambientes controlados, donde cada herramienta tendrá la misma versión independientemente del grupo de investigación que haga uso de ella. El ViralFlow posee un método propio para realizar toda esa construcción de ambientes, rodando apenas una línea de código. Para que la construcción de los contenedores ocurra, el ViralFlow necesita que la herramienta “unsquashfs” se encuentre disponible en el directorio “/usr/local/bin/”. Durante el proceso de construcción de los contenedores, se realiza una etapa de verificación de la presencia de unsquashfs. Si el sistema del usuario no presenta el unsquashfs en el lugar ideal, el ViralFlow irá sugerir los pasos necesarios para la solución de este problema. Para evitar este problema, el usuario puede crear un link simbólico de la herramienta “unsquashfs” para el directorio “/usr/local/bin/”, y para ello, el siguiente comando debe ejecutarse:

sudo ln -s /usr/bin/unsquashfs /usr/local/bin/unsquashfs

Después de garantizar que el unsquashfs se encuentra en el lugar adecuado, ejecuta el comando para la construcción de los contenedores:

viralflow -build_containers


Como ejecutar (Guía rápido)

El ViralFlow dispone de dos modos de uso: sars-cov2 e custom. Independientemente del modo de uso, el usuario debe realizar los caminos absolutos (todo el camino hasta el directorio o archivo que será indicado para el pipeline ex. /home/usuario/teste/) para cada archivo de entrada, en el caso de no hacerse, el pipeline será interrumpido durante la ejecución. La explicación de cada argumento puede ser verificada aquí..


Customizando el banco de snpEff

La herramienta snpEff presente en el ViralFlow ya viene configurada solamente con el genoma NC_045512.2 del virus SARS-CoV-2. En el caso de querer el análisis del snpEff para otros virus, deberá actualizarse el banco del snpEff con la siguiente línea de comando; ejemplo Dengue:


viralflow -add_entry_to_snpeff --org_name Dengue --genome_code NC_001474.2


sars-cov2

En este modelo, el análisis es realizado considerando el genoma de referencia NC_045512.2, y posee como análisis adicionales la inclusión de linajes con la herramienta Pangolin, y la inclusión de clados y mutaciones con la herramienta Nextclade. Para ello, el usuario necesita construir un archivo con los parámetros del análisis, como el ejemplo a continuación.


viralflow -run --params_file test_files/sars-cov-2.params


custom

En este modelo, el análisis es realizado considerando los archivos para el virus que el usuario desea analizar. De esta forma, el usuario es responsable por pasar cada uno de los archivos necesarios para el análisis. En el caso de que el usuario desee realizar el análisis del snpEff, debe pasar el código del refseq del genoma viral para el análisis:


viralflow -run --params_file test_files/denv.params


Actualización pangolín

Periódicamente, la herramienta Pangolin actualiza el banco de linajes, así como la filogenia de la clasificación de Usher, las constelaciones de mutaciones de scorpio y el modelo utilizado del pangoLearn. Para realizar la actualización de la herramienta y/o de sus bases de datos, basta ejecutar el ViralFlow con alguno de los comandos:


#actualiza la herramienta y las bases de datos
viralflow -update_pangolin

#solo actualiza las bases de datos
viralflow -update_pangolin_data

Argumentos

Argumento Valor estandard (default) Descripción
virus sars-cov2 Tipo de análisis (sars-cov2 o custom)
primersBED null Camino absoluto del archivo BED con informaciones de los primers usados en la amplificación genómica (opcional).
outDir launchDir/output/ Camino absoluto para el directorio donde serán almacenados los resultados.
inDir launchDir/input/ Camino absoluto para el directorio con los datos de entrada (directorio con los archivos FASTQ).
runSnpEff true Necesidad de ejecutar la herramienta snpEff (true or false).
writeMappedReads true Necesidad de generar los archivos FASTQ con las lecturas de secuenciación que mapearon en el genoma de referencia.
minLen 75 Tamaño mínimo que el read debe tener para no ser eliminado por el FastP.
depth 5 Profundidad mínima que una región debe ser secuenciada para ser considerada en el consenso.
mapping_quality 30 Umbral de calidad de mapeo para llamada de variantes.
base_quality 30 Umbral de calidad de base para llamada de variantes.
minDpIntrahost 100 Profundidad mínima que una región debe tener para ser considerada en el análisis de intrahuésped.
trimLen 0 Número de bases que deben ser cortadas (“trimadas”) en las dos extremidades de los reads.
refGenomeCode null Código refseq del genoma a ser utilizado em el análisis custom.
referenceGFF null Arquivo GFF do genoma a ser utilizado na análise custom.
referenceGenome null Archivo fasta del genoma a ser utilizado em el análisis custom.
nextflowSimCalls null Número de llamadas simultáneas que el nextflow puede realizar.
fastp_threads 1 Número de threads a ser utilizado em el análisis de la herramienta fastp.
bwa_threads 1 Número de threads a ser utilizado em el análisis de la herramienta bwa.
dedup false Este argumento habilita el modo de deduplicación del fastp. para activarlo, altere el valor para true en el archivo de prueba de parámetros.
ndedup 3 Cuando el modo de desduplicación está activo, se podrá usar niveles de precisión (1 - 6). Usted podrá alterar ese valor, pero recomendamos el estandard. Mientras más alto, más RAM y tiempo son consumidos. Para activarlo altere el valor de 1 para 6 en el archivo de prueba de parámetros.

Archivos de Outputs

La herramienta ViralFlow produce dos tipos de outputs: especifico y compilado.


Especifico

Para cada muestra en el análisis será creado un directorio de resultados con el patrón “prefijo_results” donde el prefijo es un código creado a partir del nombre del archivo fastq de la muestra. Cada directorio cuenta con los siguientes resultados:


Archivo Descripción
prefixo.all.fa.pango.out.csv Archivo tabulado con los resultados de la herramienta pangolin.
prefixo.ann.vcf Archivo vcf en formato tsv (Tab separated value - valores separados por coma) con la anotación de las variantes hecha por la herramienta snpEff.
prefixo.depth5.all.fa.nextclade.csv Archivo tabular con los resultados de la herramienta nextclade.
prefixo.depth5.amb.fa Genoma consenso con nucleótidos ambiguos en posiciones de alelos múltiples.
prefixo.depth5.fa Genoma consenso con nucleótidos mayoritarios. Consenso de la mayoría, normalmente depositado en el GISAID.
prefixo.depth5.fa.algn Genoma consenso alineado con el genoma de referencia (siguiendo el mismo tamaño, mafft --keeplenght).
prefixo.depth5.fa.algn.minor.fa Genoma consenso con nucleótidos minoritarios.
prefixo.depth5.fa.bc.intrahost.short.tsv Archivo tabular resumiendo las posiciones genómicas donde las variantes intrahuésped aparecen.
prefixo.depth5.fa.bc.intrahost.tsv Archivo tabular con todas las informaciones de las posiciones de variantes intrahuésped.
prefixo.mapped.R1.fq.gz Archivo FASTQ R1 con los reads mapeados.
prefixo.mapped.R2.fq.gz Archivo FASTQ R2 con los reads mapeados.
prefixo.metrics.genome.tsv Archivo tabular con métricas de profundidad y cobertura del mapeamento.
prefixo.fastp.html Archivo html con el resumen de los resultados de la herramienta fastp.
prefixo_snpEff_summary.html Archivo html con el resumen de los resultados de la herramienta snpEff.
prefixo.sorted.bam Archivo con el mapeamento sorteado de los reads de la muestra contra el genoma de referencia.
prefixo.tsv Archivo vcf-like generado por el iVar.
prefixo.unmapped.R1.bam.fq Archivo FASTQ R1 con los reads no mapeados.
prefixo.unmapped.R2.bam.fq Archivo FASTQ R2 con los reads no mapeados.
prefixo.vcf Archivo vcf.
metrics.alignment_summary_metrics Archivo de texto con un resumen de diversas métricas del mapeamento.
nextclade.errors.csv Archivo informando los errores del nextclade.
nextclade_gene_*.translation.fasta Archivo fasta con las proteínas de cada gen.
snpEff_genes.txt Archivo tabular con el número de variantes por impacto por gen.
wgs Archivo textual con métricas del mapeamento, incluyendo profundidad por región.
prefixo_coveragePlot.png Archivo PNG con la visualización gráfica de la cobertura del genoma.
prefixo_coveragePlot.svg Archivo SVG con la visualización gráfica de la cobertura del genoma.
prefixo_coveragePlot.html Archivo HTML con la visualización gráfica de la cobertura del genoma.
prefixo_snpPlot.png Archivo PNG con la visualización gráfica de los SNPs detectados en la muestra con relación al genoma referencia.
prefixo_snpPlot.svg Archivo SVG con la visualización gráfica de los SNPs detectados en la muestra con relación al genoma referencia.


Compilado

Al final del análisis, es generado un directorio llamado COMPILED_OUTPUT con los resultados compilados, donde:


Archivo Descripción
errors_detected.csv Muestras que con las que no fue posible generar consenso.
lineage_summary.csv Es generado en el análisis del sars-cov-2, presenta el contaje de los linajes identificados en el análisis, incluyendo los linajes de genomas minoritarios.
major_summary.csv Archivo tabular con un resumen de la profundidad, cobertura y linaje (en el caso de análisis de sars-cov-2) de los consensos mayoritarios.
minor_summary.csv Archivo tabular con un resumen de la profundidad, cobertura y linaje (en el caso de análisis de sars-cov-2) de los consensos minoritarios.
mutations.csv Archivo tabular con las mutaciones encontradas.
nextclade.csv Archivo tabular con el resultado del nextclade (en el caso de análisis de sars-cov-2).
pango.csv Archivo tabular con el resultado del pangolin (en el caso de análisis de sars-cov-2).
reads_count.csv Archivo tabular con el contaje de reads por muestra.
seqbatch.fa Archivo fasta con los consensos mayoritarios.
short_summary.csv Archivo tabular con un resumen de la profundidad, cobertura y linaje (en el caso de análisis de sars-cov-2) de ambos consensos, con las siguientes columnas:

  • cod: Prefijo definido para cada muestra;
  • mean_depth_coverag: Profundidad promedio;
  • sd_depth_coverage: Desvio estandard de la profundidad promedio;
  • median_depth_coverage: Profundidad mediana;
  • taxon: Prefijo de la muestra seguido por el código de consenso (mayor o menor);
  • linaje (solamente para sars-cov-2): Linaje del virus;
  • scorpio_call (solamente para sars-cov-2): Variante del virus;
  • coverage_breadth: Cobertura del montaje.
wgs.csv Archivo tabular con el resultado del picard.
VF_REPORT/index.html Archivo html con la compilación de los resultados del fastp y del snpEff.

Preguntas frecuentes (FAQ)

¿Debo montar los contenedores para cada análisis?

No, los contenedores solo deben ser reconstruidos en el caso de que ocurra alguna actualización de la herramienta.

¿El ViralFlow mostró un error debido a la falta de “unsquashfs” en el directorio “usr/local/bin/” que debo hacer?

Se debe crear un link simbólico para el “unsquashfs”, para ello ejecute la siguiente línea de comando: sudo ln -s/usr/bin/unsquashfs/usr/local/bin/unsquashfs.

¿Debo providenciar un archivo fasta de adaptadores?

Usted debe providenciar un archivo fasta con los primers de PCR solamente en análisis que utilizarán PCR para amplificación del material genético viral antes de la secuenciación.

Mi análisis de VialFlow reportó un error en la etapa de actualización del Pangolin, ¿por qué?

Esto puede ocurrir si el equipo de Pangolin lanza una versión con nuevas dependencias, en cuyo caso debe reconstruir el contenedor de Pangolin con la línea: singularity pull docker://staphb/pangolin

Mi instalación salió mal en la etapa de montaje de los contenedores, ¿por qué?

Lo que puede haber sucedido es que tengas una versión de singularity distinta a v3.11.4, puedes comprobarlo con singularity --version. Otro factor que puede causar errores es si su red de Internet bloquea los dominios de consulta para crear contenedores.

Instalé la herramienta, mis archivos están todos organizados siguiendo el manual, pero las muestras no son encontradas, ¿por qué?

El ViralFlow reconoce las muestras con los sufijos _R1 o _R2 de .fq.gz o .fastq.gz, verifique que sus muestras siguen el patrón necesario. Ejemplos:

  • ART_R1.fq.gz, ART1_R2.fq.gz serán reconocidos como la muestra ART1;
  • ART1_denv_R1.fastq.gz, ART1_denv_R2.fastq.gz serán reconocidos como la muestra ART1_denv.

¿Puedo ejecutar el ViralFlow en Windows?

A pesar de que algunas versiones de Windows integran una interface Linux por el WSL (Windows Subsystem for Linux), nuestro equipo de desarrollo no usó el ViralFlow en estos ambientes, por lo tanto, el usuario es libre para probar el workflow en este tipo de ambiente, pero no podrá contar con el soporte de nuestro equipo en el caso de errores provenientes de estas pruebas.

¿Cómo citar?

Actualmente hay dos publicaciones de ViralFlow, la primera, de 2022, que incluye las versiones “pre” 1.0, y la segunda, de 2024, que incluye la versión 1.0.

Dezordi, F.Z.; Neto, A.M.d.S.; Campos, T.d.L.; Jeronimo, P.M.C.; Aksenen, C.F.; Almeida, S.P.; Wallau, G.L.; on behalf of the Fiocruz COVID-19 Genomic Surveillance Network. ViralFlow: A Versatile Automated Workflow for SARS-CoV-2 Genome Assembly, Lineage Assignment, Mutations and Intrahost Variant Detection. Viruses 2022, 14, 217. https://doi.org/10.3390/v14020217

Silva, A. F., Silva Neto, A. M., Aksenen, C. F., Jeronimo, P. M. C., Dezordi, F. Z., Almeida, S. P., Costa, H. M. P., Salvato, R. S., Campos, T. L., Wallau, G. L., on behalf of the Fiocruz Genomic Network. (2024). ViralFlow v1.0—a computational workflow for streamlining viral genomic surveillance. NAR Genomics and Bioinformatics, 6(2), lqae056. https://doi.org/10.1093/nargab/lqae056