diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0dcb8fdb0..295c1be94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,7 @@ jobs: test_profile: - "test_stub" - "test_build" + - "test_stub_bam" compute_profile: - "docker" - "singularity" diff --git a/CHANGELOG.md b/CHANGELOG.md index 373d2724d..3bf8819c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `CTATSPLICING_PREPGENOMELIB` to update the starfusion genome library directory with a cancer splicing index. [#610](https://github.com/nf-core/rnafusion/pull/610) - Add nf-test to local subworkflow: `FUSIONREPORT_WORKFLOW`. [#607](https://github.com/nf-core/rnafusion/pull/607) - Add nf-test to local module: `ARRIBA_VISUALISATION`. [#625](https://github.com/nf-core/rnafusion/pull/625) +- Added the following fields to the samplesheet [#647](https://github.com/nf-core/rnafusion/pull/647): + - `bam`: A BAM file aligned with STAR, it's the responsibility of the pipeline user to make sure this file has been correctly called. + - `bai`: The index of the BAM file, this is not required when a `bam` file has been given but can increase the pipeline speed a bit. + - `cram`: A CRAM file aligned with STAR, it's the responsibility of the pipeline user to make sure this file has been correctly called. + - `crai`: The index of the CRAM file, this is not required when a `cram` file has been given but can increase the pipeline speed a bit. + - `junctions`: A file containing the junctions determined by STAR (needed by `starfusion` and `ctatsplicing`) + - `splice_junctions` A file containing the splice junctions determined by STAR (needed by `ctatsplicing`) ### Changed diff --git a/assets/schema_input.json b/assets/schema_input.json index f38d29c48..60f8369af 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -27,12 +27,75 @@ "pattern": "^\\S+f(ast)?q\\.gz$", "errorMessage": "FastQ file for reads 2 cannot contain spaces, has to exist and must have extension '.fq.gz' or '.fastq.gz'" }, + "bam": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.bam$", + "errorMessage": "BAM file cannot contain spaces, has to exist and must have extension '.bam'" + }, + "bai": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.bam\\.bai$", + "errorMessage": "BAI file cannot contain spaces, has to exist and must have extension '.bam.bai'" + }, + "cram": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.cram$", + "errorMessage": "CRAM file cannot contain spaces, has to exist and must have extension '.cram'" + }, + "crai": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.cram\\.crai$", + "errorMessage": "CRAI file cannot contain spaces, has to exist and must have extension '.cram.crai'" + }, + "junctions": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.junction$", + "errorMessage": "Junctions file cannot contain spaces, has to exist and must have extension '.junction'" + }, + "splice_junctions": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.SJ.out.tab$", + "errorMessage": "Split junctions file cannot contain spaces, has to exist and must have extension '.SJ.out.tab'" + }, "strandedness": { "type": "string", "enum": ["forward", "reverse", "unstranded", "unknown"], "errorMessage": "Strandedness has to be 'forward', 'reverse', 'unstranded' or 'unknown'" } }, - "required": ["sample", "fastq_1", "fastq_2", "strandedness"] + "dependentRequired": { + "bai": ["bam"], + "crai": ["cram"] + }, + "required": ["sample", "strandedness"], + "anyOf": [ + { + "required": ["fastq_1", "fastq_2"] + }, + { + "required": ["bam"] + }, + { + "required": ["cram"] + }, + { + "required": ["junctions"] + }, + { + "required": ["splice_junctions"] + } + ] } } diff --git a/conf/test.config b/conf/test.config index e29dc54af..7e5c591ef 100644 --- a/conf/test.config +++ b/conf/test.config @@ -15,7 +15,7 @@ params { config_profile_description = 'Minimal test dataset to check pipeline function' // Input data - input = params.pipelines_testdata_base_path +'rnafusion/testdata/human/samplesheet_valid.csv' + input = "${projectDir}/tests/csv/fastq.csv" tools = "all" no_cosmic = true } diff --git a/conf/test_build.config b/conf/test_build.config index 511b83657..aecf79e7d 100644 --- a/conf/test_build.config +++ b/conf/test_build.config @@ -35,7 +35,7 @@ params { // Input data references_only = true - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/rnafusion/testdata/human/samplesheet_valid.csv' + input = "${projectDir}/tests/csv/fastq.csv" no_cosmic = true tools = "arriba,starfusion,fusionreport,salmon,fusioninspector" fasta = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/minigenome.fa' diff --git a/docs/usage.md b/docs/usage.md index f3c0360d0..5bd348e78 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -83,7 +83,7 @@ nextflow run nf-core/rnafusion \ -profile \ --references_only \ --cosmic_username --cosmic_passwd \ - --fusionreport \ + --tools fusionreport \ --genomes_base \ --outdir ``` @@ -111,7 +111,7 @@ The references are only built based on ensembl version 102. It is not possible c ### Samplesheet input -You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. The pipeline will detect whether a sample is single- or paired-end from the samplesheet - the `fastq_2` column is empty for single-end. The samplesheet has to be a comma-separated file (.csv) but can have as many columns as you desire. There is a strict requirement for the first 4 columns to match those defined in the table below with the header row included. +You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. The pipeline will detect whether a sample is single- or paired-end from the samplesheet - the `fastq_2` column is empty for single-end. The samplesheet has to be a comma-separated (.csv), tab-separated (.tsv), yaml (.yaml or .yml) or json (.json) file but can have as many columns as you desire. There is a strict requirement for the `sample` and `strandedness` columns. One or more of these columns should be provided too: `fastq_1`, `bam`, `cram`, `junctions` and `splice_junctions` A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 6 samples, where `TREATMENT_REP3` has been sequenced twice. ```csv title="samplesheet.csv" @@ -125,14 +125,61 @@ TREATMENT_REP3,AEG588A6_S6_L003_R1_001.fastq.gz,,forward TREATMENT_REP3,AEG588A6_S6_L004_R1_001.fastq.gz,,forward ``` -As you can see above for multiple runs of the same sample, the `sample` name has to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. +As you can see above for multiple runs of the same sample, the `sample` name has to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. Note that multiple rows per sample are not supported for samples that contain `bam`, `cram`, `junctions` and/or `splice_junctions` files. -| Column | Description | -| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `sample` | Custom sample name. This entry will be identical for multiple sequencing libraries/runs from the same sample. Spaces in sample names are automatically converted to underscores (`_`). | -| `fastq_1` | Full path to FastQ file for Illumina short reads 1. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | -| `fastq_2` | Full path to FastQ file for Illumina short reads 2. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | -| `strandedness` | Strandedness: forward or reverse. | +| Column | Description | Required | +| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | +| `sample` | Custom sample name. This entry will be identical for multiple sequencing libraries/runs from the same sample. Spaces in sample names are automatically converted to underscores (`_`). | :white_check_mark: | +| `strandedness` | Strandedness: forward or reverse. | :white_check_mark: | +| `fastq_1` | Full path to FastQ file for Illumina short reads 1. File must exist, has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". It's recommended to always provide the FASTQ files because the pipeline will be able to create any missing files from these. The FASTQ files are required to run `salmon`, `fusioninspector` and `fusioncatcher`. | :grey_question: | +| `fastq_2` | Full path to FastQ file for Illumina short reads 2. File must exist, has to be gzipped and have the extension ".fastq.gz" or ".fq. It's recommended to always provide the FASTQ files because the pipeline will be able to create any missing files from these. The FASTQ files are required to run `salmon`, `fusioninspector` and `fusioncatcher`.gz". | :grey_question: | +| `bam` | Full path to the BAM file created with STAR. File has to exist and must have the extension ".bam". It's the responsibility of the pipeline user to make sure this file has been correctly created, see the [prepare chapter](#preparing-bamcramjunctionssplice_junctions) for more information. The BAM file is required to run `ctatsplicing`, `stringtie`, `fusioninspector` and `arriba` when the `fastq_1` and `cram` fields are empty. | :grey_question: | +| `bai` | Full path to the index of the BAM file. File has to exist and must have the extension ".bai". | :x: | +| `cram` | Full path to the CRAM file created with STAR. File has to exist and must have the extension ".cram". It's the responsibility of the pipeline user to make sure this file has been correctly created, see the [prepare chapter](#preparing-bamcramjunctionssplice_junctions) for more information. The CRAM file is required to run `ctatsplicing`, `stringtie`, `fusioninspector` and `arriba` when the `fastq_1` and `bam` fields are empty. | :grey_question: | +| `crai` | Full path to the index of the CRAM file. File has to exist and must have the extension ".crai". | :x: | +| `junctions` | Full path to the file containing chimeric junctions determined by STAR. File has to exist and must have the extension ".junction". It's the responsibility of the pipeline user to make sure this file has been correctly created, see the [prepare chapter](#preparing-bamcramjunctionssplice_junctions) for more information. The junctions file is required to run `starfusion` and `ctatsplicing` when the `fastq_1` field is empty. | :grey_question: | +| `splice_junctions` | Full path to the file containing splice junctions determined by STAR. File has to exist and must have the extension ".SJ.out.tab". It's the responsibility of the pipeline user to make sure this file has been correctly created, see the [prepare chapter](#preparing-bamcramjunctionssplice_junctions) for more information. The splice junctions file is required to run `ctatsplicing` when the `fastq_1` field is empty. | :grey_question: | + +:white_check_mark: = Required +:x: = Not required +:grey_question: = One of these columns should be provided + +### Preparing BAM/CRAM/junctions/splice_junctions + +In the pipeline the following STAR command is used to produce the needed files: + +```bash +STAR \\ + --genomeDir \ + --readFilesIn \ + --runThreadN \ + --outFileNamePrefix . \ + --outSAMattrRGline 'ID:' 'SM:' \ + --outReadsUnmapped None \ + --outSAMstrandField intronMotif \ + --chimOutJunctionFormat 1 \ + --twopassMode None \ + --outFilterMultimapNmax 50 \ + --chimMultimapNmax 50 \ + --quantMode GeneCounts \ + --outSAMunmapped Within \ + --readFilesCommand zcat \ + --alignSJstitchMismatchNmax 5 -1 5 5 \ + --outSAMtype BAM SortedByCoordinate \ + --chimSegmentMin 10 \ + --peOverlapNbasesMin 10 \ + --alignSplicedMateMapLminOverLmate 0.5 \ + --chimJunctionOverhangMin 10 \ + --chimScoreJunctionNonGTAG 0 \ + --chimScoreDropMax 30 \ + --chimScoreSeparation 1 \ + --chimSegmentReadGapMax 3 \ + --chimOutType Junctions WithinBAM' +``` + +We found that this command produces the best results for all downstream processes in the pipeline. It is highly recommended to use the same command for the input BAM, CRAM, junctions and splice_junctions files. + +The pipeline will still work when another command has been used, but it is possible that the results will be significantly different from the standard flow. ### Starting commands diff --git a/modules/local/fusionreport/detect/main.nf b/modules/local/fusionreport/detect/main.nf index dab70ffe4..bcb59877c 100644 --- a/modules/local/fusionreport/detect/main.nf +++ b/modules/local/fusionreport/detect/main.nf @@ -9,7 +9,7 @@ process FUSIONREPORT { input: - tuple val(meta), path(reads), path(arriba_fusions), path(starfusion_fusions), path(fusioncatcher_fusions) + tuple val(meta), path(arriba_fusions), path(starfusion_fusions), path(fusioncatcher_fusions) tuple val(meta2), path(fusionreport_ref) val(tools_cutoff) diff --git a/modules/local/vcf_collect/main.nf b/modules/local/vcf_collect/main.nf index 3a1bf2217..5c1c4ce0e 100644 --- a/modules/local/vcf_collect/main.nf +++ b/modules/local/vcf_collect/main.nf @@ -21,6 +21,7 @@ process VCF_COLLECT { script: def prefix = task.ext.prefix ?: "${meta.id}" + // TODO use BGZIP to compress the VCF file instead of GZIP """ vcf_collect.py --fusioninspector $fusioninspector_tsv --fusionreport $fusionreport_report --fusioninspector_gtf $fusioninspector_gtf_tsv --fusionreport_csv $fusionreport_csv --hgnc $hgnc_ref --sample ${prefix} --out ${prefix}_fusion_data.vcf gzip ${prefix}_fusion_data.vcf @@ -35,7 +36,7 @@ process VCF_COLLECT { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.vcf + touch ${prefix}_fusion_data.vcf.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/subworkflows/local/build_references.nf b/subworkflows/local/build_references/main.nf similarity index 82% rename from subworkflows/local/build_references.nf rename to subworkflows/local/build_references/main.nf index 8612b8f84..137e9806a 100644 --- a/subworkflows/local/build_references.nf +++ b/subworkflows/local/build_references/main.nf @@ -4,28 +4,28 @@ ======================================================================================== */ -include { GENCODE_DOWNLOAD } from '../../modules/local/gencode_download/main' -include { FUSIONCATCHER_BUILD } from '../../modules/local/fusioncatcher/build/main' -include { FUSIONREPORT_DOWNLOAD } from '../../modules/local/fusionreport/download/main' -include { HGNC_DOWNLOAD } from '../../modules/local/hgnc/main' -include { STARFUSION_BUILD } from '../../modules/local/starfusion/build/main' -include { GTF_TO_REFFLAT } from '../../modules/local/uscs/custom_gtftogenepred/main' -include { GET_RRNA_TRANSCRIPTS } from '../../modules/local/get_rrna_transcript/main' -include { CTATSPLICING_PREPGENOMELIB } from '../../modules/local/ctatsplicing/prepgenomelib/main.nf' +include { GENCODE_DOWNLOAD } from '../../../modules/local/gencode_download/main' +include { FUSIONCATCHER_BUILD } from '../../../modules/local/fusioncatcher/build/main' +include { FUSIONREPORT_DOWNLOAD } from '../../../modules/local/fusionreport/download/main' +include { HGNC_DOWNLOAD } from '../../../modules/local/hgnc/main' +include { STARFUSION_BUILD } from '../../../modules/local/starfusion/build/main' +include { GTF_TO_REFFLAT } from '../../../modules/local/uscs/custom_gtftogenepred/main' +include { GET_RRNA_TRANSCRIPTS } from '../../../modules/local/get_rrna_transcript/main' +include { CTATSPLICING_PREPGENOMELIB } from '../../../modules/local/ctatsplicing/prepgenomelib/main.nf' /* ======================================================================================== IMPORT NF-CORE MODULES/SUBWORKFLOWS ======================================================================================== */ -include { ARRIBA_DOWNLOAD } from '../../modules/nf-core/arriba/download/main' -include { SAMTOOLS_FAIDX } from '../../modules/nf-core/samtools/faidx/main' -include { STAR_GENOMEGENERATE } from '../../modules/nf-core/star/genomegenerate/main' -include { GATK4_CREATESEQUENCEDICTIONARY } from '../../modules/nf-core/gatk4/createsequencedictionary/main' -include { GATK4_BEDTOINTERVALLIST } from '../../modules/nf-core/gatk4/bedtointervallist/main' -include { SALMON_INDEX } from '../../modules/nf-core/salmon/index/main' -include { GFFREAD } from '../../modules/nf-core/gffread/main' -include { getFileSuffix } from '../../modules/nf-core/cat/cat/main.nf' +include { ARRIBA_DOWNLOAD } from '../../../modules/nf-core/arriba/download/main' +include { SAMTOOLS_FAIDX } from '../../../modules/nf-core/samtools/faidx/main' +include { STAR_GENOMEGENERATE } from '../../../modules/nf-core/star/genomegenerate/main' +include { GATK4_CREATESEQUENCEDICTIONARY } from '../../../modules/nf-core/gatk4/createsequencedictionary/main' +include { GATK4_BEDTOINTERVALLIST } from '../../../modules/nf-core/gatk4/bedtointervallist/main' +include { SALMON_INDEX } from '../../../modules/nf-core/salmon/index/main' +include { GFFREAD } from '../../../modules/nf-core/gffread/main' +include { getFileSuffix } from '../../../modules/nf-core/cat/cat/main.nf' /* ======================================================================================== @@ -64,14 +64,14 @@ workflow BUILD_REFERENCES { def ch_hgnc_date = Channel.empty() def ch_hgnc_ref = Channel.empty() -//TODO: unify as if(tools.contains("fusioninspector")) once nextflow bug fixed + //TODO: unify as if(tools.contains("fusioninspector")) once nextflow bug fixed def run_fusioninspector = tools.contains("fusioninspector") - if(run_fusioninspector) { + if(run_fusioninspector && !params.skip_vcf) { if ((!exists_not_empty(params.hgnc_ref) || !exists_not_empty(params.hgnc_date)) && !params.skip_vcf){ HGNC_DOWNLOAD( ) ch_versions = ch_versions.mix(HGNC_DOWNLOAD.out.versions) - ch_hgnc_ref = HGNC_DOWNLOAD.out.hgnc_ref - ch_hgnc_date = HGNC_DOWNLOAD.out.hgnc_date + ch_hgnc_ref = HGNC_DOWNLOAD.out.hgnc_ref.map { that -> [[id:that.Name], that] } + ch_hgnc_date = HGNC_DOWNLOAD.out.hgnc_date.map { that -> [[id:that.Name], that] } } else { ch_hgnc_ref = Channel.fromPath(params.hgnc_ref).map { that -> [[id:that.Name], that] } ch_hgnc_date = Channel.fromPath(params.hgnc_date).map { that -> [[id:that.Name], that] } @@ -165,7 +165,7 @@ workflow BUILD_REFERENCES { } def ch_starfusion_ref = Channel.empty() - if (tools.intersect(["starfusion", "ctatsplicing"])) { + if (tools.intersect(["starfusion", "ctatsplicing", "fusioninspector"])) { if (!exists_not_empty(params.starfusion_ref)) { if(!params.fusion_annot_lib) { error("Expected --fusion_annot_lib to be specified when using StarFusion or any tools that depend on it") @@ -235,9 +235,9 @@ def exists_not_empty(path) { return false } - // Check if the file is not a directory or is a URL and return whether it's empty or not - def is_url = ["https://", "ftp://", "http://"].findAll { it -> path.startsWith(it) }.size() > 0 - if(is_url || !path_to_check.toFile().isDirectory()) { + // Don't check directories if the path is not local + def is_local = path_to_check.getScheme() == "file" + if(!is_local || !path_to_check.toFile().isDirectory()) { return !path_to_check.isEmpty() } diff --git a/subworkflows/local/build_references/tests/empty_folder/empty_file.txt b/subworkflows/local/build_references/tests/empty_folder/empty_file.txt new file mode 100644 index 000000000..e69de29bb diff --git a/subworkflows/local/build_references/tests/functions.nf.test b/subworkflows/local/build_references/tests/functions.nf.test new file mode 100644 index 000000000..2933918eb --- /dev/null +++ b/subworkflows/local/build_references/tests/functions.nf.test @@ -0,0 +1,273 @@ + +nextflow_function { + + name "Test Functions" + script "subworkflows/local/build_references/main.nf" + + test("Test Function exists_not_empty - local file exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "${projectDir}/main.nf" + """ + } + } + + then { + assert function.success + assert function.result == true + } + + } + + test("Test Function exists_not_empty - local directory exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "${projectDir}/assets" + """ + } + } + + then { + assert function.success + assert function.result == true + } + + } + + test("Test Function exists_not_empty - local file not exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "${projectDir}/non_existing_file.txt" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + + test("Test Function exists_not_empty - local directory not exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "${projectDir}/non_existing_directory" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + + test("Test Function exists_not_empty - local file empty") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "${projectDir}/subworkflows/local/build_references/tests/empty_folder/empty_file.txt" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + + test("Test Function exists_not_empty - local directory empty") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "${projectDir}/subworkflows/local/build_references/tests/empty_folder/" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + + test("Test Function exists_not_empty - HTTPS file exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "https://github.com/nf-core/test-datasets/raw/afe31d4ea9be70bbaaf1fb633a4ae7a4afeaf215/README.md" + """ + } + } + + then { + assert function.success + assert function.result == true + } + + } + + test("Test Function exists_not_empty - HTTPS directory exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "https://github.com/nf-core/test-datasets/raw/afe31d4ea9be70bbaaf1fb633a4ae7a4afeaf215/testdata/" + """ + } + } + + then { + assert function.success + assert function.result == true + } + + } + + test("Test Function exists_not_empty - HTTPS file not exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "https://github.com/nf-core/test-datasets/raw/afe31d4ea9be70bbaaf1fb633a4ae7a4afeaf215/non_existing_file.txt" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + + test("Test Function exists_not_empty - HTTPS directory not exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "https://github.com/nf-core/test-datasets/raw/afe31d4ea9be70bbaaf1fb633a4ae7a4afeaf215/non_existing_directory/" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + + test("Test Function exists_not_empty - s3 file exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "s3://ngi-igenomes/igenomes/Homo_sapiens/Ensembl/GRCh37/Sequence/WholeGenomeFasta/genome.fa" + """ + } + } + + then { + assert function.success + assert function.result == true + } + + } + + test("Test Function exists_not_empty - s3 directory exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "s3://ngi-igenomes/igenomes/Homo_sapiens/Ensembl/GRCh37/Sequence/WholeGenomeFasta/" + """ + } + } + + then { + assert function.success + assert function.result == true + } + + } + + test("Test Function exists_not_empty - s3 file not exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "s3://ngi-igenomes/igenomes/this_file_does_not_exist.txt" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + + test("Test Function exists_not_empty - s3 directory not exists") { + + function "exists_not_empty" + + when { + function { + """ + input[0] = "s3://ngi-igenomes/igenomes/this_directory_does_not_exist/" + """ + } + } + + then { + assert function.success + assert function.result == false + } + + } + +} diff --git a/subworkflows/local/ctatsplicing_workflow/main.nf b/subworkflows/local/ctatsplicing_workflow/main.nf index 7f83802e0..02135973e 100644 --- a/subworkflows/local/ctatsplicing_workflow/main.nf +++ b/subworkflows/local/ctatsplicing_workflow/main.nf @@ -2,7 +2,7 @@ include { CTATSPLICING_STARTOCANCERINTRONS } from '../../../modules/local/ctatsp workflow CTATSPLICING_WORKFLOW { take: - split_junctions // [ val(meta), path(split_junctions.SJ.out.tab) ] + splice_junctions // [ val(meta), path(splice_junctions.SJ.out.tab) ] junctions // [ val(meta), path(junctions.Chimeric.out.junction) ] aligned_bams // [ val(meta), path(aligned_bams.Aligned.sortedByCoord.out.bam), path(aligned_bams.Aligned.sortedByCoord.out.bam.bai) ] ctat_genome_lib // [ val(meta2), path(path/to/ctat_genome_lib) ] @@ -10,7 +10,7 @@ workflow CTATSPLICING_WORKFLOW { main: def ch_versions = Channel.empty() - def ch_ctatsplicing_input = split_junctions + def ch_ctatsplicing_input = splice_junctions .join(junctions, failOnMismatch:true, failOnDuplicate:true) .join(aligned_bams, failOnMismatch:true, failOnDuplicate:true) .map { meta, split_junction, junction, bam, bai -> diff --git a/subworkflows/local/fusionreport_workflow/main.nf b/subworkflows/local/fusionreport_workflow/main.nf index bbbc909fb..c4a896dd7 100644 --- a/subworkflows/local/fusionreport_workflow/main.nf +++ b/subworkflows/local/fusionreport_workflow/main.nf @@ -3,7 +3,6 @@ include { FUSIONREPORT } from '../../../modules/local/fusionreport/dete workflow FUSIONREPORT_WORKFLOW { take: - reads fusionreport_ref arriba_fusions starfusion_fusions @@ -14,12 +13,11 @@ workflow FUSIONREPORT_WORKFLOW { ch_report = Channel.empty() ch_csv = Channel.empty() - reads_fusions = reads - .join(arriba_fusions, failOnMismatch:true, failOnDuplicate:true) + def ch_fusions = arriba_fusions .join(starfusion_fusions, failOnMismatch:true, failOnDuplicate:true) .join(fusioncatcher_fusions, failOnMismatch:true, failOnDuplicate:true) - FUSIONREPORT(reads_fusions, fusionreport_ref, params.tools_cutoff) + FUSIONREPORT(ch_fusions, fusionreport_ref, params.tools_cutoff) ch_fusion_list = FUSIONREPORT.out.fusion_list ch_fusion_list_filtered = FUSIONREPORT.out.fusion_list_filtered ch_versions = ch_versions.mix(FUSIONREPORT.out.versions) diff --git a/subworkflows/local/starfusion_workflow/main.nf b/subworkflows/local/starfusion_workflow/main.nf index c4fa164c5..53f0dd8a4 100644 --- a/subworkflows/local/starfusion_workflow/main.nf +++ b/subworkflows/local/starfusion_workflow/main.nf @@ -2,7 +2,6 @@ include { STARFUSION } from '../../ workflow STARFUSION_WORKFLOW { take: - reads // channel: [ meta, bam ] junctions // channel: [ meta, junctions ] ch_starfusion_ref starfusion_fusions @@ -12,15 +11,15 @@ workflow STARFUSION_WORKFLOW { def ch_starfusion_fusions = Channel.empty() if (starfusion_fusions){ - ch_starfusion_fusions = reads.combine(Channel.value(file(starfusion_fusions, checkIfExists:true))) - .map { it -> [ it[0], it[2] ] } + fusions = file(starfusion_fusions, checkIfExists:true) + ch_starfusion_fusions = junctions.map { meta, _junc -> [ meta, fusions ] } } else { - reads_junction = reads.join(junctions) // TODO: This join is not needed as STARFUSION can simply read from the junction file: https://github.com/STAR-Fusion/STAR-Fusion/wiki#alternatively-kickstart-mode-running-star-yourself-and-then-running-star-fusion-using-the-existing-outputs - - STARFUSION( reads_junction, ch_starfusion_ref.map { it -> it[1] }) + STARFUSION( + junctions.map { meta, junc -> [ meta, [], junc ]}, + ch_starfusion_ref.map { it -> it[1] } + ) ch_versions = ch_versions.mix(STARFUSION.out.versions) ch_starfusion_fusions = STARFUSION.out.fusions - } emit: fusions = ch_starfusion_fusions diff --git a/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf b/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf index e751b6430..7921f82bf 100644 --- a/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_rnafusion_pipeline/main.nf @@ -72,21 +72,24 @@ workflow PIPELINE_INITIALISATION { Channel .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) - .map { - meta, fastq_1, fastq_2, strandedness -> - if (!fastq_2) { - return [ meta.id, meta + [ single_end:true ], [ fastq_1 ], strandedness ] - } else { - return [ meta.id, meta + [ single_end:false ], [ fastq_1, fastq_2 ], strandedness ] - } + .map { meta, fastq_1, fastq_2, bam, bai, cram, crai, junctions, splice_junctions, strandedness -> + def meta_fastqs = [] + if (!fastq_1) { + meta_fastqs = [ meta, [] ] + } else if (!fastq_2) { + meta_fastqs = [ meta + [single_end:true], [ fastq_1 ] ] + } else { + meta_fastqs = [ meta + [single_end:false], [ fastq_1, fastq_2 ] ] + } + return [ meta.id ] + meta_fastqs + [ bam, bai, cram, crai, junctions, splice_junctions, strandedness ] } .groupTuple() .map { samplesheet -> validateInputSamplesheet(samplesheet) } .map { - meta, fastqs -> - return [ meta, fastqs.flatten() ] + meta, fastqs, bam, bai, cram, crai, junctions, splice_junctions -> + return [ meta, fastqs.flatten(), bam, bai, cram, crai, junctions, splice_junctions ] } .set { ch_samplesheet } @@ -165,7 +168,25 @@ def validateInputParameters() { // Validate channels from input samplesheet // def validateInputSamplesheet(input) { - def (metas, fastqs) = input[1..2] + def (metas, fastqs, bam, bai, cram, crai, junctions, splice_junctions) = input[1..8] + + def bam_list = bam.findAll { it -> it != [] } + def cram_list = cram.findAll { it -> it != [] } + def junctions_list = junctions.findAll { it -> it != [] } + def splice_junctions_list = splice_junctions.findAll { it -> it != [] } + // Check alignment and junction files (input is a list) + if (bam_list.size() > 1 || cram_list.size() > 1 || junctions_list.size() > 1 || splice_junctions_list.size() > 1) { + error("Please check input samplesheet -> Only one BAM or CRAM, junctions and split junctions file is allowed per sample: ${metas[0].id}") + } + + bam = bam_list.size() > 0 ? bam_list[0] : [] + cram = cram_list.size() > 0 ? cram_list[0] : [] + junctions = junctions_list.size() > 0 ? junctions_list[0] : [] + splice_junctions = splice_junctions_list.size() > 0 ? splice_junctions_list[0] : [] + + if (bam != [] && cram != []) { + error("Please check input samplesheet -> Using both BAM and CRAM files isn't allowed: ${metas[0].id}") + } // Check that multiple runs of the same sample are of the same strandedness def strandedness_ok = metas.collect{ it.strandedness }.unique().size == 1 @@ -175,11 +196,11 @@ def validateInputSamplesheet(input) { // Check that multiple runs of the same sample are of the same datatype i.e. single-end / paired-end def endedness_ok = metas.collect{ meta -> meta.single_end }.unique().size == 1 - if (!endedness_ok) { + if (!endedness_ok && fastqs) { error("Please check input samplesheet -> Multiple runs of a sample must be of the same datatype i.e. single-end or paired-end: ${metas[0].id}") } - return [ metas[0], fastqs ] + return [ metas[0], fastqs, bam, bai.find { it -> it != [] } ?: [], cram, crai.find { it -> it != [] } ?: [], junctions, splice_junctions ] } // diff --git a/tests/csv/fastq.csv b/tests/csv/fastq.csv new file mode 100644 index 000000000..7765b1bf1 --- /dev/null +++ b/tests/csv/fastq.csv @@ -0,0 +1,2 @@ +sample,fastq_1,fastq_2,strandedness +test,https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/reads_1.fq.gz,https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/reads_2.fq.gz,forward diff --git a/tests/test_stub.nf.test.snap b/tests/test_stub.nf.test.snap index a94c79609..86f939825 100644 --- a/tests/test_stub.nf.test.snap +++ b/tests/test_stub.nf.test.snap @@ -495,7 +495,7 @@ }, "stub test fusioninspector": { "content": [ - 19, + 22, { "ARRIBA_ARRIBA": { "arriba": "2.4.0" @@ -503,9 +503,15 @@ "ARRIBA_DOWNLOAD": { "arriba_download": "2.4.0" }, + "ARRIBA_VISUALISATION": { + "arriba": "2.4.0" + }, "FASTQC": { "fastqc": "0.12.1" }, + "FUSIONINSPECTOR": { + "STAR-Fusion": null + }, "FUSIONREPORT": { "fusion_report": "2.1.5" }, @@ -546,6 +552,9 @@ "SAMTOOLS_INDEX": { "samtools": 1.21 }, + "STARFUSION_BUILD": { + "STAR-Fusion": "1.14.0" + }, "STAR_ALIGN": { "star": "2.7.11b", "samtools": 1.21, @@ -564,9 +573,130 @@ "arriba", "arriba/test.arriba.fusions.discarded.tsv", "arriba/test.arriba.fusions.tsv", + "arriba_visualisation", + "arriba_visualisation/test_combined_fusions_arriba_visualisation.pdf", "fastqc", "fastqc/test.html", "fastqc/test.zip", + "fusioninspector", + "fusioninspector/IGV_inputs", + "fusioninspector/IGV_inputs/TrinityFusion.bed", + "fusioninspector/IGV_inputs/cytoBand.txt", + "fusioninspector/IGV_inputs/test.ROI.bed", + "fusioninspector/IGV_inputs/test.bed", + "fusioninspector/IGV_inputs/test.bed.sorted.bed.gz", + "fusioninspector/IGV_inputs/test.bed.sorted.bed.gz.tbi", + "fusioninspector/IGV_inputs/test.consolidated.bam", + "fusioninspector/IGV_inputs/test.consolidated.bam.bai", + "fusioninspector/IGV_inputs/test.fa", + "fusioninspector/IGV_inputs/test.fa.fai", + "fusioninspector/IGV_inputs/test.fusion_inspector_web.json", + "fusioninspector/IGV_inputs/test.gtf", + "fusioninspector/IGV_inputs/test.igv.Pfam.bed", + "fusioninspector/IGV_inputs/test.igv.seqsimilar.bed", + "fusioninspector/IGV_inputs/test.junction_reads.bam", + "fusioninspector/IGV_inputs/test.junction_reads.bam.bai", + "fusioninspector/IGV_inputs/test.spanning_reads.bam", + "fusioninspector/IGV_inputs/test.spanning_reads.bam.bai", + "fusioninspector/IGV_inputs/tracks.json", + "fusioninspector/chckpts_dir", + "fusioninspector/chckpts_dir/EM_adj_counts.ok", + "fusioninspector/chckpts_dir/add_FFPM.ok", + "fusioninspector/chckpts_dir/add_splice_info.ok", + "fusioninspector/chckpts_dir/append_microH_info.ok", + "fusioninspector/chckpts_dir/blast_filter.ok", + "fusioninspector/chckpts_dir/coalesce_junc_n_span.ok", + "fusioninspector/chckpts_dir/cp_consol_bam.ok", + "fusioninspector/chckpts_dir/cp_contigs_file_workdir", + "fusioninspector/chckpts_dir/cp_final.ok", + "fusioninspector/chckpts_dir/cp_gtf_file_workdir.ok", + "fusioninspector/chckpts_dir/cp_tracks_json.ok", + "fusioninspector/chckpts_dir/create_fi_igvjs.ok", + "fusioninspector/chckpts_dir/cytoband.ok", + "fusioninspector/chckpts_dir/filter_by_frag_threshs.ok", + "fusioninspector/chckpts_dir/final.abridged.ok", + "fusioninspector/chckpts_dir/fusion_annotator.ok", + "fusioninspector/chckpts_dir/fusion_coding_region_effect.ok", + "fusioninspector/chckpts_dir/fusion_contigs.ok", + "fusioninspector/chckpts_dir/fusion_reports_html.ok", + "fusioninspector/chckpts_dir/get_fusion_JUNCTION_reads_from_bam.ok", + "fusioninspector/chckpts_dir/get_fusion_SPANNING_reads_from_bam.ok", + "fusioninspector/chckpts_dir/index_consol_bam.ok", + "fusioninspector/chckpts_dir/init_EM_adj_counts.ok", + "fusioninspector/chckpts_dir/init_spanning_reads_bam.ok", + "fusioninspector/chckpts_dir/mark_dup_reads.ok", + "fusioninspector/chckpts_dir/mark_dups_reads.index.ok", + "fusioninspector/chckpts_dir/merged_contig_fai.ok", + "fusioninspector/chckpts_dir/merged_contig_gtf_to_bed.ok", + "fusioninspector/chckpts_dir/microH.dat.ok", + "fusioninspector/chckpts_dir/prep_igv_extract_junc_reads.ok", + "fusioninspector/chckpts_dir/prep_igv_junc_reads_bam.ok", + "fusioninspector/chckpts_dir/prep_igv_pfam_bed.ok", + "fusioninspector/chckpts_dir/prep_igv_pfam_gff3.ok", + "fusioninspector/chckpts_dir/prep_igv_seqsim_bed.ok", + "fusioninspector/chckpts_dir/prep_igv_seqsim_gff3.ok", + "fusioninspector/chckpts_dir/prep_spanning_reads.ok", + "fusioninspector/chckpts_dir/run_STAR.ok", + "fusioninspector/chckpts_dir/samtools_idx_junc_reads_bam.ok", + "fusioninspector/chckpts_dir/samtools_index_span_reads_bam.ok", + "fusioninspector/chckpts_dir/span_reads_acc.ok", + "fusioninspector/chckpts_dir/test.bed.bedsort.ok", + "fusioninspector/chckpts_dir/test.bed.bgzip.ok", + "fusioninspector/chckpts_dir/test.bed.tabix.ok", + "fusioninspector/fi_workdir", + "fusioninspector/fi_workdir/Log.final.out", + "fusioninspector/fi_workdir/Log.out", + "fusioninspector/fi_workdir/Log.progress.out", + "fusioninspector/fi_workdir/SJ.out.tab", + "fusioninspector/fi_workdir/_STARgenome", + "fusioninspector/fi_workdir/_STARgenome/exonGeTrInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/exonInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/geneInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/sjdbInfo.txt", + "fusioninspector/fi_workdir/_STARgenome/sjdbList.fromGTF.out.tab", + "fusioninspector/fi_workdir/_STARgenome/sjdbList.out.tab", + "fusioninspector/fi_workdir/_STARgenome/transcriptInfo.tab", + "fusioninspector/fi_workdir/microH.dat", + "fusioninspector/fi_workdir/pipeliner.456.cmds", + "fusioninspector/fi_workdir/star_align.ok", + "fusioninspector/fi_workdir/test.fa", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.info", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.post_promisc_filter", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.post_promisc_filter.info", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.fusion_junction_read_accs", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.fusion_spanning_read_accs", + "fusioninspector/fi_workdir/test.gtf", + "fusioninspector/fi_workdir/test.igv.Pfam.gff3", + "fusioninspector/fi_workdir/test.igv.seqsimilar.gff3", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH.annotated", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH.annotated.coding_effect", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.bai", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.failed_reads_during_span_analysis", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_junc_reads.sam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_junction_info", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_span_reads.sam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_spanning_info", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.read_align_counts.idx", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.read_align_counts.idx.ok", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.spanning_reads_want.idx", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.bai", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.bai.ok", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.ok", + "fusioninspector/test.FusionInspector.fusions.abridged.tsv", + "fusioninspector/test.FusionInspector.fusions.tsv", + "fusioninspector/test.FusionInspector.log", + "fusioninspector/test.fusion_inspector_web.html", "fusionreport", "fusionreport/test", "fusionreport/test/AAA_BBB.html", @@ -633,6 +763,82 @@ "references/star/sjdbList.fromGTF.out.tab", "references/star/sjdbList.out.tab", "references/star/transcriptInfo.tab", + "references/starfusion", + "references/starfusion/ctat_genome_lib_build_dir", + "references/starfusion/ctat_genome_lib_build_dir/AnnotFilterRule.pm", + "references/starfusion/ctat_genome_lib_build_dir/PFAM.domtblout.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_fusion_annot_lib.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_prot_info_db.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/annotfiltrule_cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/blast_pairs.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_gene_blast_pairs.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_pfam_dat.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/fusion_annot_lib.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_pfam_hits.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/makeblastdb.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2.splice_bed.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2_genome_idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.gene_spans.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.mini.sortu.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome.fa.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome_fai.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.index.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/validate_ctat_genome_lib.ok", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.idx", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.gz", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.idx", + "references/starfusion/ctat_genome_lib_build_dir/pfam_domains.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cds", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.gene_spans", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mm2.splice.bed", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.pep", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.prot_info.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.fai", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.mm2", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ndb", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nhr", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nin", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.njs", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.not", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nsq", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ntf", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nto", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Genome", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Log.out", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SA", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SAindex", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/build.ok", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrName.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrNameLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrStart.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonGeTrInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/geneInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/genomeParameters.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbInfo.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.fromGTF.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/transcriptInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dat", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dbm", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.dat.gz", "star", "star/test.Aligned.sortedByCoord.out.bam", "star/test.Aligned.sortedByCoord.out.bam.bai", @@ -658,7 +864,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-04-03T15:53:29.478575932" + "timestamp": "2025-04-11T09:17:30.682830486" }, "stub test salmon": { "content": [ @@ -1857,6 +2063,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-04-03T15:39:16.250051213" + "timestamp": "2025-04-11T09:09:47.739799535" } } \ No newline at end of file diff --git a/tests/test_stub_bam.nf.test b/tests/test_stub_bam.nf.test new file mode 100644 index 000000000..4d83cae01 --- /dev/null +++ b/tests/test_stub_bam.nf.test @@ -0,0 +1,339 @@ +nextflow_pipeline { + + name "Test pipeline" + script "../main.nf" + profile "test" + options "-stub" // TODO remove once reference files are available + tag "pipeline" + tag "pipeline_rnafusion" + tag "test_stub_bam" + + test("stub test all") { + + when { + params { + outdir = "$outputDir" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test arriba") { + + when { + params { + outdir = "$outputDir" + tools = "arriba" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test ctatsplicing") { + + when { + params { + outdir = "$outputDir" + tools = "ctatsplicing" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test fusioncatcher") { + + when { + params { + outdir = "$outputDir" + tools = "fusioncatcher" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test starfusion") { + + when { + params { + outdir = "$outputDir" + tools = "starfusion" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test stringtie") { + + when { + params { + outdir = "$outputDir" + tools = "stringtie" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test fusionreport") { + + when { + params { + outdir = "$outputDir" + tools = "fusionreport,arriba,starfusion,fusioncatcher" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test fastp") { + + when { + params { + outdir = "$outputDir" + tools = "fastp" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test salmon") { + + when { + params { + outdir = "$outputDir" + tools = "salmon" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } + + test("stub test fusioninspector") { + + when { + params { + outdir = "$outputDir" + tools = "fusioninspector,arriba,fusionreport" + fusion_annot_lib = 'https://github.com/STAR-Fusion/STAR-Fusion-Tutorial/raw/master/CTAT_HumanFusionLib.mini.dat.gz' + input = "${projectDir}/tests/yml/bam.yml" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + // Ignore files with timestamps in their names + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + // def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') //TODO uncomment once -stub is removed + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnafusion_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + // stable_path // TODO uncomment once -stub is removed + ).match() } + ) + } + } +} diff --git a/tests/test_stub_bam.nf.test.snap b/tests/test_stub_bam.nf.test.snap new file mode 100644 index 000000000..feb129fc2 --- /dev/null +++ b/tests/test_stub_bam.nf.test.snap @@ -0,0 +1,1948 @@ +{ + "stub test starfusion": { + "content": [ + 14, + { + "FASTQC": { + "fastqc": "0.12.1" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "STARFUSION": { + "STAR-Fusion": "1.14.0" + }, + "STARFUSION_BUILD": { + "STAR-Fusion": "1.14.0" + }, + "STAR_GENOMEGENERATE": { + "star": "2.7.11b", + "samtools": 1.2, + "gawk": "5.1.0" + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/star", + "references/star/Genome", + "references/star/Log.out", + "references/star/SA", + "references/star/SAindex", + "references/star/chrLength.txt", + "references/star/chrName.txt", + "references/star/chrNameLength.txt", + "references/star/chrStart.txt", + "references/star/exonGeTrInfo.tab", + "references/star/exonInfo.tab", + "references/star/geneInfo.tab", + "references/star/genomeParameters.txt", + "references/star/sjdbInfo.txt", + "references/star/sjdbList.fromGTF.out.tab", + "references/star/sjdbList.out.tab", + "references/star/transcriptInfo.tab", + "references/starfusion", + "references/starfusion/ctat_genome_lib_build_dir", + "references/starfusion/ctat_genome_lib_build_dir/AnnotFilterRule.pm", + "references/starfusion/ctat_genome_lib_build_dir/PFAM.domtblout.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_fusion_annot_lib.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_prot_info_db.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/annotfiltrule_cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/blast_pairs.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_gene_blast_pairs.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_pfam_dat.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/fusion_annot_lib.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_pfam_hits.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/makeblastdb.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2.splice_bed.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2_genome_idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.gene_spans.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.mini.sortu.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome.fa.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome_fai.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.index.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/validate_ctat_genome_lib.ok", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.idx", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.gz", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.idx", + "references/starfusion/ctat_genome_lib_build_dir/pfam_domains.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cds", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.gene_spans", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mm2.splice.bed", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.pep", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.prot_info.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.fai", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.mm2", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ndb", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nhr", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nin", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.njs", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.not", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nsq", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ntf", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nto", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Genome", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Log.out", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SA", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SAindex", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/build.ok", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrName.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrNameLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrStart.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonGeTrInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/geneInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/genomeParameters.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbInfo.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.fromGTF.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/transcriptInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dat", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dbm", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.dat.gz", + "starfusion", + "starfusion/test.starfusion.abridged.coding_effect.tsv", + "starfusion/test.starfusion.abridged.tsv", + "starfusion/test.starfusion.fusion_predictions.tsv" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:09:48.999599917" + }, + "stub test stringtie": { + "content": [ + 15, + { + "FASTQC": { + "fastqc": "0.12.1" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "STAR_GENOMEGENERATE": { + "star": "2.7.11b", + "samtools": 1.2, + "gawk": "5.1.0" + }, + "STRINGTIE_MERGE": { + "stringtie": "2.2.1" + }, + "STRINGTIE_STRINGTIE": { + "stringtie": "2.2.3" + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/star", + "references/star/Genome", + "references/star/Log.out", + "references/star/SA", + "references/star/SAindex", + "references/star/chrLength.txt", + "references/star/chrName.txt", + "references/star/chrNameLength.txt", + "references/star/chrStart.txt", + "references/star/exonGeTrInfo.tab", + "references/star/exonInfo.tab", + "references/star/geneInfo.tab", + "references/star/genomeParameters.txt", + "references/star/sjdbInfo.txt", + "references/star/sjdbList.fromGTF.out.tab", + "references/star/sjdbList.out.tab", + "references/star/transcriptInfo.tab", + "star", + "star/test.Aligned.sortedByCoord.out.bam", + "star/test.Aligned.sortedByCoord.out.bam.bai", + "stringtie", + "stringtie/[:]", + "stringtie/[:]/stringtie.merged.gtf", + "stringtie/test.ballgown", + "stringtie/test.coverage.gtf", + "stringtie/test.gene.abundance.txt", + "stringtie/test.transcripts.gtf" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:10:23.893097743" + }, + "stub test arriba": { + "content": [ + 14, + { + "ARRIBA_ARRIBA": { + "arriba": "2.4.0" + }, + "ARRIBA_DOWNLOAD": { + "arriba_download": "2.4.0" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "STAR_GENOMEGENERATE": { + "star": "2.7.11b", + "samtools": 1.2, + "gawk": "5.1.0" + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "arriba", + "arriba/test.arriba.fusions.discarded.tsv", + "arriba/test.arriba.fusions.tsv", + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/arriba", + "references/arriba/blacklist_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/cytobands_hg38_GRCh38_v2.4.0.tsv", + "references/arriba/known_fusions_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/protein_domains_hg38_GRCh38_v2.4.0.gff3", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/star", + "references/star/Genome", + "references/star/Log.out", + "references/star/SA", + "references/star/SAindex", + "references/star/chrLength.txt", + "references/star/chrName.txt", + "references/star/chrNameLength.txt", + "references/star/chrStart.txt", + "references/star/exonGeTrInfo.tab", + "references/star/exonInfo.tab", + "references/star/geneInfo.tab", + "references/star/genomeParameters.txt", + "references/star/sjdbInfo.txt", + "references/star/sjdbList.fromGTF.out.tab", + "references/star/sjdbList.out.tab", + "references/star/transcriptInfo.tab" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:07:56.264754749" + }, + "stub test fusioninspector": { + "content": [ + 21, + { + "ARRIBA_ARRIBA": { + "arriba": "2.4.0" + }, + "ARRIBA_DOWNLOAD": { + "arriba_download": "2.4.0" + }, + "ARRIBA_VISUALISATION": { + "arriba": "2.4.0" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "FUSIONINSPECTOR": { + "STAR-Fusion": null + }, + "FUSIONREPORT": { + "fusion_report": "2.1.5" + }, + "FUSIONREPORT_DOWNLOAD": { + "fusion_report": "2.1.5" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "HGNC_DOWNLOAD": { + "wget": null + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "STARFUSION_BUILD": { + "STAR-Fusion": "1.14.0" + }, + "STAR_GENOMEGENERATE": { + "star": "2.7.11b", + "samtools": 1.2, + "gawk": "5.1.0" + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "arriba", + "arriba/test.arriba.fusions.discarded.tsv", + "arriba/test.arriba.fusions.tsv", + "arriba_visualisation", + "arriba_visualisation/test_combined_fusions_arriba_visualisation.pdf", + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "fusioninspector", + "fusioninspector/IGV_inputs", + "fusioninspector/IGV_inputs/TrinityFusion.bed", + "fusioninspector/IGV_inputs/cytoBand.txt", + "fusioninspector/IGV_inputs/test.ROI.bed", + "fusioninspector/IGV_inputs/test.bed", + "fusioninspector/IGV_inputs/test.bed.sorted.bed.gz", + "fusioninspector/IGV_inputs/test.bed.sorted.bed.gz.tbi", + "fusioninspector/IGV_inputs/test.consolidated.bam", + "fusioninspector/IGV_inputs/test.consolidated.bam.bai", + "fusioninspector/IGV_inputs/test.fa", + "fusioninspector/IGV_inputs/test.fa.fai", + "fusioninspector/IGV_inputs/test.fusion_inspector_web.json", + "fusioninspector/IGV_inputs/test.gtf", + "fusioninspector/IGV_inputs/test.igv.Pfam.bed", + "fusioninspector/IGV_inputs/test.igv.seqsimilar.bed", + "fusioninspector/IGV_inputs/test.junction_reads.bam", + "fusioninspector/IGV_inputs/test.junction_reads.bam.bai", + "fusioninspector/IGV_inputs/test.spanning_reads.bam", + "fusioninspector/IGV_inputs/test.spanning_reads.bam.bai", + "fusioninspector/IGV_inputs/tracks.json", + "fusioninspector/chckpts_dir", + "fusioninspector/chckpts_dir/EM_adj_counts.ok", + "fusioninspector/chckpts_dir/add_FFPM.ok", + "fusioninspector/chckpts_dir/add_splice_info.ok", + "fusioninspector/chckpts_dir/append_microH_info.ok", + "fusioninspector/chckpts_dir/blast_filter.ok", + "fusioninspector/chckpts_dir/coalesce_junc_n_span.ok", + "fusioninspector/chckpts_dir/cp_consol_bam.ok", + "fusioninspector/chckpts_dir/cp_contigs_file_workdir", + "fusioninspector/chckpts_dir/cp_final.ok", + "fusioninspector/chckpts_dir/cp_gtf_file_workdir.ok", + "fusioninspector/chckpts_dir/cp_tracks_json.ok", + "fusioninspector/chckpts_dir/create_fi_igvjs.ok", + "fusioninspector/chckpts_dir/cytoband.ok", + "fusioninspector/chckpts_dir/filter_by_frag_threshs.ok", + "fusioninspector/chckpts_dir/final.abridged.ok", + "fusioninspector/chckpts_dir/fusion_annotator.ok", + "fusioninspector/chckpts_dir/fusion_coding_region_effect.ok", + "fusioninspector/chckpts_dir/fusion_contigs.ok", + "fusioninspector/chckpts_dir/fusion_reports_html.ok", + "fusioninspector/chckpts_dir/get_fusion_JUNCTION_reads_from_bam.ok", + "fusioninspector/chckpts_dir/get_fusion_SPANNING_reads_from_bam.ok", + "fusioninspector/chckpts_dir/index_consol_bam.ok", + "fusioninspector/chckpts_dir/init_EM_adj_counts.ok", + "fusioninspector/chckpts_dir/init_spanning_reads_bam.ok", + "fusioninspector/chckpts_dir/mark_dup_reads.ok", + "fusioninspector/chckpts_dir/mark_dups_reads.index.ok", + "fusioninspector/chckpts_dir/merged_contig_fai.ok", + "fusioninspector/chckpts_dir/merged_contig_gtf_to_bed.ok", + "fusioninspector/chckpts_dir/microH.dat.ok", + "fusioninspector/chckpts_dir/prep_igv_extract_junc_reads.ok", + "fusioninspector/chckpts_dir/prep_igv_junc_reads_bam.ok", + "fusioninspector/chckpts_dir/prep_igv_pfam_bed.ok", + "fusioninspector/chckpts_dir/prep_igv_pfam_gff3.ok", + "fusioninspector/chckpts_dir/prep_igv_seqsim_bed.ok", + "fusioninspector/chckpts_dir/prep_igv_seqsim_gff3.ok", + "fusioninspector/chckpts_dir/prep_spanning_reads.ok", + "fusioninspector/chckpts_dir/run_STAR.ok", + "fusioninspector/chckpts_dir/samtools_idx_junc_reads_bam.ok", + "fusioninspector/chckpts_dir/samtools_index_span_reads_bam.ok", + "fusioninspector/chckpts_dir/span_reads_acc.ok", + "fusioninspector/chckpts_dir/test.bed.bedsort.ok", + "fusioninspector/chckpts_dir/test.bed.bgzip.ok", + "fusioninspector/chckpts_dir/test.bed.tabix.ok", + "fusioninspector/fi_workdir", + "fusioninspector/fi_workdir/Log.final.out", + "fusioninspector/fi_workdir/Log.out", + "fusioninspector/fi_workdir/Log.progress.out", + "fusioninspector/fi_workdir/SJ.out.tab", + "fusioninspector/fi_workdir/_STARgenome", + "fusioninspector/fi_workdir/_STARgenome/exonGeTrInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/exonInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/geneInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/sjdbInfo.txt", + "fusioninspector/fi_workdir/_STARgenome/sjdbList.fromGTF.out.tab", + "fusioninspector/fi_workdir/_STARgenome/sjdbList.out.tab", + "fusioninspector/fi_workdir/_STARgenome/transcriptInfo.tab", + "fusioninspector/fi_workdir/microH.dat", + "fusioninspector/fi_workdir/pipeliner.456.cmds", + "fusioninspector/fi_workdir/star_align.ok", + "fusioninspector/fi_workdir/test.fa", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.info", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.post_promisc_filter", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.post_promisc_filter.info", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.fusion_junction_read_accs", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.fusion_spanning_read_accs", + "fusioninspector/fi_workdir/test.gtf", + "fusioninspector/fi_workdir/test.igv.Pfam.gff3", + "fusioninspector/fi_workdir/test.igv.seqsimilar.gff3", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH.annotated", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH.annotated.coding_effect", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.bai", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.failed_reads_during_span_analysis", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_junc_reads.sam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_junction_info", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_span_reads.sam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_spanning_info", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.read_align_counts.idx", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.read_align_counts.idx.ok", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.spanning_reads_want.idx", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.bai", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.bai.ok", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.ok", + "fusioninspector/test.FusionInspector.fusions.abridged.tsv", + "fusioninspector/test.FusionInspector.fusions.tsv", + "fusioninspector/test.FusionInspector.log", + "fusioninspector/test.fusion_inspector_web.html", + "fusionreport", + "fusionreport/test", + "fusionreport/test/AAA_BBB.html", + "fusionreport/test/test.fusionreport.tsv", + "fusionreport/test/test.fusionreport_filtered.tsv", + "fusionreport/test/test.fusions.csv", + "fusionreport/test/test.fusions.json", + "fusionreport/test/test_fusionreport_index.html", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/arriba", + "references/arriba/blacklist_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/cytobands_hg38_GRCh38_v2.4.0.tsv", + "references/arriba/known_fusions_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/protein_domains_hg38_GRCh38_v2.4.0.gff3", + "references/fusion_report_db", + "references/fusion_report_db/DB-timestamp.txt", + "references/fusion_report_db/cosmic.db", + "references/fusion_report_db/fusion_report.log", + "references/fusion_report_db/fusiongdb2.db", + "references/fusion_report_db/mitelman.db", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/hgnc", + "references/hgnc/HGNC-DB-timestamp.txt", + "references/hgnc/hgnc_complete_set.txt", + "references/star", + "references/star/Genome", + "references/star/Log.out", + "references/star/SA", + "references/star/SAindex", + "references/star/chrLength.txt", + "references/star/chrName.txt", + "references/star/chrNameLength.txt", + "references/star/chrStart.txt", + "references/star/exonGeTrInfo.tab", + "references/star/exonInfo.tab", + "references/star/geneInfo.tab", + "references/star/genomeParameters.txt", + "references/star/sjdbInfo.txt", + "references/star/sjdbList.fromGTF.out.tab", + "references/star/sjdbList.out.tab", + "references/star/transcriptInfo.tab", + "references/starfusion", + "references/starfusion/ctat_genome_lib_build_dir", + "references/starfusion/ctat_genome_lib_build_dir/AnnotFilterRule.pm", + "references/starfusion/ctat_genome_lib_build_dir/PFAM.domtblout.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_fusion_annot_lib.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_prot_info_db.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/annotfiltrule_cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/blast_pairs.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_gene_blast_pairs.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_pfam_dat.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/fusion_annot_lib.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_pfam_hits.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/makeblastdb.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2.splice_bed.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2_genome_idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.gene_spans.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.mini.sortu.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome.fa.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome_fai.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.index.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/validate_ctat_genome_lib.ok", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.idx", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.gz", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.idx", + "references/starfusion/ctat_genome_lib_build_dir/pfam_domains.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cds", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.gene_spans", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mm2.splice.bed", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.pep", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.prot_info.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.fai", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.mm2", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ndb", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nhr", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nin", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.njs", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.not", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nsq", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ntf", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nto", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Genome", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Log.out", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SA", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SAindex", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/build.ok", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrName.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrNameLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrStart.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonGeTrInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/geneInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/genomeParameters.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbInfo.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.fromGTF.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/transcriptInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dat", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dbm", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.dat.gz", + "star", + "star/test.Aligned.sortedByCoord.out.bam", + "star/test.Aligned.sortedByCoord.out.bam.bai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T09:25:46.143222996" + }, + "stub test salmon": { + "content": [ + 14, + { + "FASTQC": { + "fastqc": "0.12.1" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GFFREAD": { + "gffread": "0.12.7" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SALMON_INDEX": { + "salmon": "1.10.3" + }, + "SALMON_QUANT": { + "salmon": "1.10.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/gffread", + "references/gffread/Homo_sapiens.GRCh38.46.gtf.fasta", + "references/salmon", + "references/salmon/salmon", + "references/salmon/salmon/complete_ref_lens.bin", + "references/salmon/salmon/ctable.bin", + "references/salmon/salmon/ctg_offsets.bin", + "references/salmon/salmon/duplicate_clusters.tsv", + "references/salmon/salmon/info.json", + "references/salmon/salmon/mphf.bin", + "references/salmon/salmon/pos.bin", + "references/salmon/salmon/pre_indexing.log", + "references/salmon/salmon/rank.bin", + "references/salmon/salmon/refAccumLengths.bin", + "references/salmon/salmon/ref_indexing.log", + "references/salmon/salmon/reflengths.bin", + "references/salmon/salmon/refseq.bin", + "references/salmon/salmon/seq.bin", + "references/salmon/salmon/versionInfo.json", + "salmon", + "salmon/test", + "salmon/test_lib_format_counts.json", + "salmon/test_meta_info.json" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:12:30.758487268" + }, + "stub test ctatsplicing": { + "content": [ + 16, + { + "CTATSPLICING_PREPGENOMELIB": { + "ctat-splicing": "0.0.2" + }, + "CTATSPLICING_STARTOCANCERINTRONS": { + "ctat-splicing": "0.0.2" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "STARFUSION_BUILD": { + "STAR-Fusion": "1.14.0" + }, + "STAR_GENOMEGENERATE": { + "star": "2.7.11b", + "samtools": 1.2, + "gawk": "5.1.0" + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "ctatsplicing", + "ctatsplicing/test.cancer.introns", + "ctatsplicing/test.cancer.introns.prelim", + "ctatsplicing/test.cancer_intron_reads.sorted.bam", + "ctatsplicing/test.cancer_intron_reads.sorted.bam.bai", + "ctatsplicing/test.chckpts", + "ctatsplicing/test.ctat-splicing.igv.html", + "ctatsplicing/test.gene_reads.sorted.sifted.bam", + "ctatsplicing/test.gene_reads.sorted.sifted.bam.bai", + "ctatsplicing/test.igv.tracks", + "ctatsplicing/test.introns", + "ctatsplicing/test.introns.for_IGV.bed", + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/star", + "references/star/Genome", + "references/star/Log.out", + "references/star/SA", + "references/star/SAindex", + "references/star/chrLength.txt", + "references/star/chrName.txt", + "references/star/chrNameLength.txt", + "references/star/chrStart.txt", + "references/star/exonGeTrInfo.tab", + "references/star/exonInfo.tab", + "references/star/geneInfo.tab", + "references/star/genomeParameters.txt", + "references/star/sjdbInfo.txt", + "references/star/sjdbList.fromGTF.out.tab", + "references/star/sjdbList.out.tab", + "references/star/transcriptInfo.tab", + "references/starfusion", + "references/starfusion/ctat_genome_lib_build_dir", + "references/starfusion/ctat_genome_lib_build_dir/AnnotFilterRule.pm", + "references/starfusion/ctat_genome_lib_build_dir/PFAM.domtblout.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_fusion_annot_lib.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_prot_info_db.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/annotfiltrule_cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/blast_pairs.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_gene_blast_pairs.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_pfam_dat.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/fusion_annot_lib.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_pfam_hits.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/makeblastdb.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2.splice_bed.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2_genome_idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.gene_spans.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.mini.sortu.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome.fa.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome_fai.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.index.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/validate_ctat_genome_lib.ok", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.idx", + "references/starfusion/ctat_genome_lib_build_dir/cancer_splicing_lib", + "references/starfusion/ctat_genome_lib_build_dir/cancer_splicing_lib/cancer_splicing.idx", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.gz", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.idx", + "references/starfusion/ctat_genome_lib_build_dir/pfam_domains.dbm", + "references/starfusion/ctat_genome_lib_build_dir/refGene.bed", + "references/starfusion/ctat_genome_lib_build_dir/refGene.sort.bed.gz", + "references/starfusion/ctat_genome_lib_build_dir/refGene.sort.bed.gz.tbi", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cds", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.gene_spans", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mm2.splice.bed", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.pep", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.prot_info.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.fai", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.mm2", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ndb", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nhr", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nin", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.njs", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.not", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nsq", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ntf", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nto", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Genome", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Log.out", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SA", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SAindex", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/build.ok", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrName.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrNameLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrStart.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonGeTrInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/geneInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/genomeParameters.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbInfo.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.fromGTF.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/transcriptInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dat", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dbm", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.dat.gz", + "star", + "star/test.Aligned.sortedByCoord.out.bam", + "star/test.Aligned.sortedByCoord.out.bam.bai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:08:38.341565744" + }, + "stub test fusionreport": { + "content": [ + 20, + { + "ARRIBA_ARRIBA": { + "arriba": "2.4.0" + }, + "ARRIBA_DOWNLOAD": { + "arriba_download": "2.4.0" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "FUSIONCATCHER_BUILD": { + "fusioncatcher": "1.33" + }, + "FUSIONCATCHER_DETECT": { + "fusioncatcher": "1.33" + }, + "FUSIONREPORT": { + "fusion_report": "2.1.5" + }, + "FUSIONREPORT_DOWNLOAD": { + "fusion_report": "2.1.5" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "STARFUSION": { + "STAR-Fusion": "1.14.0" + }, + "STARFUSION_BUILD": { + "STAR-Fusion": "1.14.0" + }, + "STAR_GENOMEGENERATE": { + "star": "2.7.11b", + "samtools": 1.2, + "gawk": "5.1.0" + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "arriba", + "arriba/test.arriba.fusions.discarded.tsv", + "arriba/test.arriba.fusions.tsv", + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "fusioncatcher", + "fusioncatcher/human_v46", + "fusioncatcher/human_v46/ensembl_fully_overlapping_genes.txt", + "fusioncatcher/test.fusioncatcher.fusion-genes.txt", + "fusioncatcher/test.fusioncatcher.log", + "fusioncatcher/test.fusioncatcher.summary.txt", + "fusionreport", + "fusionreport/test", + "fusionreport/test/AAA_BBB.html", + "fusionreport/test/test.fusionreport.tsv", + "fusionreport/test/test.fusionreport_filtered.tsv", + "fusionreport/test/test.fusions.csv", + "fusionreport/test/test.fusions.json", + "fusionreport/test/test_fusionreport_index.html", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/arriba", + "references/arriba/blacklist_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/cytobands_hg38_GRCh38_v2.4.0.tsv", + "references/arriba/known_fusions_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/protein_domains_hg38_GRCh38_v2.4.0.gff3", + "references/fusion_report_db", + "references/fusion_report_db/DB-timestamp.txt", + "references/fusion_report_db/cosmic.db", + "references/fusion_report_db/fusion_report.log", + "references/fusion_report_db/fusiongdb2.db", + "references/fusion_report_db/mitelman.db", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/star", + "references/star/Genome", + "references/star/Log.out", + "references/star/SA", + "references/star/SAindex", + "references/star/chrLength.txt", + "references/star/chrName.txt", + "references/star/chrNameLength.txt", + "references/star/chrStart.txt", + "references/star/exonGeTrInfo.tab", + "references/star/exonInfo.tab", + "references/star/geneInfo.tab", + "references/star/genomeParameters.txt", + "references/star/sjdbInfo.txt", + "references/star/sjdbList.fromGTF.out.tab", + "references/star/sjdbList.out.tab", + "references/star/transcriptInfo.tab", + "references/starfusion", + "references/starfusion/ctat_genome_lib_build_dir", + "references/starfusion/ctat_genome_lib_build_dir/AnnotFilterRule.pm", + "references/starfusion/ctat_genome_lib_build_dir/PFAM.domtblout.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_fusion_annot_lib.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_prot_info_db.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/annotfiltrule_cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/blast_pairs.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_gene_blast_pairs.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_pfam_dat.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/fusion_annot_lib.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_pfam_hits.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/makeblastdb.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2.splice_bed.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2_genome_idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.gene_spans.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.mini.sortu.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome.fa.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome_fai.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.index.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/validate_ctat_genome_lib.ok", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.idx", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.gz", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.idx", + "references/starfusion/ctat_genome_lib_build_dir/pfam_domains.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cds", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.gene_spans", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mm2.splice.bed", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.pep", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.prot_info.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.fai", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.mm2", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ndb", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nhr", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nin", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.njs", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.not", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nsq", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ntf", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nto", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Genome", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Log.out", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SA", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SAindex", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/build.ok", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrName.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrNameLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrStart.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonGeTrInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/geneInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/genomeParameters.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbInfo.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.fromGTF.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/transcriptInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dat", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dbm", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.dat.gz", + "starfusion", + "starfusion/test.starfusion.abridged.coding_effect.tsv", + "starfusion/test.starfusion.abridged.tsv", + "starfusion/test.starfusion.fusion_predictions.tsv" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:11:07.156105951" + }, + "stub test fastp": { + "content": [ + 13, + { + "FASTP": { + "fastp": "0.23.4" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "FASTQC_FOR_FASTP": { + "fastqc": "0.12.1" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "fastp", + "fastp/test.fastp.html", + "fastp/test.fastp.json", + "fastp/test.fastp.log", + "fastp/test_1.fastp.fastq.gz", + "fastp/test_2.fastp.fastq.gz", + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "fastqc_for_fastp", + "fastqc_for_fastp/test_trimmed.html", + "fastqc_for_fastp/test_trimmed.zip", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:11:47.209265436" + }, + "stub test fusioncatcher": { + "content": [ + 13, + { + "FASTQC": { + "fastqc": "0.12.1" + }, + "FUSIONCATCHER_BUILD": { + "fusioncatcher": "1.33" + }, + "FUSIONCATCHER_DETECT": { + "fusioncatcher": "1.33" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "fusioncatcher", + "fusioncatcher/human_v46", + "fusioncatcher/human_v46/ensembl_fully_overlapping_genes.txt", + "fusioncatcher/test.fusioncatcher.fusion-genes.txt", + "fusioncatcher/test.fusioncatcher.log", + "fusioncatcher/test.fusioncatcher.summary.txt", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T10:09:12.170433159" + }, + "stub test all": { + "content": [ + 33, + { + "ARRIBA_ARRIBA": { + "arriba": "2.4.0" + }, + "ARRIBA_DOWNLOAD": { + "arriba_download": "2.4.0" + }, + "ARRIBA_VISUALISATION": { + "arriba": "2.4.0" + }, + "CTATSPLICING_PREPGENOMELIB": { + "ctat-splicing": "0.0.2" + }, + "CTATSPLICING_STARTOCANCERINTRONS": { + "ctat-splicing": "0.0.2" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "FASTQC": { + "fastqc": "0.12.1" + }, + "FASTQC_FOR_FASTP": { + "fastqc": "0.12.1" + }, + "FUSIONCATCHER_BUILD": { + "fusioncatcher": "1.33" + }, + "FUSIONCATCHER_DETECT": { + "fusioncatcher": "1.33" + }, + "FUSIONINSPECTOR": { + "STAR-Fusion": null + }, + "FUSIONREPORT": { + "fusion_report": "2.1.5" + }, + "FUSIONREPORT_DOWNLOAD": { + "fusion_report": "2.1.5" + }, + "GATK4_BEDTOINTERVALLIST": { + "gatk4": "4.6.1.0" + }, + "GATK4_CREATESEQUENCEDICTIONARY": { + "gatk4": "4.6.1.0" + }, + "GATK4_MARKDUPLICATES": { + "gatk4": "4.5.0.0", + "samtools": "1.19.2" + }, + "GENCODE_DOWNLOAD": { + "wget": null + }, + "GET_RRNA_TRANSCRIPTS": { + "get_rrna_transcripts": "v1.0" + }, + "GFFREAD": { + "gffread": "0.12.7" + }, + "GTF_TO_REFFLAT": { + "gtfToGenePred": 377 + }, + "HGNC_DOWNLOAD": { + "wget": null + }, + "PICARD_COLLECTINSERTSIZEMETRICS": { + "picard": "3.3.0" + }, + "PICARD_COLLECTRNASEQMETRICS": { + "picard": "3.3.0" + }, + "SALMON_INDEX": { + "salmon": "1.10.3" + }, + "SALMON_QUANT": { + "salmon": "1.10.3" + }, + "SAMTOOLS_FAIDX": { + "samtools": 1.21 + }, + "STARFUSION": { + "STAR-Fusion": "1.14.0" + }, + "STARFUSION_BUILD": { + "STAR-Fusion": "1.14.0" + }, + "STAR_GENOMEGENERATE": { + "star": "2.7.11b", + "samtools": 1.2, + "gawk": "5.1.0" + }, + "STRINGTIE_MERGE": { + "stringtie": "2.2.1" + }, + "STRINGTIE_STRINGTIE": { + "stringtie": "2.2.3" + }, + "Workflow": { + "nf-core/rnafusion": "v4.0.0dev" + } + }, + [ + "arriba", + "arriba/test.arriba.fusions.discarded.tsv", + "arriba/test.arriba.fusions.tsv", + "arriba_visualisation", + "arriba_visualisation/test_combined_fusions_arriba_visualisation.pdf", + "ctatsplicing", + "ctatsplicing/test.cancer.introns", + "ctatsplicing/test.cancer.introns.prelim", + "ctatsplicing/test.cancer_intron_reads.sorted.bam", + "ctatsplicing/test.cancer_intron_reads.sorted.bam.bai", + "ctatsplicing/test.chckpts", + "ctatsplicing/test.ctat-splicing.igv.html", + "ctatsplicing/test.gene_reads.sorted.sifted.bam", + "ctatsplicing/test.gene_reads.sorted.sifted.bam.bai", + "ctatsplicing/test.igv.tracks", + "ctatsplicing/test.introns", + "ctatsplicing/test.introns.for_IGV.bed", + "fastp", + "fastp/test.fastp.html", + "fastp/test.fastp.json", + "fastp/test.fastp.log", + "fastp/test_1.fastp.fastq.gz", + "fastp/test_2.fastp.fastq.gz", + "fastqc", + "fastqc/test.html", + "fastqc/test.zip", + "fastqc_for_fastp", + "fastqc_for_fastp/test_trimmed.html", + "fastqc_for_fastp/test_trimmed.zip", + "fusioncatcher", + "fusioncatcher/human_v46", + "fusioncatcher/human_v46/ensembl_fully_overlapping_genes.txt", + "fusioncatcher/test.fusioncatcher.fusion-genes.txt", + "fusioncatcher/test.fusioncatcher.log", + "fusioncatcher/test.fusioncatcher.summary.txt", + "fusioninspector", + "fusioninspector/IGV_inputs", + "fusioninspector/IGV_inputs/TrinityFusion.bed", + "fusioninspector/IGV_inputs/cytoBand.txt", + "fusioninspector/IGV_inputs/test.ROI.bed", + "fusioninspector/IGV_inputs/test.bed", + "fusioninspector/IGV_inputs/test.bed.sorted.bed.gz", + "fusioninspector/IGV_inputs/test.bed.sorted.bed.gz.tbi", + "fusioninspector/IGV_inputs/test.consolidated.bam", + "fusioninspector/IGV_inputs/test.consolidated.bam.bai", + "fusioninspector/IGV_inputs/test.fa", + "fusioninspector/IGV_inputs/test.fa.fai", + "fusioninspector/IGV_inputs/test.fusion_inspector_web.json", + "fusioninspector/IGV_inputs/test.gtf", + "fusioninspector/IGV_inputs/test.igv.Pfam.bed", + "fusioninspector/IGV_inputs/test.igv.seqsimilar.bed", + "fusioninspector/IGV_inputs/test.junction_reads.bam", + "fusioninspector/IGV_inputs/test.junction_reads.bam.bai", + "fusioninspector/IGV_inputs/test.spanning_reads.bam", + "fusioninspector/IGV_inputs/test.spanning_reads.bam.bai", + "fusioninspector/IGV_inputs/tracks.json", + "fusioninspector/chckpts_dir", + "fusioninspector/chckpts_dir/EM_adj_counts.ok", + "fusioninspector/chckpts_dir/add_FFPM.ok", + "fusioninspector/chckpts_dir/add_splice_info.ok", + "fusioninspector/chckpts_dir/append_microH_info.ok", + "fusioninspector/chckpts_dir/blast_filter.ok", + "fusioninspector/chckpts_dir/coalesce_junc_n_span.ok", + "fusioninspector/chckpts_dir/cp_consol_bam.ok", + "fusioninspector/chckpts_dir/cp_contigs_file_workdir", + "fusioninspector/chckpts_dir/cp_final.ok", + "fusioninspector/chckpts_dir/cp_gtf_file_workdir.ok", + "fusioninspector/chckpts_dir/cp_tracks_json.ok", + "fusioninspector/chckpts_dir/create_fi_igvjs.ok", + "fusioninspector/chckpts_dir/cytoband.ok", + "fusioninspector/chckpts_dir/filter_by_frag_threshs.ok", + "fusioninspector/chckpts_dir/final.abridged.ok", + "fusioninspector/chckpts_dir/fusion_annotator.ok", + "fusioninspector/chckpts_dir/fusion_coding_region_effect.ok", + "fusioninspector/chckpts_dir/fusion_contigs.ok", + "fusioninspector/chckpts_dir/fusion_reports_html.ok", + "fusioninspector/chckpts_dir/get_fusion_JUNCTION_reads_from_bam.ok", + "fusioninspector/chckpts_dir/get_fusion_SPANNING_reads_from_bam.ok", + "fusioninspector/chckpts_dir/index_consol_bam.ok", + "fusioninspector/chckpts_dir/init_EM_adj_counts.ok", + "fusioninspector/chckpts_dir/init_spanning_reads_bam.ok", + "fusioninspector/chckpts_dir/mark_dup_reads.ok", + "fusioninspector/chckpts_dir/mark_dups_reads.index.ok", + "fusioninspector/chckpts_dir/merged_contig_fai.ok", + "fusioninspector/chckpts_dir/merged_contig_gtf_to_bed.ok", + "fusioninspector/chckpts_dir/microH.dat.ok", + "fusioninspector/chckpts_dir/prep_igv_extract_junc_reads.ok", + "fusioninspector/chckpts_dir/prep_igv_junc_reads_bam.ok", + "fusioninspector/chckpts_dir/prep_igv_pfam_bed.ok", + "fusioninspector/chckpts_dir/prep_igv_pfam_gff3.ok", + "fusioninspector/chckpts_dir/prep_igv_seqsim_bed.ok", + "fusioninspector/chckpts_dir/prep_igv_seqsim_gff3.ok", + "fusioninspector/chckpts_dir/prep_spanning_reads.ok", + "fusioninspector/chckpts_dir/run_STAR.ok", + "fusioninspector/chckpts_dir/samtools_idx_junc_reads_bam.ok", + "fusioninspector/chckpts_dir/samtools_index_span_reads_bam.ok", + "fusioninspector/chckpts_dir/span_reads_acc.ok", + "fusioninspector/chckpts_dir/test.bed.bedsort.ok", + "fusioninspector/chckpts_dir/test.bed.bgzip.ok", + "fusioninspector/chckpts_dir/test.bed.tabix.ok", + "fusioninspector/fi_workdir", + "fusioninspector/fi_workdir/Log.final.out", + "fusioninspector/fi_workdir/Log.out", + "fusioninspector/fi_workdir/Log.progress.out", + "fusioninspector/fi_workdir/SJ.out.tab", + "fusioninspector/fi_workdir/_STARgenome", + "fusioninspector/fi_workdir/_STARgenome/exonGeTrInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/exonInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/geneInfo.tab", + "fusioninspector/fi_workdir/_STARgenome/sjdbInfo.txt", + "fusioninspector/fi_workdir/_STARgenome/sjdbList.fromGTF.out.tab", + "fusioninspector/fi_workdir/_STARgenome/sjdbList.out.tab", + "fusioninspector/fi_workdir/_STARgenome/transcriptInfo.tab", + "fusioninspector/fi_workdir/microH.dat", + "fusioninspector/fi_workdir/pipeliner.456.cmds", + "fusioninspector/fi_workdir/star_align.ok", + "fusioninspector/fi_workdir/test.fa", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.info", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.post_promisc_filter", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.EMadj.min_frag_thresh.wSpliceInfo.post_blast_filter.post_promisc_filter.info", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.fusion_junction_read_accs", + "fusioninspector/fi_workdir/test.fusion_preds.coalesced.summary.fusion_spanning_read_accs", + "fusioninspector/fi_workdir/test.gtf", + "fusioninspector/fi_workdir/test.igv.Pfam.gff3", + "fusioninspector/fi_workdir/test.igv.seqsimilar.gff3", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH.annotated", + "fusioninspector/fi_workdir/test.post_blast_and_promiscuity_filter.EMadj.FFPM.wMicroH.annotated.coding_effect", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.bai", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.failed_reads_during_span_analysis", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_junc_reads.sam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_junction_info", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_span_reads.sam", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.fusion_spanning_info", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.read_align_counts.idx", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.read_align_counts.idx.ok", + "fusioninspector/fi_workdir/test.star.cSorted.dupsMarked.bam.spanning_reads_want.idx", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.bai", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.bai.ok", + "fusioninspector/fi_workdir/test.star.sortedByCoord.out.bam.ok", + "fusioninspector/test.FusionInspector.fusions.abridged.tsv", + "fusioninspector/test.FusionInspector.fusions.tsv", + "fusioninspector/test.FusionInspector.log", + "fusioninspector/test.fusion_inspector_web.html", + "fusionreport", + "fusionreport/test", + "fusionreport/test/AAA_BBB.html", + "fusionreport/test/test.fusionreport.tsv", + "fusionreport/test/test.fusionreport_filtered.tsv", + "fusionreport/test/test.fusions.csv", + "fusionreport/test/test.fusions.json", + "fusionreport/test/test_fusionreport_index.html", + "gatk4", + "gatk4/Homo_sapiens.GRCh38.46_dna_primary_assembly.dict", + "get", + "get/rrna.bed", + "get/rrna.gtf", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_plots", + "multiqc/multiqc_report.html", + "picard", + "picard/test.bai", + "picard/test.bam", + "picard/test.bam.metrics", + "picard/test.cram", + "picard/test.cram.crai", + "picard/test.rna_metrics", + "picard/test_collectinsertsize.pdf", + "picard/test_collectinsertsize.txt", + "pipeline_info", + "pipeline_info/nf_core_rnafusion_software_mqc_versions.yml", + "references", + "references/arriba", + "references/arriba/blacklist_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/cytobands_hg38_GRCh38_v2.4.0.tsv", + "references/arriba/known_fusions_hg38_GRCh38_v2.4.0.tsv.gz", + "references/arriba/protein_domains_hg38_GRCh38_v2.4.0.gff3", + "references/fusion_report_db", + "references/fusion_report_db/DB-timestamp.txt", + "references/fusion_report_db/cosmic.db", + "references/fusion_report_db/fusion_report.log", + "references/fusion_report_db/fusiongdb2.db", + "references/fusion_report_db/mitelman.db", + "references/gencode", + "references/gencode/Homo_sapiens.GRCh38.46.gtf", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.interval_list", + "references/gencode/Homo_sapiens.GRCh38.46.gtf.refflat", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa", + "references/gencode/Homo_sapiens.GRCh38.46_dna_primary_assembly.fa.fai", + "references/gffread", + "references/gffread/Homo_sapiens.GRCh38.46.gtf.fasta", + "references/hgnc", + "references/hgnc/HGNC-DB-timestamp.txt", + "references/hgnc/hgnc_complete_set.txt", + "references/salmon", + "references/salmon/salmon", + "references/salmon/salmon/complete_ref_lens.bin", + "references/salmon/salmon/ctable.bin", + "references/salmon/salmon/ctg_offsets.bin", + "references/salmon/salmon/duplicate_clusters.tsv", + "references/salmon/salmon/info.json", + "references/salmon/salmon/mphf.bin", + "references/salmon/salmon/pos.bin", + "references/salmon/salmon/pre_indexing.log", + "references/salmon/salmon/rank.bin", + "references/salmon/salmon/refAccumLengths.bin", + "references/salmon/salmon/ref_indexing.log", + "references/salmon/salmon/reflengths.bin", + "references/salmon/salmon/refseq.bin", + "references/salmon/salmon/seq.bin", + "references/salmon/salmon/versionInfo.json", + "references/star", + "references/star/Genome", + "references/star/Log.out", + "references/star/SA", + "references/star/SAindex", + "references/star/chrLength.txt", + "references/star/chrName.txt", + "references/star/chrNameLength.txt", + "references/star/chrStart.txt", + "references/star/exonGeTrInfo.tab", + "references/star/exonInfo.tab", + "references/star/geneInfo.tab", + "references/star/genomeParameters.txt", + "references/star/sjdbInfo.txt", + "references/star/sjdbList.fromGTF.out.tab", + "references/star/sjdbList.out.tab", + "references/star/transcriptInfo.tab", + "references/starfusion", + "references/starfusion/ctat_genome_lib_build_dir", + "references/starfusion/ctat_genome_lib_build_dir/AnnotFilterRule.pm", + "references/starfusion/ctat_genome_lib_build_dir/PFAM.domtblout.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_fusion_annot_lib.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/_prot_info_db.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/annotfiltrule_cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/blast_pairs.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_gene_blast_pairs.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_pfam_dat.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/cp_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/fusion_annot_lib.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_pfam_hits.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/index_ref_annot_cdna.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/makeblastdb.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2.splice_bed.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/mm2_genome_idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.cdsplus.dfam_masked.fa.idx.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.gene_spans.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.mini.sortu.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_annot.gtf.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome.fa.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/ref_genome_fai.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.cp.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/trans.blast.dat.index.ok", + "references/starfusion/ctat_genome_lib_build_dir/__chkpts/validate_ctat_genome_lib.ok", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.dat.gz", + "references/starfusion/ctat_genome_lib_build_dir/blast_pairs.idx", + "references/starfusion/ctat_genome_lib_build_dir/cancer_splicing_lib", + "references/starfusion/ctat_genome_lib_build_dir/cancer_splicing_lib/cancer_splicing.idx", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.gz", + "references/starfusion/ctat_genome_lib_build_dir/fusion_annot_lib.idx", + "references/starfusion/ctat_genome_lib_build_dir/pfam_domains.dbm", + "references/starfusion/ctat_genome_lib_build_dir/refGene.bed", + "references/starfusion/ctat_genome_lib_build_dir/refGene.sort.bed.gz", + "references/starfusion/ctat_genome_lib_build_dir/refGene.sort.bed.gz.tbi", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdna.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cds", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.cdsplus.fa.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.gene_spans", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.gtf.mm2.splice.bed", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.pep", + "references/starfusion/ctat_genome_lib_build_dir/ref_annot.prot_info.dbm", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.fai", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.mm2", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ndb", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nhr", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nin", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.njs", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.not", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nsq", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.ntf", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.nto", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Genome", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Log.out", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SA", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SAindex", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/build.ok", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrName.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrNameLength.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrStart.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonGeTrInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/geneInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/genomeParameters.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbInfo.txt", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.fromGTF.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.out.tab", + "references/starfusion/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/transcriptInfo.tab", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dat", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dbm", + "references/starfusion/ctat_genome_lib_build_dir/trans.blast.dat.gz", + "salmon", + "salmon/test", + "salmon/test_lib_format_counts.json", + "salmon/test_meta_info.json", + "star", + "star/test.Aligned.sortedByCoord.out.bam", + "star/test.Aligned.sortedByCoord.out.bam.bai", + "starfusion", + "starfusion/test.starfusion.abridged.coding_effect.tsv", + "starfusion/test.starfusion.abridged.tsv", + "starfusion/test.starfusion.fusion_predictions.tsv", + "stringtie", + "stringtie/[:]", + "stringtie/[:]/stringtie.merged.gtf", + "stringtie/test.ballgown", + "stringtie/test.coverage.gtf", + "stringtie/test.gene.abundance.txt", + "stringtie/test.transcripts.gtf" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T09:18:32.616357228" + } +} \ No newline at end of file diff --git a/tests/yml/bam.yml b/tests/yml/bam.yml new file mode 100644 index 000000000..345ac7029 --- /dev/null +++ b/tests/yml/bam.yml @@ -0,0 +1,10 @@ +- sample: test + fastq_1: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/reads_1.fq.gz + fastq_2: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/reads_2.fq.gz + # bam: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/test.Aligned.sortedByCoord.out.bam + # bai: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/test.Aligned.sortedByCoord.out.bam.bai + cram: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/test.Aligned.sortedByCoord.out.cram + crai: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/test.Aligned.sortedByCoord.out.cram.crai + junctions: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/test.Chimeric.out.junction + splice_junctions: https://github.com/nf-core/test-datasets/raw/81cb45949e75cbb85cbf6c5ec9009ab45b160823/testdata/human/test.SJ.out.tab + strandedness: forward diff --git a/workflows/rnafusion.nf b/workflows/rnafusion.nf index dbe490d5a..374edc946 100644 --- a/workflows/rnafusion.nf +++ b/workflows/rnafusion.nf @@ -18,6 +18,7 @@ include { FASTQC } from '../modules/nf-core/fastqc/main include { MULTIQC } from '../modules/nf-core/multiqc/main' include { STAR_ALIGN } from '../modules/nf-core/star/align/main' include { SALMON_QUANT } from '../modules/nf-core/salmon/quant/main' +include { SAMTOOLS_CONVERT } from '../modules/nf-core/samtools/convert/main' include { paramsSummaryMap } from 'plugin/nf-schema' include { FASTQ_ALIGN_STAR } from '../subworkflows/local/fastq_align_star' include { CTATSPLICING_WORKFLOW } from '../subworkflows/local/ctatsplicing_workflow' @@ -36,8 +37,8 @@ workflow RNAFUSION { take: - ch_samplesheet // channel: samplesheet read in from --input - tools // list: a list of tools to run + ch_samplesheet_input // channel: samplesheet read in from --input + tools // list: a list of tools to run main: @@ -53,13 +54,73 @@ workflow RNAFUSION { if (!params.references_only) { + def ch_input = ch_samplesheet_input.map { meta, fastqs, bam, bai, cram, crai, junctions, splice_junctions -> + def align = false + // Check if we need split junctions + if (tools.contains("ctatsplicing") && !splice_junctions) { + align = true + } + + // Check if we need junctions + if (tools.intersect(["starfusion", "ctatsplicing"]) && !junctions) { + align = true + } + + // Check if we need BAM or CRAM files + if (tools.intersect(["ctatsplicing", "arriba", "stringtie", "fusioninspector"]) && !bam && !cram) { + align = true + } + + // Check if there are fastqs when we need to align + if (align && !fastqs) { + error("No fastq files found for ${meta.id}. Either provide fastq files to align or provide a BAM/CRAM file, a junctions file and a split junctions file.") + } + def new_meta = meta + [align:align] + return [ new_meta, fastqs, bam, bai, cram, crai, junctions, splice_junctions ] + } + .tap { ch_samplesheet } + .multiMap { meta, fastqs, bam, bai, cram, crai, junctions, splice_junctions -> + fastqs: [ meta, fastqs ] + bam: [ meta, bam, bai ] + cram: [ meta, cram, crai ] + junctions: [ meta, junctions ] + splice_junctions: [ meta, splice_junctions ] + } + + // Define which fastqs need to be processes (all analysis that's not aligning) + def fastq_tools = ["salmon", "fusioninspector", "fusioncatcher"] + selected_fastq_tools = tools.intersect(fastq_tools) + def ch_fastqs_to_process = ch_input.fastqs.branch { meta, fastqs -> + if (!fastqs && selected_fastq_tools) { + log.warn("Fastq files not found for sample '${meta.id}'. Skipping the following tools for this sample: ${selected_fastq_tools.join(', ')}") + } + found: fastqs + not_found: !fastqs + } + + // Convert CRAM to BAM when needed (when tools that don't support CRAM are used and when the sample isn't aligned) + def only_bam_tools = ["ctatsplicing", "stringtie", "fusioninspector"] + def ch_aligned_inputs = ch_input.bam.filter { meta, file, _bai -> file && !meta.align } + if(tools.intersect(only_bam_tools)) { + SAMTOOLS_CONVERT( + ch_input.cram.filter { meta, file, _crai -> file && !meta.align }, + BUILD_REFERENCES.out.fasta, + BUILD_REFERENCES.out.fai + ) + ch_aligned_inputs = ch_aligned_inputs.mix( + SAMTOOLS_CONVERT.out.bam.join(SAMTOOLS_CONVERT.out.bai, failOnMismatch:true, failOnDuplicate:true) + ) + } else { + ch_aligned_inputs = ch_aligned_inputs.mix(ch_input.cram.filter { meta, file, _crai -> file && !meta.align }) + } + // // QC from FASTQ files // if(!params.skip_qc) { FASTQC ( - ch_samplesheet + ch_fastqs_to_process.found, ) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}) ch_versions = ch_versions.mix(FASTQC.out.versions) @@ -73,7 +134,7 @@ workflow RNAFUSION { if(tools.contains("fastp")) { def ch_adapter_fasta = params.adapter_fasta ? Channel.fromPath(params.adapter_fasta).collect() : [] TRIM_WORKFLOW ( - ch_samplesheet, + ch_fastqs_to_process.found, ch_adapter_fasta, params.skip_qc ) @@ -83,9 +144,13 @@ workflow RNAFUSION { ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastp_json.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(TRIM_WORKFLOW.out.ch_fastqc_trimmed.collect{it[1]}) } else { - ch_reads = ch_samplesheet + ch_reads = ch_fastqs_to_process.found } + // + // MODULE: SALMON_QUANT + // + if(tools.contains("salmon") && !params.skip_qc) { SALMON_QUANT( ch_reads, @@ -98,16 +163,22 @@ workflow RNAFUSION { ch_multiqc_files = ch_multiqc_files.mix(SALMON_QUANT.out.json_info.collect{it[1]}) ch_versions = ch_versions.mix(SALMON_QUANT.out.versions) } + // - // Run STAR alignment + // SUBWORKFLOW: Run STAR alignment // - def ch_aligned_reads = Channel.empty() - def ch_star_junctions = Channel.empty() - def ch_star_split_junctions = Channel.empty() + // Define which fastqs need to be aligned + def ch_fastqs_to_align = ch_reads + .filter { meta, _fastqs -> meta.align } + + // Add the alignment files to the correct channel if their fastqs aren't aligned + def ch_aligned_reads = ch_aligned_inputs + def ch_star_junctions = ch_input.junctions.filter { meta, file -> file && !meta.align } + def ch_star_splice_junctions = ch_input.splice_junctions.filter { meta, file -> file && !meta.align } if(tools.intersect(["ctatsplicing", "arriba", "starfusion", "stringtie"])) { FASTQ_ALIGN_STAR( - ch_reads, + ch_fastqs_to_align, BUILD_REFERENCES.out.starindex_ref, BUILD_REFERENCES.out.gtf, BUILD_REFERENCES.out.fasta, @@ -117,21 +188,21 @@ workflow RNAFUSION { params.seq_center, params.cram ) - ch_versions = ch_versions.mix(FASTQ_ALIGN_STAR.out.versions) - ch_aligned_reads = FASTQ_ALIGN_STAR.out.bam_bai - ch_star_junctions = FASTQ_ALIGN_STAR.out.junctions - ch_star_split_junctions = FASTQ_ALIGN_STAR.out.spl_junc_tabs - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_STAR.out.log_final.collect{it[1]}.ifEmpty([])) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_STAR.out.gene_count.collect{it[1]}.ifEmpty([])) + ch_versions = ch_versions.mix(FASTQ_ALIGN_STAR.out.versions) + ch_aligned_reads = ch_aligned_reads.mix(FASTQ_ALIGN_STAR.out.bam_bai) + ch_star_junctions = ch_star_junctions.mix(FASTQ_ALIGN_STAR.out.junctions) + ch_star_splice_junctions = ch_star_splice_junctions.mix(FASTQ_ALIGN_STAR.out.spl_junc_tabs) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_STAR.out.log_final.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_ALIGN_STAR.out.gene_count.collect{it[1]}.ifEmpty([])) } // - // Run CTAT-SPLICING + // SUBWORKFLOW: Run CTAT-SPLICING // if(tools.contains("ctatsplicing")) { CTATSPLICING_WORKFLOW( - ch_star_split_junctions, + ch_star_splice_junctions, ch_star_junctions, ch_aligned_reads, BUILD_REFERENCES.out.starfusion_ref @@ -140,14 +211,13 @@ workflow RNAFUSION { } // - // SUBWORKFLOW: Run STAR alignment and Arriba + // SUBWORKFLOW: Run Arriba // // TODO: improve how params.arriba_fusions would avoid running arriba module. Maybe imputed from samplesheet? - // TODO: same as above, but with ch_arriba_fusion_fail. It's currently replaces by a dummy file def fusions_created = false - def ch_arriba_fusions = ch_reads.map { it -> [it[0], []] } // Set arriba fusions to empty by default + def ch_arriba_fusions = ch_samplesheet.map { it -> [it[0], []] } // Set arriba fusions to empty by default if(tools.contains("arriba")) { fusions_created = true ARRIBA_WORKFLOW ( @@ -168,11 +238,10 @@ workflow RNAFUSION { // SUBWORKFLOW: Run STAR alignment and StarFusion // - def ch_starfusion_fusions = ch_reads.map { it -> [it[0], []] } // Set starfusion fusions to empty by default + def ch_starfusion_fusions = ch_samplesheet.map { it -> [it[0], []] } // Set starfusion fusions to empty by default if(tools.contains("starfusion")) { fusions_created = true STARFUSION_WORKFLOW ( - ch_aligned_reads.map { meta, bam, _bai -> [ meta, bam ]}, ch_star_junctions, BUILD_REFERENCES.out.starfusion_ref, params.starfusion_fusions @@ -185,7 +254,7 @@ workflow RNAFUSION { // SUBWORKFLOW: Run FusionCatcher // - def ch_fusioncatcher_fusions = ch_reads.map { it -> [it[0], []] } // Set fusioncatcher fusions to empty by default + def ch_fusioncatcher_fusions = ch_samplesheet.map { it -> [it[0], []] } // Set fusioncatcher fusions to empty by default if(tools.contains("fusioncatcher")) { fusions_created = true FUSIONCATCHER_WORKFLOW ( @@ -194,6 +263,8 @@ workflow RNAFUSION { params.fusioncatcher_fusions ) ch_versions = ch_versions.mix(FUSIONCATCHER_WORKFLOW.out.versions) + // Add output of fusioncatcher to a channel + add empty entries for the samples that could not be run + ch_fusioncatcher_fusions = FUSIONCATCHER_WORKFLOW.out.fusions.mix(ch_fastqs_to_process.not_found) } // @@ -221,7 +292,6 @@ workflow RNAFUSION { error("Could not find any fusion files. Please generate some with --arriba, --starfusion and/or --fusioncatcher") } FUSIONREPORT_WORKFLOW ( - ch_reads, BUILD_REFERENCES.out.fusionreport_ref, ch_arriba_fusions, ch_starfusion_fusions,