Pipeline RNA-seq reproducible en Nextflow DSL2 para el dataset GSE52778 (8 muestras paired-end). Procesa desde el control de calidad inicial hasta el análisis exploratorio en R, con contenedores Docker/Singularity.
sudo apt install sra-toolkit pigz
chmod +x scripts/download_data.sh
./scripts/download_data.shchmod +x scripts/prepare_genome.sh
./scripts/prepare_genome.shEstructura esperada tras la descarga:
data/
├── SRR*/
│ ├── SRR*_1.fastq.gz
│ └── SRR*_2.fastq.gz
└── genome/
├── Homo_sapiens.GRCh38.dna.primary_assembly.fa
└── Homo_sapiens.GRCh38.111.gtf
# Ejecución completa
nextflow run scripts/main.nf -profile docker
# Reanudar una ejecución interrumpida
nextflow run scripts/main.nf -profile docker -resumesbatch scripts/script.shPara reanudar una ejecución interrumpida en Picasso:
nextflow run scripts/main.nf -profile picasso -resume| # | Proceso | Módulo | Descripción |
|---|---|---|---|
| 1 | FASTQC (raw) | 01_fastqc.nf |
Control de calidad de lecturas crudas |
| 2 | Trimmomatic | 02_trimmomatic.nf |
Eliminación de adaptadores y bases de baja calidad |
| 3 | FASTQC (trim) | 01_fastqc.nf |
Control de calidad post-trimming |
| 4 | STAR_INDEX | 03_star_index.nf |
Generación del índice STAR (una sola vez) |
| 5 | STAR_ALIGN | 04_star_align.nf |
Alineamiento al genoma humano (por muestra) |
| 6 | SAMtools | 05_samtools.nf |
Ordenación, indexado, flagstat e idxstats |
| 7 | Picard MarkDuplicates | 06_picard_markdup.nf |
Marcado de duplicados sin eliminarlos |
| 8 | featureCounts | 07_featurecounts.nf |
Cuantificación por gen (todos los BAMs juntos) |
| 9 | MultiQC | 08_multiqc.nf |
Informe de QC agregado |
| 10 | R exploratorio | 09_rnaseq_r.nf |
Boxplot + PCA con edgeR/ggplot2 |
Analiza la calidad de las lecturas FASTQ de cada muestra en paralelo.
Los .zip y .html se integran en el informe MultiQC final.
- Módulo:
scripts/modules/01_fastqc.nf - Imagen:
quay.io/biocontainers/fastqc:0.12.1--hdfd78af_0
Elimina adaptadores Illumina y bases de baja calidad (paired-end). Los logs se integran en el informe MultiQC final.
- Módulo:
scripts/modules/02_trimmomatic.nf - Imagen:
quay.io/biocontainers/trimmomatic:0.39--hdfd78af_2
Dos procesos separados:
-
STAR_INDEX: genera el índice una sola vez a partir del FASTA + GTF.
-
STAR_ALIGN: alinea cada muestra en paralelo usando el índice generado.
-
Módulos:
scripts/modules/03_star_index.nf,scripts/modules/04_star_align.nf -
Imagen:
quay.io/biocontainers/star:2.7.11b--h5ca1c30_8
Ordena el BAM por coordenadas, genera el índice .bai, y calcula métricas de alineamiento:
- sort: ordenación por coordenadas genómicas
- index: creación del
.bai - flagstat: resumen de reads mapeados, paired, etc.
- idxstats: estadísticas por cromosoma
Las salidas .flagstat.txt e .idxstats.txt van a MultiQC.
El BAM ordenado + índice pasan a Picard MarkDuplicates.
- Módulo:
scripts/modules/05_samtools.nf - Imagen:
quay.io/biocontainers/samtools:1.19.2--h50ea8bc_1
Marca duplicados ópticos y de PCR sin eliminarlos (REMOVE_DUPLICATES=false).
El BAM resultante mantiene todas las reads originales con la etiqueta duplicate en el FLAG.
-
Entrada: BAM ordenado por coordenadas + índice (de SAMtools)
-
Salida: BAM con duplicados marcados + índice → pasa a featureCounts
-
Métricas: tabla
.markdup_metrics.txt→ pasa a MultiQC -
Módulo:
scripts/modules/06_picard_markdup.nf -
Imagen:
quay.io/biocontainers/picard:3.1.1--hdfd78af_0 -
Memoria JVM: 80% de la RAM asignada al proceso (
-Xmx) -
Parámetros clave:
--ASSUME_SORT_ORDER coordinate,--VALIDATION_STRINGENCY LENIENT
Cuantifica reads por gen usando todos los BAMs con duplicados marcados como entrada conjunta. Produce una matriz de cuentas (genes en filas, muestras en columnas) y un resumen de asignación.
-
Entrada: todos los BAMs de Picard + GTF de anotación
-
Salida:
featurecounts.txt(matriz) +featurecounts.txt.summary→ pasa a MultiQC -
Módulo:
scripts/modules/07_featurecounts.nf -
Imagen:
quay.io/biocontainers/subread:2.1.1--h577a1d6_0
Agrega todos los informes de calidad en un único HTML interactivo:
-
FastQC (raw + trim)
-
Trimmomatic logs
-
STAR Log.final.out
-
SAMtools flagstat
-
featureCounts summary
-
Módulo:
scripts/modules/08_multiqc.nf -
Imagen:
quay.io/biocontainers/multiqc:1.35--pyhdfd78af_1
Análisis estadístico con edgeR y ggplot2:
-
Boxplot de distribución de expresión antes y después de normalizar (TMM)
-
PCA no supervisado por condición (Dexamethasone vs Untreated)
-
Módulo:
scripts/modules/09_rnaseq_r.nf -
Script R:
scripts/bin/rnaseq_exploratory.R -
Imagen:
bioconductor/bioconductor_docker:RELEASE_3_18
El clúster Picasso (SCBI-UMA) usa Singularity/Apptainer en lugar de Docker y Slurm como gestor de colas.
# Cargar módulos necesarios (ver versiones disponibles con: module avail)
module load Apptainer/1.2.5
module load Java/17
# Verificar que nextflow está disponible
nextflow -version| Ruta | Uso |
|---|---|
$HOME |
Repo, scripts, resultados finales, caché Singularity (.sif). Persistente. |
$FSCRATCH |
Directorio work/ de Nextflow. I/O rápido. Se purga tras ~2 meses. |
# Desde la raíz del repo:
sbatch scripts/script.shEl script script.sh solicita recursos mínimos para el controlador de Nextflow (2 CPUs, 8 GB, 48 h).
Cada proceso del pipeline (FastQC, Trimmomatic, STAR_INDEX, STAR_ALIGN×8, SAMtools, Picard, featureCounts, MultiQC, R) se envía como un trabajo Slurm independiente gracias al executor configurado en nextflow.config.
# Editar script.sh y añadir -resume al comando nextflow, o ejecutar directamente:
nextflow run scripts/main.nf -profile picasso -resumesqueue -u $USER # ver trabajos en cola
scancel <job_id> # cancelar un trabajo
cat logs/nf_<job_id>.out # logs del controlador NextflowLos outputs se guardan en results/:
results/
├── fastqc/ → informes de calidad (raw + trim)
├── trimmomatic/ → lecturas limpias y logs de trimming
├── star_alignment/ → BAM alineados, logs STAR, SJ tables
├── samtools/ → BAM ordenados, índices, flagstat, idxstats
├── picard_markdup/ → BAM con duplicados marcados, métricas
├── featurecounts/ → matriz de cuentas + summary
├── multiqc/ → multiqc_report.html
└── R_exploratory/ → boxplot_raw.png, boxplot_normalized.png, pca_plot.png
Según la rúbrica de la actividad, el ZIP final debe contener:
Actividad_Modulo8.zip
├── scripts/ ← main.nf, nextflow.config, modules/, bin/, assets/
├── memoria_analisis.pdf ← descripción, parámetros, interpretación
└── resultados/
└── multiqc_report.html ← informe de calidad agregado
No incluir en el ZIP: data/, work/, results/ (solo copiar el HTML de MultiQC), archivos FASTQ, BAM, índices, ni datos genómicos.
- Todas las imágenes Docker usan
quay.io/biocontainers/...con tag exacto (incluyendo hash de build de Bioconda). Ninguna usa:latest. - Memoria recomendada local: mínimo 8 GB RAM.
- En Picasso: STAR_INDEX requiere 64 GB RAM, STAR_ALIGN 45 GB RAM.
- Tiempo de ejecución aproximado en local: 1.5 horas para las 8 muestras.
- En Picasso: el tiempo total depende de la cola; STAR_INDEX tarda ~30-60 min.
- El
scripts/bin/rnaseq_exploratory.Rse ejecuta dentro del contenedor de Bioconductor; instala automáticamente edgeR, ggplot2, dplyr y tidyr en la primera ejecución.