Cascabel é um pipeline projetado para executar análises de sequências de amplicons em bibliotecas de leitura únicas ou múltiplas. O objetivo deste pipeline é criar diferentes arquivos de saída que permitam ao usuário explorar os dados de forma simples e significativa, bem como facilitar a análise downstream, com base nos arquivos de saída gerados.
CASCABEL foi projetado para leitura curta de dados de sequência de alto rendimento. Ele cobre o controle de qualidade nos arquivos fastq, montagem de leituras de pares em fragmentos (também pode lidar com dados de extremidade única), divisão das bibliotecas em amostras (opcional), seleção de OTU e atribuição de taxonomia. Além de outros arquivos de saída, retornará uma tabela OTU.
Nosso pipeline é implementado com Snakemake como mecanismo de gerenciamento de fluxo de trabalho e permite customizar as análises oferecendo diversas opções para a maioria das etapas. O pipeline pode fazer uso de vários nós de computação e escalas, desde computadores pessoais até servidores de computação. As análises e resultados são totalmente reproduzíveis e documentados em um relatório html e pdf opcional.
Versão atual: 6.1.0
A maneira mais fácil e recomendada de instalar o Cascabel é via Conda . A maneira mais rápida de obter o Conda é instalar o Miniconda, uma versão mini do Anaconda que inclui apenas o conda e suas dependências.
Para instalar o conda ou miniconda consulte o seguinte tutorial (recomendado) ou, se estiver trabalhando com um sistema operacional Linux, você pode tentar o seguinte:
Baixe o instalador:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
Execute o script de instalação e siga as instruções.
bash Miniconda3-latest-Linux-x86_64.sh
Infelizmente Cascabel tem muitas dependências e as versões mais recentes do Conda encontram conflitos entre elas, porém com o conda v 4.6.14 notamos que a instalação pode funcionar sem problemas. Para fazer isso, precisamos fazer o downgrade da versão do conda com o seguinte comando:
conda install conda=4.6.14
Depois de instalar o conda , estamos prontos para clonar ou baixar o projeto.
Você pode clonar o projeto:
git clone https://github.com/AlejandroAb/CASCABEL.git
Ou baixe-o deste repositório:
wget https://github.com/AlejandroAb/CASCABEL/archive/master.zip
Após baixar ou clonar o repositório, faça cd para o diretório "CASCABEL" e lá execute o seguinte comando para criar o ambiente CASCABEL:
conda env create --name cascabel --file environment.yaml
Agora que você criou o ambiente do cascabel, você pode instalar o Snakemake seguindo esta ajuda online ou executar o seguinte comando:
conda install -c bioconda -c conda-forge snakemake
Todas as dependências exigidas pelo CASCABEL, exceto pelo Snakemake e, portanto, pelo Python, são carregadas em um ambiente conda. Nesse sentido, CASCABEL utiliza matplotlib para gerar alguns gráficos, portanto é necessário ter esta biblioteca instalada antes de carregar o ambiente. A maneira recomendada de fazer isso é seguir o guia de instalação ou você também pode tentar:
pip install matplotlib --user
*Considere usar o sinalizador --user como acima, se você estiver fazendo uma instalação local ou se não tiver direitos sudo
Após instalar o Snakemake e o Matplotlib podemos ativar nosso novo ambiente.
conda activate cascabel
Após ativar o ambiente é possível que o Snakemake não esteja mais no seu PATH, neste caso basta exportar o diretório bin do Snakemake. ou seja:
export PATH=$PATH:/path/to/miniconda3/bin
Você só precisa seguir mais uma etapa se estiver planejando executar o Cascabel com o fluxo de trabalho asv .
Existem alguns problemas relatados durante a instalação do dada2 no conda, portanto, precisamos realizar mais uma etapa final para instalar o dada2
Entre no shell R (basta digitar R
) e execute o seguinte comando:
BiocManager::install("dada2", version = "3.10")
*Observe que o BiocManager já deve estar instalado, bastando executar o comando anterior. Você também pode encontrar mais informações no guia de instalação do dada2.
Sabemos que esta não é a instalação mais fácil, por isso estamos a trabalhar num contentor de singularidade, o mesmo que esperamos ter disponível em breve.
Obrigado pela sua compreensão!
Arquivos de entrada necessários:
Principais arquivos de saída esperados para análise downstream
Corra Cascabel
Todos os parâmetros e comportamento do fluxo de trabalho são especificados através do arquivo de configuração, portanto a maneira mais fácil de ter o pipeline rodando é preenchendo alguns parâmetros obrigatórios nesse arquivo.
# ------------------------------------------------------------------------------#
# 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 obter mais informações sobre como fornecer esses dados, siga o link para obter instruções detalhadas
Como você pode ver no fragmento anterior do arquivo de configuração (config.yaml), os parâmetros necessários para o CASCABEL iniciar são: PROJECT , LIBRARY , RUN , fw_reads , rv_reads e metadata . Depois de inserir esses parâmetros, reserve alguns minutos e analise o restante do arquivo de configuração e substitua as configurações de acordo com suas necessidades. A maioria dos valores já está pré-configurada. O arquivo de configuração se explica usando cabeçalhos significativos antes de cada regra, explicando o objetivo de tal regra e os diferentes parâmetros que o usuário pode usar. É muito importante manter o recuo do arquivo (não alterar tabulações e espaços), bem como o nome dos parâmetros. Depois de ter valores válidos para essas entradas, você estará pronto para executar o pipeline (antes de iniciar o CASCABEL é sempre uma boa prática fazer uma "simulação"):
Além disso, observe a seção TIPO DE ANÁLISE . Cascabel suporta dois tipos principais de análise, OTUs (Operational Taxonomic Units) e ASVs (Amplicon Sequence Variants), aqui você pode selecionar o fluxo de trabalho alvo que Cascabel irá executar. Para obter mais informações, consulte a seção Tipo de análise
snakemake --configfile config.yaml
Opcionalmente, você pode especificar os mesmos parâmetros* por meio do sinalizador --config, em vez de dentro do arquivo 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"
*Exceto LIBRARY, pois esta é declarada como um array, portanto deve ser preenchida dentro do arquivo de configuração
Para um guia completo sobre como configurar e usar o CASCABEL, visite o wiki oficial do projeto
Fornecemos alguns arquivos de configuração "pré-preenchidos" para as principais configurações possíveis, como leituras finais emparelhadas com código de barras duplo e único para análise de OTU e ASV. Aconselhamos vivamente que faça escolhas informadas sobre as configurações dos parâmetros que correspondam às necessidades individuais da experiência e do conjunto de dados.
Para testar o pipeline também sugerimos tentar executá-lo com os dados de teste do CASCABEL
Exemplo de arquivo de mapeamento de código de barras
Cascabel: um pipeline de análise de dados de sequência de amplicon escalonável e versátil que fornece resultados reproduzíveis e documentados. Alejandro Abdala Asbun, Marc A Besseling, Sergio Balzano, Judith van Bleijswijk, Harry Witte, Laura Villanueva, Julia C Engelmann Front. Geneta.; faça: https://doi.org/10.3389/fgene.2020.489357