Cascabel es una canalización diseñada para ejecutar análisis de secuencia de amplicones en bibliotecas de lectura única o múltiple. El objetivo de este canal es crear diferentes archivos de salida que permitan al usuario explorar datos de una manera simple y significativa, así como facilitar el análisis posterior, basado en los archivos de salida generados.
CASCABEL fue diseñado para lecturas cortas de datos de secuencia de alto rendimiento. Cubre el control de calidad de los archivos fastq, el ensamblaje de lecturas de extremos emparejados en fragmentos (también puede manejar datos de un solo extremo), la división de las bibliotecas en muestras (opcional), la selección de OTU y la asignación de taxonomía. Además de otros archivos de salida, devolverá una tabla OTU.
Nuestro pipeline está implementado con Snakemake como motor de gestión del flujo de trabajo y permite personalizar los análisis ofreciendo varias opciones para la mayoría de los pasos. La tubería puede hacer uso de múltiples nodos informáticos y escalar desde computadoras personales hasta servidores informáticos. Los análisis y resultados son totalmente reproducibles y documentados en un informe html y pdf opcional.
Versión actual: 6.1.0
La forma más fácil y recomendada de instalar Cascabel es a través de Conda . La forma más rápida de obtener Conda es instalar Miniconda, una versión mini de Anaconda que incluye sólo Conda y sus dependencias.
Para instalar conda o miniconda, consulta el siguiente tutorial (recomendado) o, si estás trabajando con un sistema operativo Linux, puedes probar lo siguiente:
Descarga el instalador:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
Ejecute el script de instalación y siga las instrucciones.
bash Miniconda3-latest-Linux-x86_64.sh
Desafortunadamente, Cascabel tiene muchas dependencias y las últimas versiones de Conda encuentran conflictos entre ellas; sin embargo, con conda v 4.6.14 notamos que la instalación puede ejecutarse sin problemas. Para hacerlo, necesitamos degradar la versión de conda con el siguiente comando:
conda install conda=4.6.14
Una vez que haya instalado conda , estamos listos para clonar o descargar el proyecto.
Puedes clonar el proyecto:
git clone https://github.com/AlejandroAb/CASCABEL.git
O descargarlo desde este repositorio:
wget https://github.com/AlejandroAb/CASCABEL/archive/master.zip
Después de descargar o clonar el repositorio, vaya al directorio "CASCABEL" y allí ejecute el siguiente comando para crear el entorno de CASCABEL:
conda env create --name cascabel --file environment.yaml
Ahora que ha creado el entorno de Cascabel, puede instalar Snakemake siguiendo esta ayuda en línea o ejecutar el siguiente comando:
conda install -c bioconda -c conda-forge snakemake
Todas las dependencias requeridas por CASCABEL, excepto Snakemake y, por lo tanto, Python, se cargan en un entorno conda. En este sentido, CASCABEL utiliza matplotlib para generar algunos gráficos, por lo que es necesario tener instalada esta biblioteca antes de cargar el entorno. La forma recomendada de hacerlo es siguiendo la guía de instalación o también puedes probar con:
pip install matplotlib --user
*Considere utilizar la opción --user como se indicó anteriormente, si está realizando una instalación local o si no tiene derechos de sudo.
Después de instalar Snakemake y Matplotlib podremos activar nuestro nuevo entorno.
conda activate cascabel
Después de activar el entorno, es posible que Snakemake ya no esté en su RUTA, en tal caso simplemente exporte el directorio bin de Snakemake. es decir:
export PATH=$PATH:/path/to/miniconda3/bin
Sólo necesita seguir este paso más si planea ejecutar Cascabel con el flujo de trabajo asv .
Se informaron algunos problemas al instalar dada2 dentro de conda, por lo tanto, debemos realizar un paso final más para instalar dada2.
Ingrese al shell R (simplemente escriba R
) y ejecute el siguiente comando:
BiocManager::install("dada2", version = "3.10")
*Tenga en cuenta que BiocManager ya debería estar instalado, por lo que sólo necesita ejecutar el comando anterior. También puede encontrar más información en la guía de instalación de dada2.
Somos conscientes de que esta no es la instalación más sencilla, por lo que estamos trabajando en un contenedor de singularidad, mismo que esperamos tener disponible próximamente.
¡Gracias por tu comprensión!
Archivos de entrada requeridos:
Principales archivos de salida esperados para el análisis posterior
Ejecutar Cascabel
Todos los parámetros y el comportamiento del flujo de trabajo se especifican a través del archivo de configuración, por lo tanto, la forma más sencilla de ejecutar la canalización es completar algunos parámetros requeridos en dicho archivo.
# ------------------------------------------------------------------------------#
# Project Name #
# ------------------------------------------------------------------------------#
# The name of the project for which the pipeline will be executed. This should #
# be the same name used as the first parameter on init_sample.sh script (if #
# used for multiple libraries #
# ------------------------------------------------------------------------------#
PROJECT : " My_CASCABEL_Project "
# ------------------------------------------------------------------------------#
# LIBRARIES/SAMPLES #
# ------------------------------------------------------------------------------#
# SAMPLES/LIBRARIES you want to include in the analysis. #
# Use the same library names as with the init_sample.sh script. #
# Include each library name surrounded by quotes, and comma separated. #
# i.e LIBRARY: ["LIB_1","LIB_2",..."LIB_N"] #
# LIBRARY_LAYOUT: Configuration of the library; all the libraries/samples #
# must have the same configuration; use: #
# "PE" for paired-end reads [Default]. #
# "SE" for single-end reads. #
# ------------------------------------------------------------------------------#
LIBRARY : ["EXP1"]
LIBRARY_LAYOUT : " PE "
# ------------------------------------------------------------------------------#
# INPUT FILES #
# ------------------------------------------------------------------------------#
# To run Cascabel for multiple libraries you can provide an input file, tab #
# separated with the following columns: #
# - Library: Name of the library (this have to match with the values entered #
# in the LIBRARY variable described above). #
# - Forward reads: Full path to the forward reads. #
# - Reverse reads: Full path to the reverse reads (only for paired-end). #
# - metadata: Full path to the file with the information for #
# demultiplexing the samples (only if needed). #
# The full path of this file should be supplied in the input_files variable, #
# otherwise, you have to enter the FULL PATH for both: the raw reads and the #
# metadata file (barcode mapping file). The metadata file is only needed if #
# you want to perform demultiplexing. #
# If you want to avoid the creation of this file a third solution is available #
# using the script init_sample.sh. More info at the project Wiki: #
# https://github.com/AlejandroAb/CASCABEL/wiki#21-input-files #
# #
# ----------------------------- PARAMS -----------------------------#
# #
# - fw_reads: Full path to the raw reads in forward direction (R1) #
# - rw_reads: Full path to the raw reads in reverse direction (R2) #
# - metadata: Full path to the metadata file with barcodes for each sample #
# to perform library demultiplexing #
# - input_files: Full path to a file with the information for the library(s) #
# #
# ** Please supply only one of the following: #
# - fw_reads, rv_reads and metadata #
# - input_files #
# - or use init_sample.sh script directly #
# ------------------------------------------------------------------------------#
fw_reads : " /full/path/to/forward.reads.fq "
rv_reads : " /full/path/to/reverse.reads.fq "
metadata : " /full/path/to/metadata.barcodes.txt "
# or
input_files : " /full/path/to/input_reference.txt "
# ------------------------------------------------------------------------------#
# ASV_WF: Binned qualities and Big data workflow #
# ------------------------------------------------------------------------------#
# For fastq files with binned qualities (e.g. NovaSeq and NextSeq) the error #
# learning process within dada2 can be affected, and some data scientists #
# suggest that enforcing monotonicity could be beneficial for the analysis. #
# In this section, you can modify key parameters to enforce monotonicity and #
# also go through a big data workflow when the number of reads may exceed the #
# physical memory limit.
# More on binned qualities: https://www.illumina.com/content/dam/illumina-marketing/documents/products/technotes/technote_understanding_quality_scores.pdf
# You can also follow this excellent thread about binned qualities and Dada2: https://forum.qiime2.org/t/novaseq-and-dada2-incompatibility/25865/8
# ------------------------------------------------------------------------------#
binned_q_scores : " F " # Binned quality scores.Set this to "T" if you want to enforce monotonicity
big_data_wf : " F " # Set to true when your sequencing run contains more than 10^9 reads (depends on RAM availability!)
# ------------------------------------------------------------------------------#
# RUN #
# ------------------------------------------------------------------------------#
# Name of the RUN - Only use alphanumeric characters and don't use spaces. #
# This parameter helps the user to execute different runs (pipeline executions)#
# with the same input data but with different parameters (ideally). #
# The RUN parameter can be set here or remain empty, in the latter case, the #
# user must assign this value via the command line. #
# i.e: --config RUN=run_name #
# ------------------------------------------------------------------------------#
RUN : " My_First_run "
# ------------------------------------------------------------------------------#
# ANALYSIS TYPE #
# rules: #
# ------------------------------------------------------------------------------#
# Cascabel supports two main types of analysis: #
# 1) Analysis based on traditional OTUs (Operational Taxonomic Units) which #
# are mainly generated by clustering sequences based on a sheared #
# similarity threshold. #
# 2) Analysis based on ASV (Amplicon sequence variant). This kind of analysis #
# deal also with the errors on the sequence reads such that true sequence #
# variants can be resolved, down to the level of single-nucleotide #
# differences. #
# #
# ----------------------------- PARAMS -----------------------------#
# #
# - ANALYSIS_TYPE "OTU" or "ASV". Defines the type analysis #
# ------------------------------------------------------------------------------#
ANALYSIS_TYPE : " OTU "
Para obtener más información sobre cómo proporcionar estos datos, siga el enlace para obtener instrucciones detalladas.
Como puede ver en el fragmento anterior del archivo de configuración (config.yaml), los parámetros requeridos para que CASCABEL se inicie son: PROJECT , LIBRARY , RUN , fw_reads , rv_reads y metadata . Después de ingresar estos parámetros, tómate unos minutos y revisa el resto del archivo de configuración y sobrescribe las configuraciones según tus necesidades. La mayoría de los valores ya están preconfigurados. El archivo de configuración se explica mediante el uso de encabezados significativos antes de cada regla, que explican el objetivo de dicha regla y los diferentes parámetros que el usuario puede usar. Es muy importante mantener la sangría del archivo (no cambiar tabulaciones ni espacios), así como el nombre de los parámetros. Una vez que tenga valores válidos para estas entradas, estará listo para ejecutar el pipeline (antes de iniciar CASCABEL siempre es una buena práctica hacer un "ensayo"):
Además, observe la sección TIPO DE ANÁLISIS . Cascabel admite dos tipos principales de análisis, OTU (Unidades taxonómicas operativas) y ASV (Variantes de secuencia de amplicones). Aquí puede seleccionar el flujo de trabajo de destino que ejecutará Cascabel. Para obtener más información, consulte la sección Tipo de análisis.
snakemake --configfile config.yaml
Opcionalmente, puede especificar los mismos parámetros* a través del indicador --config, en lugar de hacerlo dentro del archivo config.yaml:
snakemake --configfile config.yaml --config PROJECT="My_CASCABEL_Project" RUN="My_First_run" fw_reads="//full/path/to/forward.reads.fq" rv_reads="/full/path/to/reverse.reads.fq" metadata="full/path/to/metadata.barcodes.txt"
*Excepto la BIBLIOTECA, ya que esta se declara como un arreglo, por lo tanto se debe llenar dentro del archivo de configuración
Para obtener una guía completa sobre cómo configurar y usar CASCABEL, visite la wiki oficial del proyecto.
Proporcionamos algunos archivos de configuración "precargados" para las principales configuraciones posibles, como lecturas finales emparejadas con códigos de barras simples y dobles para análisis OTU y ASV. Recomendamos encarecidamente tomar decisiones informadas sobre la configuración de los parámetros que coincidan con las necesidades individuales del experimento y el conjunto de datos.
Para probar el pipeline, también sugerimos intentar ejecutarlo con los datos de prueba de CASCABEL.
Ejemplo de archivo de mapeo de código de barras
Cascabel: un canal de análisis de datos de secuencia de amplicones escalable y versátil que ofrece resultados reproducibles y documentados. Alejandro Abdala Asbun, Marc A Besseling, Sergio Balzano, Judith van Bleijswijk, Harry Witte, Laura Villanueva, Julia C Engelmann Frente. Gineta.; doi: https://doi.org/10.3389/fgene.2020.489357