From edf3a243156b0853d06fa18502dd1f2788716aea Mon Sep 17 00:00:00 2001 From: Sarah Griffiths Date: Wed, 6 Sep 2023 20:18:40 +0000 Subject: [PATCH] deal with transcriptome fasta headers that contains | --- .gitlab-ci.yml | 34 ++++++++++++++++++++++++---------- CHANGELOG.md | 4 ++++ README.md | 3 ++- docs/quickstart.md | 3 ++- main.nf | 35 +++++++++++++++++++++++++++++++++++ 5 files changed, 67 insertions(+), 12 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e6a3e0..13c8148 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -45,7 +45,8 @@ docker-run: - MATRIX_NAME: [ "fusions", "differential_expression", "isoforms", "only_differential_expression", "differential_expression_gff3", - "ncbi_gzip", "denovo", "ncbi_no_gene_id", "ensembl_with_versions" + "ncbi_gzip", "denovo", "ncbi_no_gene_id", "ensembl_with_versions", + "differential_expression_mouse" ] rules: # NOTE As we're overriding the rules block for the included docker-run @@ -58,18 +59,18 @@ docker-run: NF_BEFORE_SCRIPT: wget -O test_data.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/wf-isoforms_test_data.tar.gz && tar -xzvf test_data.tar.gz NF_WORKFLOW_OPTS: "--fastq ERR6053095_chr20.fastq --transcriptome-source reference-guided \ --ref_genome chr20/hg38_chr20.fa --ref_annotation chr20/gencode.v22.annotation.chr20.gtf" - NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref + NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "denovo" variables: NF_WORKFLOW_OPTS: "--fastq test_data/fastq/SIRV_E0_PCS109_50.fq.gz --transcriptome_source denovo" - NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref,build_minimap_index + NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref,build_minimap_index,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "fusions" variables: NF_BEFORE_SCRIPT: wget -O test_data.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/wf-isoforms_test_data.tar.gz && tar -xzvf test_data.tar.gz NF_WORKFLOW_OPTS: "--fastq ERR6053095_chr20.fastq --transcriptome-source reference-guided \ --ref_genome chr20/hg38_chr20.fa --ref_annotation chr20/gencode.v22.annotation.chr20.gtf \ --jaffal_refBase chr20/ --jaffal_genome hg38_chr20 --jaffal_annotation genCode22" - NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref + NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "differential_expression" variables: NF_BEFORE_SCRIPT: wget -O differential_expression.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/differential_expression.tar.gz && tar -xzvf differential_expression.tar.gz @@ -78,7 +79,7 @@ docker-run: --ref_genome differential_expression/hg38_chr20.fa --transcriptome-source reference-guided \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ --direct_rna --minimap2_index_opts '-k 15' --sample_sheet test_data/sample_sheet.csv" - NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref + NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "only_differential_expression" variables: NF_BEFORE_SCRIPT: wget -O differential_expression.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/differential_expression.tar.gz && tar -xzvf differential_expression.tar.gz @@ -92,7 +93,7 @@ docker-run: --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > preprocess_reads,merge_transcriptomes,assemble_transcripts,decompress_annotation,decompress_ref, - build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam + build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "differential_expression_gff3" variables: NF_BEFORE_SCRIPT: wget -O differential_expression.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/differential_expression.tar.gz && tar -xzvf differential_expression.tar.gz @@ -106,7 +107,7 @@ docker-run: --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > preprocess_reads,merge_transcriptomes,assemble_transcripts,decompress_annotation,decompress_ref, - build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam + build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "ncbi_gzip" variables: NF_BEFORE_SCRIPT: wget -O differential_expression_ncbi.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/differential_expression_ncbi.tar.gz && tar -xzvf differential_expression_ncbi.tar.gz @@ -120,7 +121,7 @@ docker-run: --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > preprocess_reads,merge_transcriptomes,assemble_transcripts, - build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam + build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "ncbi_no_gene_id" variables: NF_BEFORE_SCRIPT: wget -O differential_expression_ncbi.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/differential_expression_ncbi.tar.gz && tar -xzvf differential_expression_ncbi.tar.gz @@ -133,7 +134,7 @@ docker-run: --transcriptome_assembly false --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > preprocess_reads,merge_transcriptomes,assemble_transcripts, - build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam + build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam,decompress_transcriptome,preprocess_ref_transcriptome - if: $MATRIX_NAME == "ensembl_with_versions" variables: NF_BEFORE_SCRIPT: wget -O differential_expression.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/differential_expression.tar.gz && tar -xzvf differential_expression.tar.gz @@ -146,4 +147,17 @@ docker-run: --transcriptome_assembly false --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > preprocess_reads,merge_transcriptomes,assemble_transcripts, - build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam + build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam,decompress_transcriptome,preprocess_ref_transcriptome + - if: $MATRIX_NAME == "differential_expression_mouse" + variables: + NF_BEFORE_SCRIPT: wget -O differential_expression_mouse.tar.gz https://ont-exd-int-s3-euwst1-epi2me-labs.s3.amazonaws.com/wf-isoforms/differential_expression_mouse.tar.gz && tar -xzvf differential_expression_mouse.tar.gz + NF_WORKFLOW_OPTS: "-executor.\\$$local.memory 16GB \ + --fastq differential_expression_mouse/differential_expression_fastq \ + --transcriptome-source precomputed --de_analysis \ + --ref_genome differential_expression_mouse/GRCm39.genome.fa.gz \ + --ref_annotation differential_expression_mouse/gencode.vM33.annotation.gtf \ + --direct_rna --ref_transcriptome differential_expression_mouse/gencode.vM33.transcripts.fa.gz \ + --transcriptome_assembly false --sample_sheet test_data/sample_sheet.csv" + NF_IGNORE_PROCESSES: > + preprocess_reads,merge_transcriptomes,assemble_transcripts,decompress_annotation, + build_minimap_index,get_transcriptome,merge_gff_bundles,run_gffcompare,build_minimap_index,split_bam diff --git a/CHANGELOG.md b/CHANGELOG.md index c6fde69..447887f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v0.3.1] +### Added +- Handling for input reference transcriptome headers that contain `|` + ## [v0.3.0] ### Changed - Improve differential expression outputs. diff --git a/README.md b/README.md index a4e9a98..31ae721 100644 --- a/README.md +++ b/README.md @@ -245,12 +245,13 @@ nextflow run epi2me-labs/wf-transcriptomes \ --ref_transcriptome differential_expression/ref_transcriptome.fasta \ --sample_sheet test_data/sample_sheet.csv ``` -You can also run the differential expression section of the workflow on its own by providing a reference transcriptome and setting the transcriptome assembly parameter to false. +You can also run the differential expression section of the workflow on its own by providing a reference transcriptome and setting the `--transcriptome_source` to precomputed. eg. ``` nextflow run epi2me-labs/wf-transcriptomes \ --fastq differential_expression/differential_expression_fastq \ --de_analysis \ + --transcriptome_source precomputed \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ --direct_rna --minimap2_index_opts '-k 15' \ diff --git a/docs/quickstart.md b/docs/quickstart.md index 31c89a9..c3da56d 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -155,12 +155,13 @@ nextflow run epi2me-labs/wf-transcriptomes \ --ref_transcriptome differential_expression/ref_transcriptome.fasta \ --sample_sheet test_data/sample_sheet.csv ``` -You can also run the differential expression section of the workflow on its own by providing a reference transcriptome and setting the transcriptome assembly parameter to false. +You can also run the differential expression section of the workflow on its own by providing a reference transcriptome and setting the `--transcriptome_source` to precomputed. eg. ``` nextflow run epi2me-labs/wf-transcriptomes \ --fastq differential_expression/differential_expression_fastq \ --de_analysis \ + --transcriptome_source precomputed \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ --direct_rna --minimap2_index_opts '-k 15' \ diff --git a/main.nf b/main.nf index 71b8e99..c7fc954 100644 --- a/main.nf +++ b/main.nf @@ -58,6 +58,7 @@ process getParams { } + process decompress_ref { label "isoforms" cpus 1 @@ -83,6 +84,21 @@ process decompress_annotation { """ } + + +process decompress_transcriptome { + label "isoforms" + cpus 1 + input: + path "compressed_ref.gz" + output: + path "compressed_ref", emit: decompressed_ref + """ + gzip -df "compressed_ref.gz" + """ +} + + // Remove empty transcript ID fields process preprocess_ref_annotation { label "isoforms" @@ -97,6 +113,21 @@ process preprocess_ref_annotation { """ } +// Just keep transcript ID for each transcriptome fasta +process preprocess_ref_transcriptome { + label "isoforms" + cpus 1 + input: + path "ref_transcriptome" + output: + path "ammended.${ref_transcriptome}" + """ + sed -i -e 's/|.*//' ${ref_transcriptome} + mv ${ref_transcriptome} "ammended.${ref_transcriptome}" + """ +} + + process preprocess_reads { /* @@ -581,6 +612,10 @@ workflow pipeline { } else { transcriptome = Channel.fromPath(ref_transcriptome) + if (file(params.ref_transcriptome).extension == "gz") { + transcriptome = decompress_transcriptome(ref_transcriptome) + } + transcriptome = preprocess_ref_transcriptome(transcriptome) gtf = ref_annotation } de = differential_expression(transcriptome, input_reads, sample_sheet, gtf)