From 8cdf28a28cc7b1389a17cbce63b535c8693b703d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 16 Feb 2024 11:23:18 +0000 Subject: [PATCH] Bump umitools and delocalise prepareforrsem --- bin/prepare-for-rsem.py | 270 ------------------ modules.json | 27 +- .../nf-core/samtools/flagstat/environment.yml | 4 +- modules/nf-core/samtools/flagstat/main.nf | 4 +- .../samtools/flagstat/tests/main.nf.test.snap | 6 +- .../nf-core/samtools/idxstats/environment.yml | 4 +- modules/nf-core/samtools/idxstats/main.nf | 4 +- .../samtools/idxstats/tests/main.nf.test.snap | 6 +- .../nf-core/samtools/index/environment.yml | 4 +- modules/nf-core/samtools/index/main.nf | 4 +- .../samtools/index/tests/main.nf.test.snap | 18 +- modules/nf-core/samtools/sort/environment.yml | 4 +- modules/nf-core/samtools/sort/main.nf | 4 +- .../samtools/sort/tests/main.nf.test.snap | 18 +- .../nf-core/samtools/stats/environment.yml | 4 +- modules/nf-core/samtools/stats/main.nf | 4 +- .../samtools/stats/tests/main.nf.test.snap | 24 +- .../nf-core/umitools/dedup/environment.yml | 2 +- modules/nf-core/umitools/dedup/main.nf | 4 +- .../nf-core/umitools/extract/environment.yml | 2 +- modules/nf-core/umitools/extract/main.nf | 4 +- .../umitools/extract/tests/main.nf.test.snap | 8 +- .../umitools/prepareforrsem/environment.yml | 7 + .../umitools/prepareforrsem}/main.nf | 25 +- .../nf-core/umitools/prepareforrsem/meta.yml | 53 ++++ .../prepareforrsem/tests/main.nf.test | 62 ++++ .../prepareforrsem/tests/main.nf.test.snap | 62 ++++ .../umitools/prepareforrsem/tests/tags.yml | 2 + .../tests/main.nf.test.snap | 16 +- .../tests/main.nf.test.snap | 18 +- .../tests/main.nf.test.snap | 32 ++- .../tests/main.nf.test.snap | 48 +++- workflows/rnaseq/main.nf | 20 +- 33 files changed, 395 insertions(+), 379 deletions(-) delete mode 100755 bin/prepare-for-rsem.py create mode 100644 modules/nf-core/umitools/prepareforrsem/environment.yml rename modules/{local/umitools_prepareforrsem => nf-core/umitools/prepareforrsem}/main.nf (60%) create mode 100644 modules/nf-core/umitools/prepareforrsem/meta.yml create mode 100644 modules/nf-core/umitools/prepareforrsem/tests/main.nf.test create mode 100644 modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap create mode 100644 modules/nf-core/umitools/prepareforrsem/tests/tags.yml diff --git a/bin/prepare-for-rsem.py b/bin/prepare-for-rsem.py deleted file mode 100755 index 6e7258df6..000000000 --- a/bin/prepare-for-rsem.py +++ /dev/null @@ -1,270 +0,0 @@ -#!/usr/bin/env python3 - -""" -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Credits -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This script is a clone of the "prepare-for-rsem.py" script written by -Ian Sudbury, Tom Smith and other contributors to the UMI-tools package: -https://github.com/CGATOxford/UMI-tools - -It has been included here to address problems encountered with -Salmon quant and RSEM as discussed in the issue below: -https://github.com/CGATOxford/UMI-tools/issues/465 - -When the "umi_tools prepare-for-rsem" command becomes available in an official -UMI-tools release this script will be replaced and deprecated. - -Commit: -https://github.com/CGATOxford/UMI-tools/blob/bf8608d6a172c5ca0dcf33c126b4e23429177a72/umi_tools/prepare-for-rsem.py - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -prepare_for_rsem - make the output from dedup or group compatible with RSEM -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The SAM format specification states that the mnext and mpos fields should point -to the primary alignment of a read's mate. However, not all aligners adhere to -this standard. In addition, the RSEM software requires that the mate of a read1 -appears directly after it in its input BAM. This requires that there is exactly -one read1 alignment for every read2 and vice versa. - -In general (except in a few edge cases) UMI tools outputs only the read2 to that -corresponds to the read specified in the mnext and mpos positions of a selected -read1, and only outputs this read once, even if multiple read1s point to it. -This makes UMI-tools outputs incompatible with RSEM. This script takes the output -from dedup or groups and ensures that each read1 has exactly one read2 (and vice -versa), that read2 always appears directly after read1,and that pairs point to -each other (note this is technically not valid SAM format). Copy any specified -tags from read1 to read2 if they are present (by default, UG and BX, the unique -group and correct UMI tags added by _group_) - -Input must to name sorted. - - -https://raw.githubusercontent.com/CGATOxford/UMI-tools/master/LICENSE - -""" - -from umi_tools import Utilities as U -from collections import defaultdict, Counter -import pysam -import sys - -usage = """ -prepare_for_rsem - make output from dedup or group compatible with RSEM - -Usage: umi_tools prepare_for_rsem [OPTIONS] [--stdin=IN_BAM] [--stdout=OUT_BAM] - - note: If --stdout is omited, standard out is output. To - generate a valid BAM file on standard out, please - redirect log with --log=LOGFILE or --log2stderr """ - - -def chunk_bam(bamfile): - """Take in a iterator of pysam.AlignmentSegment entries and yield - lists of reads that all share the same name""" - - last_query_name = None - output_buffer = list() - - for read in bamfile: - if last_query_name is not None and last_query_name != read.query_name: - yield (output_buffer) - output_buffer = list() - - last_query_name = read.query_name - output_buffer.append(read) - - yield (output_buffer) - - -def copy_tags(tags, read1, read2): - """Given a list of tags, copies the values of these tags from read1 - to read2, if the tag is set""" - - for tag in tags: - try: - read1_tag = read1.get_tag(tag, with_value_type=True) - read2.set_tag(tag, value=read1_tag[0], value_type=read1_tag[1]) - except KeyError: - pass - - return read2 - - -def pick_mate(read, template_dict, mate_key): - """Find the mate of read in the template dict using key. It will retrieve - all reads at that key, and then scan to pick the one that refers to _read_ - as it's mate. If there is no such read, it picks a first one it comes to""" - - mate = None - - # get a list of secondary reads at the correct alignment position - potential_mates = template_dict[not read.is_read1][mate_key] - - # search through one at a time to find a read that points to the current read - # as its mate. - for candidate_mate in potential_mates: - if ( - candidate_mate.next_reference_name == read.reference_name - and candidate_mate.next_reference_start == read.pos - ): - mate = candidate_mate - - # if no such read is found, then pick any old secondary alignment at that position - # note: this happens when UMI-tools outputs the wrong read as something's pair. - if mate is None and len(potential_mates) > 0: - mate = potential_mates[0] - - return mate - - -def main(argv=None): - if argv is None: - argv = sys.argv - - # setup command line parser - parser = U.OptionParser(version="%prog version: $Id$", usage=usage, description=globals()["__doc__"]) - group = U.OptionGroup(parser, "RSEM preparation specific options") - - group.add_option( - "--tags", - dest="tags", - type="string", - default="UG,BX", - help="Comma-separated list of tags to transfer from read1 to read2", - ) - group.add_option( - "--sam", dest="sam", action="store_true", default=False, help="input and output SAM rather than BAM" - ) - - parser.add_option_group(group) - - # add common options (-h/--help, ...) and parse command line - (options, args) = U.Start( - parser, argv=argv, add_group_dedup_options=False, add_umi_grouping_options=False, add_sam_options=False - ) - - skipped_stats = Counter() - - if options.stdin != sys.stdin: - in_name = options.stdin.name - options.stdin.close() - else: - in_name = "-" - - if options.sam: - mode = "" - else: - mode = "b" - - inbam = pysam.AlignmentFile(in_name, "r" + mode) - - if options.stdout != sys.stdout: - out_name = options.stdout.name - options.stdout.close() - else: - out_name = "-" - - outbam = pysam.AlignmentFile(out_name, "w" + mode, template=inbam) - - options.tags = options.tags.split(",") - - for template in chunk_bam(inbam): - assert len(set(r.query_name for r in template)) == 1 - current_template = {True: defaultdict(list), False: defaultdict(list)} - - for read in template: - key = (read.reference_name, read.pos, not read.is_secondary) - current_template[read.is_read1][key].append(read) - - output = set() - - for read in template: - mate = None - - # if this read is a non_primary alignment, we first want to check if it has a mate - # with the non-primary alignment flag set. - - mate_key_primary = True - mate_key_secondary = (read.next_reference_name, read.next_reference_start, False) - - # First look for a read that has the same primary/secondary status - # as read (i.e. secondary mate for secondary read, and primary mate - # for primary read) - mate_key = (read.next_reference_name, read.next_reference_start, read.is_secondary) - mate = pick_mate(read, current_template, mate_key) - - # If none was found then look for the opposite (primary mate of secondary - # read or seconadary mate of primary read) - if mate is None: - mate_key = (read.next_reference_name, read.next_reference_start, not read.is_secondary) - mate = pick_mate(read, current_template, mate_key) - - # If we still don't have a mate, then their can't be one? - if mate is None: - skipped_stats["no_mate"] += 1 - U.warn( - "Alignment {} has no mate -- skipped".format( - "\t".join(map(str, [read.query_name, read.flag, read.reference_name, int(read.pos)])) - ) - ) - continue - - # because we might want to make changes to the read, but not have those changes reflected - # if we need the read again,we copy the read. This is only way I can find to do this. - read = pysam.AlignedSegment().from_dict(read.to_dict(), read.header) - mate = pysam.AlignedSegment().from_dict(mate.to_dict(), read.header) - - # Make it so that if our read is secondary, the mate is also secondary. We don't make the - # mate primary if the read is primary because we would otherwise end up with mulitple - # primary alignments. - if read.is_secondary: - mate.is_secondary = True - - # In a situation where there is already one mate for each read, then we will come across - # each pair twice - once when we scan read1 and once when we scan read2. Thus we need - # to make sure we don't output something already output. - if read.is_read1: - mate = copy_tags(options.tags, read, mate) - output_key = str(read) + str(mate) - - if output_key not in output: - output.add(output_key) - outbam.write(read) - outbam.write(mate) - skipped_stats["pairs_output"] += 1 - - elif read.is_read2: - read = copy_tags(options.tags, mate, read) - output_key = str(mate) + str(read) - - if output_key not in output: - output.add(output_key) - outbam.write(mate) - outbam.write(read) - skipped_stats["pairs_output"] += 1 - - else: - skipped_stats["skipped_not_read12"] += 1 - U.warn( - "Alignment {} is neither read1 nor read2 -- skipped".format( - "\t".join(map(str, [read.query_name, read.flag, read.reference_name, int(read.pos)])) - ) - ) - continue - - if not out_name == "-": - outbam.close() - - U.info( - "Total pairs output: {}, Pairs skipped - no mates: {}," - " Pairs skipped - not read1 or 2: {}".format( - skipped_stats["pairs_output"], skipped_stats["no_mate"], skipped_stats["skipped_not_read12"] - ) - ) - U.Stop() - - -if __name__ == "__main__": - sys.exit(main(sys.argv)) diff --git a/modules.json b/modules.json index 0ef7e1035..b565b5e72 100644 --- a/modules.json +++ b/modules.json @@ -157,17 +157,17 @@ }, "samtools/flagstat": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", @@ -176,12 +176,12 @@ }, "samtools/sort": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "8d8f0ae52d6c9342bd41c33dda0b74b07e32153d", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { @@ -236,14 +236,19 @@ }, "umitools/dedup": { "branch": "master", - "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", + "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { "branch": "master", - "git_sha": "9e56d7a647fbf6f7e45ef123bc916ad66b6f7c9d", + "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, + "umitools/prepareforrsem": { + "branch": "master", + "git_sha": "ff7e93715a2acecf3f143ec78c9858deba2984d0", + "installed_by": ["modules"] + }, "untar": { "branch": "master", "git_sha": "e719354ba77df0a1bd310836aa2039b45c29d620", @@ -255,12 +260,12 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["subworkflows"] }, "bam_rseqc": { @@ -270,12 +275,12 @@ }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "0c38be7e652a0b2f3a37681ee4c0dbdf85677647", + "git_sha": "f4596fe0bdc096cf53ec4497e83defdb3a94ff62", "installed_by": [ "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml index dd0b5c196..bd57cb54d 100644 --- a/modules/nf-core/samtools/flagstat/environment.yml +++ b/modules/nf-core/samtools/flagstat/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index f1893d7cc..eb5f52523 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_FLAGSTAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index 43f3bc2c3..a76fc27e4 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -20,13 +20,13 @@ "versions": { "content": [ [ - "versions.yml:md5,27815e477dcca61cd6b5ca2a94993965" + "versions.yml:md5,fd0030ce49ab3a92091ad80260226452" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:31:37.788139" + "timestamp": "2024-02-13T16:11:44.299617452" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml index de3ed47e8..174973b88 100644 --- a/modules/nf-core/samtools/idxstats/environment.yml +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index 00d916bbf..a544026f3 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_IDXSTATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index 3864fd70a..a7050bdc8 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "versions": { "content": [ [ - "versions.yml:md5,12c42ca48b15e8a3d2a05e99958f1cb9" + "versions.yml:md5,613dde56f108418039ffcdeeddba397a" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:36:41.565552" + "timestamp": "2024-02-13T16:16:50.147462763" }, "idxstats": { "content": [ diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml index 81f093915..a5e506498 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/samtools/index/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index 8ad18fdc2..dc14f98d6 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap index 48ac6caf7..3dc8e7de8 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -2,26 +2,26 @@ "crai_versions": { "content": [ [ - "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:41:38.453554" + "timestamp": "2024-02-13T16:12:00.324667957" }, "csi_versions": { "content": [ [ - "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:42:06.000737" + "timestamp": "2024-02-13T16:12:07.885103162" }, "crai": { "content": [ @@ -62,13 +62,13 @@ "bai_versions": { "content": [ [ - "versions.yml:md5,d8b295c77d732bcea92fa2aa0374d127" + "versions.yml:md5,cc4370091670b64bba7c7206403ffb3e" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T18:40:46.583687" + "timestamp": "2024-02-13T16:11:51.641425452" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index f4064b720..4d898e486 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 4a666d42e..cdd8305d3 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index 418609249..a7cf02101 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -12,14 +12,14 @@ "bam_stub_versions": { "content": [ [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:21:04.36924" + "timestamp": "2024-02-13T16:15:00.20800281" }, "bam": { "content": [ @@ -30,14 +30,14 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + "test.sorted.bam:md5,c6ea1346ec4aae007eb40b708935088c" ] ], "1": [ ], "2": [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" ], "bam": [ [ @@ -45,21 +45,21 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + "test.sorted.bam:md5,c6ea1346ec4aae007eb40b708935088c" ] ], "csi": [ ], "versions": [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + "versions.yml:md5,e6d43fefc9a8bff91c2ce6e3a1716eca" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:20:33.717285" + "timestamp": "2024-02-13T16:14:52.736359271" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml index b45ba90c7..67bb0ca40 100644 --- a/modules/nf-core/samtools/stats/environment.yml +++ b/modules/nf-core/samtools/stats/environment.yml @@ -4,5 +4,5 @@ channels: - bioconda - defaults dependencies: - - bioconda::samtools=1.18 - - bioconda::htslib=1.18 + - bioconda::samtools=1.19.2 + - bioconda::htslib=1.19.1 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 7539140ab..52b00f4b6 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_STATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.19.2--h50ea8bc_0' : + 'biocontainers/samtools:1.19.2--h50ea8bc_0' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index 7d231f8fb..1b7c9ba44 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -8,11 +8,11 @@ "id": "test", "single_end": false }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + "test.stats:md5,01812900aa4027532906c5d431114233" ] ], "1": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ], "stats": [ [ @@ -20,19 +20,19 @@ "id": "test", "single_end": false }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + "test.stats:md5,01812900aa4027532906c5d431114233" ] ], "versions": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:36:55.883828" + "timestamp": "2024-02-13T16:15:25.562429714" }, "bam": { "content": [ @@ -43,11 +43,11 @@ "id": "test", "single_end": false }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + "test.stats:md5,5d8681bf541199898c042bf400391d59" ] ], "1": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ], "stats": [ [ @@ -55,18 +55,18 @@ "id": "test", "single_end": false }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + "test.stats:md5,5d8681bf541199898c042bf400391d59" ] ], "versions": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" + "versions.yml:md5,0514ceb1769b2a88843e08c1f82624a9" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.3" + "nextflow": "24.01.0" }, - "timestamp": "2024-02-12T19:34:50.591803" + "timestamp": "2024-02-13T16:15:07.857611509" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/dedup/environment.yml b/modules/nf-core/umitools/dedup/environment.yml index f443735f4..bc497824f 100644 --- a/modules/nf-core/umitools/dedup/environment.yml +++ b/modules/nf-core/umitools/dedup/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::umi_tools=1.1.4 + - bioconda::umi_tools=1.1.5 diff --git a/modules/nf-core/umitools/dedup/main.nf b/modules/nf-core/umitools/dedup/main.nf index 64ab8f98e..b2d11ebf5 100644 --- a/modules/nf-core/umitools/dedup/main.nf +++ b/modules/nf-core/umitools/dedup/main.nf @@ -4,8 +4,8 @@ process UMITOOLS_DEDUP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : - 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" + 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.5--py39hf95cd2a_0' : + 'biocontainers/umi_tools:1.1.5--py39hf95cd2a_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/umitools/extract/environment.yml b/modules/nf-core/umitools/extract/environment.yml index 7d08ac0ec..aab452d1e 100644 --- a/modules/nf-core/umitools/extract/environment.yml +++ b/modules/nf-core/umitools/extract/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::umi_tools=1.1.4 + - bioconda::umi_tools=1.1.5 diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index 4bd79e79f..8719e5f67 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -5,8 +5,8 @@ process UMITOOLS_EXTRACT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : - 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" + 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.5--py39hf95cd2a_0' : + 'biocontainers/umi_tools:1.1.5--py39hf95cd2a_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test.snap b/modules/nf-core/umitools/extract/tests/main.nf.test.snap index 6d5944f1d..bf82701dd 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test.snap +++ b/modules/nf-core/umitools/extract/tests/main.nf.test.snap @@ -2,9 +2,13 @@ "versions": { "content": [ [ - "versions.yml:md5,5a18da2d3a5a4de15e7aaae9082d7abb" + "versions.yml:md5,568d243174c081a0301e74ed42e59b48" ] ], - "timestamp": "2023-12-08T09:41:43.540658352" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-16T10:01:33.326046137" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/prepareforrsem/environment.yml b/modules/nf-core/umitools/prepareforrsem/environment.yml new file mode 100644 index 000000000..dbb1bde77 --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/environment.yml @@ -0,0 +1,7 @@ +name: umitools_prepareforrsem +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::umi_tools=1.1.5 diff --git a/modules/local/umitools_prepareforrsem/main.nf b/modules/nf-core/umitools/prepareforrsem/main.nf similarity index 60% rename from modules/local/umitools_prepareforrsem/main.nf rename to modules/nf-core/umitools/prepareforrsem/main.nf index d3c2bd2c2..6a511af31 100644 --- a/modules/local/umitools_prepareforrsem/main.nf +++ b/modules/nf-core/umitools/prepareforrsem/main.nf @@ -2,13 +2,13 @@ process UMITOOLS_PREPAREFORRSEM { tag "$meta.id" label 'process_medium' - conda "bioconda::umi_tools=1.1.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : - 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" + 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.5--py39hf95cd2a_0' : + 'biocontainers/umi_tools:1.1.5--py39hf95cd2a_0' }" input: - tuple val(meta), path(bam) + tuple val(meta), path(bam), path(bai) output: tuple val(meta), path('*.bam'), emit: bam @@ -18,11 +18,11 @@ process UMITOOLS_PREPAREFORRSEM { when: task.ext.when == null || task.ext.when - script: // This script is bundled with the pipeline, in nf-core/rnaseq/bin/ + script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ - prepare-for-rsem.py \\ + umi_tools prepare-for-rsem \\ --stdin=$bam \\ --stdout=${prefix}.bam \\ --log=${prefix}.prepare_for_rsem.log \\ @@ -30,7 +30,18 @@ process UMITOOLS_PREPAREFORRSEM { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + END_VERSIONS + """ + + stub: + """ + touch ${meta.id}.bam + touch ${meta.id}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } diff --git a/modules/nf-core/umitools/prepareforrsem/meta.yml b/modules/nf-core/umitools/prepareforrsem/meta.yml new file mode 100644 index 000000000..8b85366cc --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/meta.yml @@ -0,0 +1,53 @@ +name: umitools_prepareforrsem +description: Make the output from umi_tools dedup or group compatible with RSEM +keywords: + - umitools + - rsem + - salmon + - dedup +tools: + - umi_tools: + description: > + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ + license: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: | + BAM file containing reads to be deduplicated via UMIs. + pattern: "*.{bam}" + - bai: + type: file + description: | + BAM index files corresponding to the input BAM file. + pattern: "*.{bai}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: Prepared BAM file. + pattern: "*.{bam}" + - log: + type: file + description: File with logging information + pattern: "*.{log}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@pinin4fjords" +maintainers: + - "@drpatelh" + - "@pinin4fjords" diff --git a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test new file mode 100644 index 000000000..d78158bae --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test @@ -0,0 +1,62 @@ +nextflow_process { + + name "Test Process UMITOOLS_PREPAREFORRSEM" + script "../main.nf" + process "UMITOOLS_PREPAREFORRSEM" + + tag "modules" + tag "modules_nfcore" + tag "umitools" + tag "umitools/prepareforrsem" + + test("sarscov2 - bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bam).match('bam_sarscov2_bam') }, + { assert snapshot(process.out.versions).match('versions_sarscov2_bam') } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bam).match('bam_sarscov2_bam - stub') }, + { assert snapshot(process.out.versions).match('versions_sarscov2_bam - stub') } + ) + } + + } + +} diff --git a/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap new file mode 100644 index 000000000..c1e863f6f --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/tests/main.nf.test.snap @@ -0,0 +1,62 @@ +{ + "versions_sarscov2_bam": { + "content": [ + [ + "versions.yml:md5,3403849e88fbd33fadd928f8b6ca60bb" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-16T09:46:33.206750132" + }, + "bam_sarscov2_bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,fe4b8302182615651e4e7784ec67c819" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-12T17:33:02.066537672" + }, + "bam_sarscov2_bam - stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-12T17:33:39.36279218" + }, + "versions_sarscov2_bam - stub": { + "content": [ + [ + "versions.yml:md5,3403849e88fbd33fadd928f8b6ca60bb" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-16T09:46:47.363697981" + } +} \ No newline at end of file diff --git a/modules/nf-core/umitools/prepareforrsem/tests/tags.yml b/modules/nf-core/umitools/prepareforrsem/tests/tags.yml new file mode 100644 index 000000000..804c113dd --- /dev/null +++ b/modules/nf-core/umitools/prepareforrsem/tests/tags.yml @@ -0,0 +1,2 @@ +umitools/prepareforrsem: + - "modules/nf-core/umitools/prepareforrsem/**" diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap index 036a63bbe..5a3e80b4a 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap @@ -10,6 +10,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:58:40.394333937" }, "test_bam_dedup_stats_samtools_umitools_flagstats": { @@ -23,6 +27,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:58:40.385185447" }, "test_bam_dedup_stats_samtools_umitools_stats": { @@ -32,10 +40,14 @@ { "id": "test" }, - "test.stats:md5,6c296bce3659651fb5a08c31db314d91" + "test.stats:md5,02342d307779941001376ff5d19e941a" ] ] ], - "timestamp": "2023-12-04T11:06:41.700472756" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:45:33.563016651" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index a208d1014..2f02f747a 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -5,9 +5,13 @@ "test.bam.bai:md5,c41c60d8a94adebe53b6df80b6e90d38", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", - "test.stats:md5,0035ac8900d85e9a790f4c1f48b76947" + "test.stats:md5,9ac28e327a7797d7bb6a5922fde59ed1" ], - "timestamp": "2023-12-05T17:45:12.484869" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:46:16.302755774" }, "sarscov2 - bam": { "content": [ @@ -15,8 +19,12 @@ "test.bam.bai:md5,4d3ae8d013444b55e17aa0149a2ab404", "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", - "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" + "test.stats:md5,d7796222a087b9bb97f631f1c21b9c95" ], - "timestamp": "2023-12-05T17:43:58.582652" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:46:02.942115679" } -} +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap index c159eef33..6645a0920 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -11,6 +11,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-10-22T20:25:03.687121177" }, "test_bam_sort_stats_samtools_paired_end_idxstats": { @@ -25,6 +29,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-10-22T20:25:03.709648916" }, "test_bam_sort_stats_samtools_single_end_stats": { @@ -35,11 +43,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,f281507081517414eb1a04b2d9c855b2" + "test.stats:md5,cb0bf2b79de52fdf0c61e80efcdb0bb4" ] ] ], - "timestamp": "2024-01-18T17:10:02.818694" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:44:38.553256801" }, "test_bam_sort_stats_samtools_paired_end_stats": { "content": [ @@ -49,11 +61,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" + "test.stats:md5,d7796222a087b9bb97f631f1c21b9c95" ] ] ], - "timestamp": "2023-12-04T11:06:59.253905951" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:44:48.355870518" }, "test_bam_sort_stats_samtools_single_end_idxstats": { "content": [ @@ -67,6 +83,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:10:02.84631" }, "test_bam_sort_stats_samtools_single_end_flagstats": { @@ -81,6 +101,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:10:02.829756" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap index 8bf0d379b..bf0b0c696 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap @@ -11,6 +11,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:31:26.194017574" }, "test_bam_stats_samtools_paired_end_stats": { @@ -21,11 +25,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,49e2b43344ff92bc4c02463a58f7ba4a" + "test.stats:md5,ddaf8f33fe9c1ebe9b06933213aec8ed" ] ] ], - "timestamp": "2024-01-18T17:17:27.704335" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:45:06.230091746" }, "test_bam_stats_samtools_paired_end_flagstats": { "content": [ @@ -39,6 +47,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:17:27.717482" }, "test_bam_stats_samtools_single_end_flagstats": { @@ -53,6 +65,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:26:10.340046381" }, "test_bam_stats_samtools_paired_end_cram_idxstats": { @@ -67,6 +83,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:31:26.207052003" }, "test_bam_stats_samtools_single_end_stats": { @@ -77,11 +97,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,5a6667d97806e5002731e9cf23674fad" + "test.stats:md5,dc178e1a4956043aba8abc83e203521b" ] ] ], - "timestamp": "2023-12-04T11:07:06.676820877" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:44:57.442208382" }, "test_bam_stats_samtools_paired_end_idxstats": { "content": [ @@ -95,6 +119,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2024-01-18T17:17:27.726719" }, "test_bam_stats_samtools_single_end_idxstats": { @@ -109,6 +137,10 @@ ] ] ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, "timestamp": "2023-11-06T09:26:10.349439801" }, "test_bam_stats_samtools_paired_end_cram_stats": { @@ -119,10 +151,14 @@ "id": "test", "single_end": false }, - "test.stats:md5,2cf2fe93596ee3d74f946097b204a629" + "test.stats:md5,d3345c4887f4a9ea4f7f56405b495db0" ] ] ], - "timestamp": "2023-12-04T11:07:22.30295557" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.01.0" + }, + "timestamp": "2024-02-13T16:45:14.997164209" } } \ No newline at end of file diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index c62ca66bd..e3e0e9b24 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -13,7 +13,6 @@ include { DESEQ2_QC as DESEQ2_QC_RSEM } from '../../modules/local/deseq2_ include { DESEQ2_QC as DESEQ2_QC_PSEUDO } from '../../modules/local/deseq2_qc' include { DUPRADAR } from '../../modules/local/dupradar' include { MULTIQC_CUSTOM_BIOTYPE } from '../../modules/local/multiqc_custom_biotype' -include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/local/umitools_prepareforrsem' // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules @@ -38,15 +37,16 @@ include { getInferexperimentStrandedness } from '../../subworkflows/local/utils_ // // MODULE: Installed directly from nf-core/modules // -include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' -include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' -include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' -include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' -include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' -include { SORTMERNA } from '../../modules/nf-core/sortmerna' -include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' -include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' -include { MULTIQC } from '../../modules/nf-core/multiqc' +include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq' +include { BBMAP_BBSPLIT } from '../../modules/nf-core/bbmap/bbsplit' +include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort' +include { PRESEQ_LCEXTRAP } from '../../modules/nf-core/preseq/lcextrap' +include { QUALIMAP_RNASEQ } from '../../modules/nf-core/qualimap/rnaseq' +include { SORTMERNA } from '../../modules/nf-core/sortmerna' +include { STRINGTIE_STRINGTIE } from '../../modules/nf-core/stringtie/stringtie' +include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts' +include { MULTIQC } from '../../modules/nf-core/multiqc' +include { UMITOOLS_PREPAREFORRSEM as UMITOOLS_PREPAREFORSALMON } from '../../modules/nf-core/umitools_prepareforrsem' // // SUBWORKFLOW: Consisting entirely of nf-core/modules