From 109d596c65a5427a12f2273b0fa502241d89f9ff Mon Sep 17 00:00:00 2001 From: lindenb Date: Fri, 20 Sep 2024 21:26:35 +0200 Subject: [PATCH 1/5] telseq --- conf/modules/telseq.config | 28 ++ modules.json | 433 +++++++++++++----- modules/nf-core/telseq/environment.yml | 6 + modules/nf-core/telseq/main.nf | 62 +++ modules/nf-core/telseq/meta.yml | 89 ++++ modules/nf-core/telseq/tests/main.nf.test | 122 +++++ .../nf-core/telseq/tests/main.nf.test.snap | 54 +++ modules/nf-core/telseq/tests/tags.yml | 2 + nextflow.config | 1 + nextflow_schema.json | 2 +- .../bam_variant_calling_germline_all/main.nf | 17 + workflows/sarek/main.nf | 1 + 12 files changed, 710 insertions(+), 107 deletions(-) create mode 100644 conf/modules/telseq.config create mode 100644 modules/nf-core/telseq/environment.yml create mode 100644 modules/nf-core/telseq/main.nf create mode 100644 modules/nf-core/telseq/meta.yml create mode 100644 modules/nf-core/telseq/tests/main.nf.test create mode 100644 modules/nf-core/telseq/tests/main.nf.test.snap create mode 100644 modules/nf-core/telseq/tests/tags.yml diff --git a/conf/modules/telseq.config b/conf/modules/telseq.config new file mode 100644 index 0000000000..43099af750 --- /dev/null +++ b/conf/modules/telseq.config @@ -0,0 +1,28 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config file for defining DSL2 per module options and publishing paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Available keys to override module options: + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. + ext.when = When to run the module. +---------------------------------------------------------------------------------------- +*/ + +// TELSEQ + +process { + if (params.tools && params.tools.split(',').contains('telseq')) { + + withName: 'TELSEQ' { + ext.when = { params.tools && params.tools.split(',').contains('telseq') } + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/telseq/" }, + pattern: "*.tsv" + ] + } + } +} diff --git a/modules.json b/modules.json index 8862eab99c..2a0fe110cf 100644 --- a/modules.json +++ b/modules.json @@ -8,501 +8,710 @@ "ascat": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bcftools/annotate": { "branch": "master", "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/bcftools/annotate/bcftools-annotate.diff" }, "bcftools/concat": { "branch": "master", "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bcftools/mpileup": { "branch": "master", "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["bam_ngscheckmate"] + "installed_by": [ + "bam_ngscheckmate" + ] }, "bcftools/sort": { "branch": "master", "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bcftools/stats": { "branch": "master", "git_sha": "a5ba4d59c2b248c0379b0f8aeb4e7e754566cd1f", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bwa/index": { "branch": "master", "git_sha": "086fa66260595e123b0ea47a6512539b72a9afa3", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bwa/mem": { "branch": "master", "git_sha": "0c34b8159f62cde451c4ff249629c9d0a4f3f9c3", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bwamem2/index": { "branch": "master", "git_sha": "7081e04c18de9480948d34513a1c1e2d0fa9126d", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bwamem2/mem": { "branch": "master", "git_sha": "3afb95b2e15fc4a2347470255a7ef654f650c8ec", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/cat": { "branch": "master", "git_sha": "9437e6053dccf4aafa022bfd6e7e9de67e625af8", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "4fc983ad0b30e6e32696fa7d980c76c7bfe1c03e", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cnvkit/antitarget": { "branch": "master", "git_sha": "7d8eff8f0cbc20cb83ce624e86c58ede51397054", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cnvkit/batch": { "branch": "master", "git_sha": "f53b071421340e6fac0806c86ba030e578e94826", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cnvkit/call": { "branch": "master", "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cnvkit/export": { "branch": "master", "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cnvkit/genemetrics": { "branch": "master", "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cnvkit/reference": { "branch": "master", "git_sha": "f8693ff46b884892982d658271ed260380111c53", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "controlfreec/assesssignificance": { "branch": "master", "git_sha": "e6c5689c1d4c7f255a7cc042b0a2fa25a9b3c4fa", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/controlfreec/assesssignificance/controlfreec-assesssignificance.diff" }, "controlfreec/freec": { "branch": "master", "git_sha": "7b5827ac89358ad6dd3e8f328f6d1427d7f14a68", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "controlfreec/freec2bed": { "branch": "master", "git_sha": "0c7fd5488d43188ee801c800461d259389d34c19", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "controlfreec/freec2circos": { "branch": "master", "git_sha": "b626cd7bf99db4f42de314ee8b70d1c389a7b9f4", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "controlfreec/makegraph2": { "branch": "master", "git_sha": "c3f338377c177a01847eeea2f77da33ce89f92e6", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "deepvariant": { "branch": "master", "git_sha": "199ba086a259e1933d6e0ab7596e4a977bbd483a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "dragmap/align": { "branch": "master", "git_sha": "dd2757cc22c5de8943fa38ba7cd6f8cc1eb65ac1", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/dragmap/align/dragmap-align.diff" }, "dragmap/hashtable": { "branch": "master", "git_sha": "ae9e01cb5e77faada314047e78423b22b4f5bbc5", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/dragmap/hashtable/dragmap-hashtable.diff" }, "ensemblvep/download": { "branch": "master", "git_sha": "3db4f8488315cd7d7cf3fcb64251f6603210e831", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "ensemblvep/vep": { "branch": "master", "git_sha": "b42fec6f7c6e5d0716685cabb825ef6bf6e386b5", - "installed_by": ["modules", "vcf_annotate_ensemblvep"] + "installed_by": [ + "modules", + "vcf_annotate_ensemblvep" + ] }, "fastp": { "branch": "master", "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "06c8865e36741e05ad32ef70ab3fac127486af48", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fgbio/callmolecularconsensusreads": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fgbio/fastqtobam": { "branch": "master", "git_sha": "19f81cab3b2a08f37c4f3727ddb30c01ebf07be6", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fgbio/groupreadsbyumi": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "freebayes": { "branch": "master", "git_sha": "77978839bef6d437f21edb900b49bcbc04f9f735", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/applybqsr": { "branch": "master", "git_sha": "af273ea6618c50e82c372abe18b0a225e84fe6f7", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/applyvqsr": { "branch": "master", "git_sha": "cee8fe33d3ef1a220dee67dac75a32f7c872f63f", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/baserecalibrator": { "branch": "master", "git_sha": "8a223e11d4e6deb36484e01891eae9c1cacb5f5d", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/calculatecontamination": { "branch": "master", "git_sha": "77ffba959bbe8b6e1d95d47688075d113e24f0d4", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/cnnscorevariants": { "branch": "master", "git_sha": "60a7dbae179bcfa24c10294cc9a07423a239c19a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/createsequencedictionary": { "branch": "master", "git_sha": "e6fe277739f5894711405af3e717b2470bd956b5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/estimatelibrarycomplexity": { "branch": "master", "git_sha": "1943aa60f7490c3d6740e8872e6e69122ccc8087", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/filtermutectcalls": { "branch": "master", "git_sha": "7d814815f638e1483995b24a23f5f23229036bbf", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/filtervarianttranches": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/gatherbqsrreports": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/gatherpileupsummaries": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/genomicsdbimport": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/genotypegvcfs": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/getpileupsummaries": { "branch": "master", "git_sha": "b632dcbf8bd3d7b9cb22fd0b2416e9e6cb8f4045", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/haplotypecaller": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/intervallisttobed": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/learnreadorientationmodel": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/markduplicates": { "branch": "master", "git_sha": "194fca815cf594646e638fa5476acbcc296f1850", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/mergemutectstats": { "branch": "master", "git_sha": "cafe91148ca110e52ceaa07f3e373b882800d04b", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/mergevcfs": { "branch": "master", "git_sha": "194fca815cf594646e638fa5476acbcc296f1850", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/mutect2": { "branch": "master", "git_sha": "5fd04feb37b58caa6a54d41e38c80066bdf71056", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4/variantrecalibrator": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4spark/applybqsr": { "branch": "master", "git_sha": "3b928d02096f928ef224d89f2a502afaa6e06556", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4spark/baserecalibrator": { "branch": "master", "git_sha": "d742e3143f2ccb8853c29b35cfcf50b5e5026980", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gatk4spark/markduplicates": { "branch": "master", "git_sha": "3b928d02096f928ef224d89f2a502afaa6e06556", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gawk": { "branch": "master", "git_sha": "cf3ed075695639b0a0924eb0901146df1996dc08", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "lofreq/callparallel": { "branch": "master", "git_sha": "bf918b32044472c9346ec3444d894c69700ced6d", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "manta/germline": { "branch": "master", "git_sha": "ebc1733b77c702f19fe42076a5edfcbaa0d84f66", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "manta/somatic": { "branch": "master", "git_sha": "ab693fbb906b3a1151ad21e270129a9d48437ab6", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "manta/tumoronly": { "branch": "master", "git_sha": "8731a6221dd10fd9039e18518b390b43e14ef9ae", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "mosdepth": { "branch": "master", "git_sha": "e0616fba0919adb190bfe070d17fb12d76ba3a26", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "msisensorpro/msisomatic": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "msisensorpro/scan": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "ngscheckmate/ncm": { "branch": "master", "git_sha": "0e04b949c90e686c8b07495576832d78ab9210cf", - "installed_by": ["bam_ngscheckmate"] + "installed_by": [ + "bam_ngscheckmate" + ] }, "samblaster": { "branch": "master", "git_sha": "310850152f3e1dec6ba28b28e1f1cb9ab8660a49", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/bam2fq": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/collatefastq": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/convert": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/faidx": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/merge": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/mpileup": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/stats": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/view": { "branch": "master", "git_sha": "04fbbc7c43cebc0b95d5b126f6d9fe4effa33519", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/applyvarcal": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/bwamem": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/dedup": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/dnamodelapply": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/dnascope": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/gvcftyper": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/haplotyper": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "sentieon/varcal": { "branch": "master", "git_sha": "e809c6b078d5343bdf8b5b2b78483096a2b5a973", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "snpeff/download": { "branch": "master", "git_sha": "214d575774c172062924ad3564b4f66655600730", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "snpeff/snpeff": { "branch": "master", "git_sha": "2f3db6f45147ebbb56b371536e31bdf622b5bfee", - "installed_by": ["modules", "vcf_annotate_snpeff"] + "installed_by": [ + "modules", + "vcf_annotate_snpeff" + ] }, "spring/decompress": { "branch": "master", "git_sha": "0a92fa8d17d9e3c411e01a0ce41a86eff02b1599", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "strelka/germline": { "branch": "master", "git_sha": "e8f2c77a6e4174ee0a48d073d4cc8ff06c44bb4c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "strelka/somatic": { "branch": "master", "git_sha": "a626d7c63cb0ee675686a2f47b26cdc53266e186", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "svdb/merge": { "branch": "master", "git_sha": "ba3f3df395d2719dcef5c67189042a1dc555c701", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "tabix/bgziptabix": { "branch": "master", "git_sha": "09d3c8c29b31a2dfd610305b10550f0e1dbcd4a9", - "installed_by": ["modules", "vcf_annotate_snpeff"] + "installed_by": [ + "modules", + "vcf_annotate_snpeff" + ] }, "tabix/tabix": { "branch": "master", "git_sha": "9502adb23c0b97ed8e616bbbdfa73b4585aec9a1", - "installed_by": ["modules", "vcf_annotate_ensemblvep"] + "installed_by": [ + "modules", + "vcf_annotate_ensemblvep" + ] + }, + "telseq": { + "branch": "master", + "git_sha": "163f8ba5ab8dc54bc68099844b3b7fb5c9cba570", + "installed_by": [ + "modules" + ] }, "tiddit/sv": { "branch": "master", "git_sha": "6af4979ee1a57c986102175d9e1bb7ab834f3ae8", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "unzip": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "vcftools": { "branch": "master", "git_sha": "624ecdc43b72e0a45bf05d9b57215d18dcd538f8", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } }, @@ -511,35 +720,47 @@ "bam_ngscheckmate": { "branch": "master", "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nextflow_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfvalidation_plugin": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "vcf_annotate_ensemblvep": { "branch": "master", "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "vcf_annotate_snpeff": { "branch": "master", "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/telseq/environment.yml b/modules/nf-core/telseq/environment.yml new file mode 100644 index 0000000000..5502308b97 --- /dev/null +++ b/modules/nf-core/telseq/environment.yml @@ -0,0 +1,6 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::samtools=1.20 + - bioconda::telseq=0.0.2 diff --git a/modules/nf-core/telseq/main.nf b/modules/nf-core/telseq/main.nf new file mode 100644 index 0000000000..4bfeac5aba --- /dev/null +++ b/modules/nf-core/telseq/main.nf @@ -0,0 +1,62 @@ +process TELSEQ { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-5ce2a0c04652b0d0cc87f012a2240e1e5a90bc90:eb084e8aa92146f3987d00af8d38b36214d1f39f-0': + 'biocontainers/mulled-v2-5ce2a0c04652b0d0cc87f012a2240e1e5a90bc90:eb084e8aa92146f3987d00af8d38b36214d1f39f-0' }" + + input: + tuple val(meta ), path(bam), path(bai) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + tuple val(meta4), path(bed) + + output: + tuple val(meta), path("*.telseq.tsv"), emit: output + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def exome = bed ? " --exomebed=${bed}" : "" + """ + # telseq doesn't support CRAM. See https://github.com/zd1/telseq/issues/26 + if ${bam.name.endsWith(".cram")} + then + samtools view -T ${fasta} -O BAM --uncompressed ${bam} |\\ + telseq ${args} ${exome} - > tmp.tsv + else + telseq ${args} ${exome} ${bam} > tmp.tsv + fi + + # + # 'bug' in telseq, messages that should be printed on stderr are printed on stdout + # We remove them with awk + # + awk '/^ReadGroup/ {ok=1;} {if(ok) print;}' tmp.tsv > ${prefix}.telseq.tsv + rm tmp.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + telseq: \$(telseq --help 2>&1 | grep "^Version" -m1 | cut -d ' ' -f2) + samtools: \$(samtools --version |& sed '1!d ; s/samtools //') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.telseq.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + telseq: \$(telseq --help 2>&1 | grep "^Version" -m1 | cut -d ' ' -f2) + samtools: \$(samtools --version |& sed '1!d ; s/samtools //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/telseq/meta.yml b/modules/nf-core/telseq/meta.yml new file mode 100644 index 0000000000..092567432f --- /dev/null +++ b/modules/nf-core/telseq/meta.yml @@ -0,0 +1,89 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "telseq" +description: "Telseq: a software for calculating telomere length" +keywords: + - bam + - cram + - genomics + - samtools + - telomere + - telseq +tools: + - "telseq": + description: "A software for calculating telomere length" + homepage: "https://github.com/zd1/telseq" + documentation: "https://github.com/zd1/telseq" + tool_dev_url: "https://github.com/zd1/telseq" + doi: "10.1093/nar/gku181" + licence: ["GPL v3"] + args_id: "$args" + identifier: "" + - samtools: + description: Tools for dealing with SAM, BAM and CRAM files + homepage: http://www.htslib.org/ + documentation: http://www.htslib.org/doc/samtools.html + tool_dev_url: https://github.com/samtools/samtools + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] + identifier: "biotools:samtools" +input: + - - "meta ": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'genome' ] + - bam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - bai: + type: file + description: bam index file + pattern: "*.{bai,crai}" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference genome file + pattern: "*.{fa,fasta}" + - - meta3: + type: map + description: | + Groovy Map containing reference index information + e.g. [ id:'genome' ] + - fai: + type: file + description: Fasta index file + pattern: "*.fai" + - - meta4: + type: map + description: | + Groovy Map containing bed information + e.g. [ id:'genome' ] + - bed: + type: file + description: Optional exome regions in BED format. These regions will be excluded + pattern: "*.bed" +output: + - output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.telseq.tsv": + type: file + description: Telseq output + pattern: "*.tsv" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@lindenb" +maintainers: + - "@lindenb" diff --git a/modules/nf-core/telseq/tests/main.nf.test b/modules/nf-core/telseq/tests/main.nf.test new file mode 100644 index 0000000000..02a4e0815b --- /dev/null +++ b/modules/nf-core/telseq/tests/main.nf.test @@ -0,0 +1,122 @@ +// nf-core modules test telseq +nextflow_process { + + name "Test Process TELSEQ" + script "../main.nf" + process "TELSEQ" + + tag "modules" + tag "modules_nfcore" + tag "telseq" + + test("sarscov2 - cram") { + when { + process { + """ + input[0] = [ + [ id:'cram' ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ] + input[1] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + input[3] = [ [] , [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output[0][1], + process.out.versions).match() } + ) + } + } + + test("sarscov2 - bam") { + when { + process { + """ + input[0] = [ + [ id:'bam' ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + input[3] = [ [] , [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output[0][1], + process.out.versions).match() } + ) + } + } + + test("sarscov2 - bam - bed") { + when { + process { + """ + input[0] = [ + [ id:'bambed' ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + input[3] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output[0][1], + process.out.versions).match() } + ) + } + } + + + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'stub', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [ [] , file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + input[3] = [ [] , [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.output[0][1], + process.out.versions).match() } + ) + } + + } + +} diff --git a/modules/nf-core/telseq/tests/main.nf.test.snap b/modules/nf-core/telseq/tests/main.nf.test.snap new file mode 100644 index 0000000000..4ca41fd664 --- /dev/null +++ b/modules/nf-core/telseq/tests/main.nf.test.snap @@ -0,0 +1,54 @@ +{ + "sarscov2 - bam - stub": { + "content": [ + "stub.telseq.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "versions.yml:md5,f0569759735b18ce1064c9ed2ddc9610" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-20T14:09:45.936712383" + }, + "sarscov2 - cram": { + "content": [ + "cram.telseq.tsv:md5,82005b49e17f114e8ad759dd9d520912", + [ + "versions.yml:md5,f0569759735b18ce1064c9ed2ddc9610" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-20T14:09:09.775504172" + }, + "sarscov2 - bam": { + "content": [ + "bam.telseq.tsv:md5,82005b49e17f114e8ad759dd9d520912", + [ + "versions.yml:md5,f0569759735b18ce1064c9ed2ddc9610" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-20T14:09:27.747371336" + }, + "sarscov2 - bam - bed": { + "content": [ + "bambed.telseq.tsv:md5,58374f99d395fa64ea561aca73fd6c89", + [ + "versions.yml:md5,f0569759735b18ce1064c9ed2ddc9610" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-20T14:09:27.747371336" + } +} diff --git a/modules/nf-core/telseq/tests/tags.yml b/modules/nf-core/telseq/tests/tags.yml new file mode 100644 index 0000000000..5776bda040 --- /dev/null +++ b/modules/nf-core/telseq/tests/tags.yml @@ -0,0 +1,2 @@ +telseq: + - "modules/nf-core/telseq/**" diff --git a/nextflow.config b/nextflow.config index 7f07ad3ff9..805265cbf8 100644 --- a/nextflow.config +++ b/nextflow.config @@ -440,6 +440,7 @@ includeConfig 'conf/modules/sentieon_dnascope_joint_germline.config' includeConfig 'conf/modules/sentieon_haplotyper.config' includeConfig 'conf/modules/sentieon_haplotyper_joint_germline.config' includeConfig 'conf/modules/strelka.config' +includeConfig 'conf/modules/telseq.config' includeConfig 'conf/modules/tiddit.config' includeConfig 'conf/modules/post_variant_calling.config' includeConfig 'conf/modules/lofreq.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 9e707436f4..91dd187a71 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -112,7 +112,7 @@ "fa_icon": "fas fa-toolbox", "description": "Tools to use for duplicate marking, variant calling and/or for annotation.", "help_text": "Multiple tools separated with commas.\n\n**Variant Calling:**\n\nGermline variant calling can currently be performed with the following variant callers:\n- SNPs/Indels: DeepVariant, FreeBayes, GATK HaplotypeCaller, mpileup, Sentieon Haplotyper, Strelka\n- Structural Variants: Manta, TIDDIT\n- Copy-number: CNVKit\n\nTumor-only somatic variant calling can currently be performed with the following variant callers:\n- SNPs/Indels: FreeBayes, mpileup, Mutect2, Lofreq, Strelka\n- Structural Variants: Manta, TIDDIT\n- Copy-number: CNVKit, ControlFREEC\n\nSomatic variant calling can currently only be performed with the following variant callers:\n- SNPs/Indels: FreeBayes, Mutect2, Strelka\n- Structural variants: Manta, TIDDIT\n- Copy-Number: ASCAT, CNVKit, Control-FREEC\n- Microsatellite Instability: MSIsensorpro\n\n> **NB** Mutect2 for somatic variant calling cannot be combined with `--no_intervals`\n\n**Annotation:**\n \n- snpEff, VEP, merge (both consecutively), and bcftools annotate (needs `--bcftools_annotation`).\n\n> **NB** As Sarek will use bgzip and tabix to compress and index VCF files annotated, it expects VCF files to be sorted when starting from `--step annotate`.", - "pattern": "^((ascat|bcfann|cnvkit|controlfreec|deepvariant|freebayes|haplotypecaller|lofreq|sentieon_dnascope|sentieon_haplotyper|manta|merge|mpileup|msisensorpro|mutect2|ngscheckmate|sentieon_dedup|snpeff|strelka|tiddit|vep)?,?)*(? [ counts ] }) reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_tstv_qual.collect{ meta, qual -> [ qual ] }) reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_filter_summary.collect{ meta, summary -> [ summary ] }) + reports = reports.mix(BAM_VARIANT_CALLING_GERMLINE_ALL.telseq.collect{ meta, summary -> [ summary ] }) CHANNEL_VARIANT_CALLING_CREATE_CSV(vcf_to_annotate, params.outdir) From 1470e0e7e7472e13876cac7476484009beac94bd Mon Sep 17 00:00:00 2001 From: lindenb Date: Fri, 20 Sep 2024 22:35:22 +0200 Subject: [PATCH 2/5] telseq --- docs/output.md | 18 ++++++++++++++++++ docs/usage.md | 1 + .../bam_variant_calling_germline_all/main.nf | 2 +- .../bam_variant_calling_somatic_all/main.nf | 16 ++++++++++++++++ workflows/sarek/main.nf | 3 ++- 5 files changed, 38 insertions(+), 2 deletions(-) diff --git a/docs/output.md b/docs/output.md index 4927c315d8..0dcff56008 100644 --- a/docs/output.md +++ b/docs/output.md @@ -43,6 +43,8 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Sentieon Haplotyper joint germline variant calling](#sentieon-haplotyper-joint-germline-variant-calling) - [Lofreq](#lofreq) - [Strelka](#strelka) + - Telomeres + - [Telseq](#telseq) - [Structural Variants](#structural-variants) - [Manta](#manta) - [TIDDIT](#tiddit) @@ -585,6 +587,22 @@ For further downstream analysis, take a look [here](https://github.com/Illumina/ +### Telomeres + +#### Telseq + +[Telseq](https://github.com/zd1/telseq) is a software that estimates telomere length from whole genome sequencing data. + +
+Output files + +**Output directory: `{outdir}/telseq/`** + +-`.telseq.tsv` + - Telseq output +
+ + ### Structural Variants #### Manta diff --git a/docs/usage.md b/docs/usage.md index 4d2cd4e1ca..8da6967af9 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -585,6 +585,7 @@ This list is by no means exhaustive and it will depend on the specific analysis | [mpileup](https://www.htslib.org/doc/samtools-mpileup.html) | x | x | x | x | x | - | | [Strelka](https://github.com/Illumina/strelka) | x | x | x | x | x | x | | [Manta](https://github.com/Illumina/manta) | x | x | x | x | x | x | +| [Telseq](https://github.com/zd1/telseq) | x | x | x | x | x | x | | [TIDDIT](https://github.com/SciLifeLab/TIDDIT) | x | x | x | x | x | x | | [ASCAT](https://github.com/VanLoo-lab/ascat) | x | x | - | - | - | x | | [CNVKit](https://cnvkit.readthedocs.io/en/stable/) | x | x | - | x | x | x | diff --git a/subworkflows/local/bam_variant_calling_germline_all/main.nf b/subworkflows/local/bam_variant_calling_germline_all/main.nf index 06942fd713..6a5df9e096 100644 --- a/subworkflows/local/bam_variant_calling_germline_all/main.nf +++ b/subworkflows/local/bam_variant_calling_germline_all/main.nf @@ -337,7 +337,7 @@ workflow BAM_VARIANT_CALLING_GERMLINE_ALL { cram, fasta, fasta_fai, - intervals_bed_combined + intervals_bed_combined.map{ bed->[ [:] , bed ] } ) telseq = TELSEQ.out.output diff --git a/subworkflows/local/bam_variant_calling_somatic_all/main.nf b/subworkflows/local/bam_variant_calling_somatic_all/main.nf index cdfabfc3ac..389efc65aa 100644 --- a/subworkflows/local/bam_variant_calling_somatic_all/main.nf +++ b/subworkflows/local/bam_variant_calling_somatic_all/main.nf @@ -13,6 +13,7 @@ include { BAM_VARIANT_CALLING_SOMATIC_MUTECT2 } from '../bam_variant_c include { BAM_VARIANT_CALLING_SOMATIC_STRELKA } from '../bam_variant_calling_somatic_strelka/main' include { BAM_VARIANT_CALLING_SOMATIC_TIDDIT } from '../bam_variant_calling_somatic_tiddit/main' include { MSISENSORPRO_MSISOMATIC } from '../../../modules/nf-core/msisensorpro/msisomatic/main' +include { TELSEQ } from '../../../modules/nf-core/telseq/main' workflow BAM_VARIANT_CALLING_SOMATIC_ALL { take: @@ -47,6 +48,7 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { versions = Channel.empty() //TODO: Temporary until the if's can be removed and printing to terminal is prevented with "when" in the modules.config + telseq = Channel.empty() vcf_freebayes = Channel.empty() vcf_manta = Channel.empty() vcf_strelka = Channel.empty() @@ -209,6 +211,19 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { versions = versions.mix(BAM_VARIANT_CALLING_SOMATIC_MUTECT2.out.versions) } + // TELSEQ + if (tools.split(',').contains('telseq')) { + TELSEQ( + cram, + fasta, + fasta_fai, + intervals_bed_combined.map{ bed->[ [:] , bed ] } + ) + + telseq = TELSEQ.out.output + versions = versions.mix(TELSEQ.out.versions) + } + // TIDDIT if (tools.split(',').contains('tiddit')) { BAM_VARIANT_CALLING_SOMATIC_TIDDIT( @@ -233,6 +248,7 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { emit: out_msisensorpro + telseq vcf_all vcf_freebayes vcf_manta diff --git a/workflows/sarek/main.nf b/workflows/sarek/main.nf index ccb25d3b61..7f82711466 100644 --- a/workflows/sarek/main.nf +++ b/workflows/sarek/main.nf @@ -853,7 +853,8 @@ workflow SAREK { reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_tstv_counts.collect{ meta, counts -> [ counts ] }) reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_tstv_qual.collect{ meta, qual -> [ qual ] }) reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_filter_summary.collect{ meta, summary -> [ summary ] }) - reports = reports.mix(BAM_VARIANT_CALLING_GERMLINE_ALL.telseq.collect{ meta, summary -> [ summary ] }) + reports = reports.mix(BAM_VARIANT_CALLING_GERMLINE_ALL.out.telseq.collect{ meta, summary -> [ summary ] }) + reports = reports.mix(BAM_VARIANT_CALLING_SOMATIC_ALL.out.telseq.collect{ meta, summary -> [ summary ] }) CHANNEL_VARIANT_CALLING_CREATE_CSV(vcf_to_annotate, params.outdir) From 9dea73f1b17184badd3fa468ea78db7d04d09159 Mon Sep 17 00:00:00 2001 From: lindenb Date: Mon, 23 Sep 2024 09:25:50 +0200 Subject: [PATCH 3/5] telseq --- .../bam_variant_calling_germline_all/main.nf | 17 ----------------- .../bam_variant_calling_somatic_all/main.nf | 16 ---------------- workflows/sarek/main.nf | 17 +++++++++++++++-- 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/subworkflows/local/bam_variant_calling_germline_all/main.nf b/subworkflows/local/bam_variant_calling_germline_all/main.nf index 6a5df9e096..deb15527d7 100644 --- a/subworkflows/local/bam_variant_calling_germline_all/main.nf +++ b/subworkflows/local/bam_variant_calling_germline_all/main.nf @@ -15,7 +15,6 @@ include { BAM_VARIANT_CALLING_MPILEUP include { BAM_VARIANT_CALLING_SINGLE_STRELKA } from '../bam_variant_calling_single_strelka/main' include { BAM_VARIANT_CALLING_SINGLE_TIDDIT } from '../bam_variant_calling_single_tiddit/main' include { SENTIEON_DNAMODELAPPLY } from '../../../modules/nf-core/sentieon/dnamodelapply/main' -include { TELSEQ } from '../../../modules/nf-core/telseq/main' include { VCF_VARIANT_FILTERING_GATK } from '../vcf_variant_filtering_gatk/main' include { VCF_VARIANT_FILTERING_GATK as SENTIEON_HAPLOTYPER_VCF_VARIANT_FILTERING_GATK } from '../vcf_variant_filtering_gatk/main' @@ -59,8 +58,6 @@ workflow BAM_VARIANT_CALLING_GERMLINE_ALL { gvcf_sentieon_dnascope = Channel.empty() gvcf_sentieon_haplotyper = Channel.empty() - telseq = Channel.empty() - vcf_deepvariant = Channel.empty() vcf_freebayes = Channel.empty() vcf_haplotypecaller = Channel.empty() @@ -331,19 +328,6 @@ workflow BAM_VARIANT_CALLING_GERMLINE_ALL { versions = versions.mix(BAM_VARIANT_CALLING_SINGLE_STRELKA.out.versions) } - // TELSEQ - if (tools.split(',').contains('telseq')) { - TELSEQ( - cram, - fasta, - fasta_fai, - intervals_bed_combined.map{ bed->[ [:] , bed ] } - ) - - telseq = TELSEQ.out.output - versions = versions.mix(TELSEQ.out.versions) - } - // TIDDIT if (tools.split(',').contains('tiddit')) { BAM_VARIANT_CALLING_SINGLE_TIDDIT( @@ -372,7 +356,6 @@ workflow BAM_VARIANT_CALLING_GERMLINE_ALL { emit: gvcf_sentieon_dnascope gvcf_sentieon_haplotyper - telseq vcf_all vcf_deepvariant vcf_freebayes diff --git a/subworkflows/local/bam_variant_calling_somatic_all/main.nf b/subworkflows/local/bam_variant_calling_somatic_all/main.nf index 389efc65aa..cdfabfc3ac 100644 --- a/subworkflows/local/bam_variant_calling_somatic_all/main.nf +++ b/subworkflows/local/bam_variant_calling_somatic_all/main.nf @@ -13,7 +13,6 @@ include { BAM_VARIANT_CALLING_SOMATIC_MUTECT2 } from '../bam_variant_c include { BAM_VARIANT_CALLING_SOMATIC_STRELKA } from '../bam_variant_calling_somatic_strelka/main' include { BAM_VARIANT_CALLING_SOMATIC_TIDDIT } from '../bam_variant_calling_somatic_tiddit/main' include { MSISENSORPRO_MSISOMATIC } from '../../../modules/nf-core/msisensorpro/msisomatic/main' -include { TELSEQ } from '../../../modules/nf-core/telseq/main' workflow BAM_VARIANT_CALLING_SOMATIC_ALL { take: @@ -48,7 +47,6 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { versions = Channel.empty() //TODO: Temporary until the if's can be removed and printing to terminal is prevented with "when" in the modules.config - telseq = Channel.empty() vcf_freebayes = Channel.empty() vcf_manta = Channel.empty() vcf_strelka = Channel.empty() @@ -211,19 +209,6 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { versions = versions.mix(BAM_VARIANT_CALLING_SOMATIC_MUTECT2.out.versions) } - // TELSEQ - if (tools.split(',').contains('telseq')) { - TELSEQ( - cram, - fasta, - fasta_fai, - intervals_bed_combined.map{ bed->[ [:] , bed ] } - ) - - telseq = TELSEQ.out.output - versions = versions.mix(TELSEQ.out.versions) - } - // TIDDIT if (tools.split(',').contains('tiddit')) { BAM_VARIANT_CALLING_SOMATIC_TIDDIT( @@ -248,7 +233,6 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { emit: out_msisensorpro - telseq vcf_all vcf_freebayes vcf_manta diff --git a/workflows/sarek/main.nf b/workflows/sarek/main.nf index 7f82711466..4d93696330 100644 --- a/workflows/sarek/main.nf +++ b/workflows/sarek/main.nf @@ -65,6 +65,9 @@ include { BAM_BASERECALIBRATOR_SPARK } from '../../subwor include { BAM_APPLYBQSR } from '../../subworkflows/local/bam_applybqsr/main' include { BAM_APPLYBQSR_SPARK } from '../../subworkflows/local/bam_applybqsr_spark/main' +// Telseq +include { TELSEQ } from '../../modules/nf-core/telseq/main' + // Variant calling on a single normal sample include { BAM_VARIANT_CALLING_GERMLINE_ALL } from '../../subworkflows/local/bam_variant_calling_germline_all/main' @@ -680,6 +683,18 @@ workflow SAREK { if (params.tools) { + // TELSEQ + if (params.tools.split(',').contains('telseq')) { + TELSEQ( + cram_variant_calling, + fasta, + fasta_fai, + ( params.wes ? [ [:], intervals_bed_combined_for_variant_calling ] : [ [:] , [] ] ) + ) + reports = reports.mix(TELSEQ.out.output.collect{ meta, summary -> [ summary ] }) + versions = versions.mix(TELSEQ.out.versions) + } + // // Logic to separate germline samples, tumor samples with no matched normal, and combine tumor-normal pairs // @@ -853,8 +868,6 @@ workflow SAREK { reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_tstv_counts.collect{ meta, counts -> [ counts ] }) reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_tstv_qual.collect{ meta, qual -> [ qual ] }) reports = reports.mix(VCF_QC_BCFTOOLS_VCFTOOLS.out.vcftools_filter_summary.collect{ meta, summary -> [ summary ] }) - reports = reports.mix(BAM_VARIANT_CALLING_GERMLINE_ALL.out.telseq.collect{ meta, summary -> [ summary ] }) - reports = reports.mix(BAM_VARIANT_CALLING_SOMATIC_ALL.out.telseq.collect{ meta, summary -> [ summary ] }) CHANNEL_VARIANT_CALLING_CREATE_CSV(vcf_to_annotate, params.outdir) From d2cbf0fc20a322376eb022281966e33596de21eb Mon Sep 17 00:00:00 2001 From: Pierre Lindenbaum Date: Mon, 23 Sep 2024 16:37:33 +0200 Subject: [PATCH 4/5] move TELSEQ up --- CHANGELOG.md | 1 + workflows/sarek/main.nf | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79b1c35461..d0541e2ed1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [1640](https://github.com/nf-core/sarek/pull/1620) - Add `lofreq` as a tumor-only variant caller. - [1642](https://github.com/nf-core/sarek/pull/1642) - Back to dev +- Added Telseq ### Changed diff --git a/workflows/sarek/main.nf b/workflows/sarek/main.nf index 4d93696330..1a1dfe85e3 100644 --- a/workflows/sarek/main.nf +++ b/workflows/sarek/main.nf @@ -654,6 +654,20 @@ workflow SAREK { } } + // TELSEQ for telomere length + if (params.step == 'mapping' && + params.tools && + params.tools.split(',').contains('telseq')) { + TELSEQ( + cram_variant_calling, + fasta, + fasta_fai, + ( params.wes ? [ [:], intervals_bed_combined_for_variant_calling ] : [ [:] , [] ] ) + ) + reports = reports.mix(TELSEQ.out.output.collect{ meta, summary -> [ summary ] }) + versions = versions.mix(TELSEQ.out.versions) + } + if (params.step == 'variant_calling') { input_variant_calling_convert = input_sample.branch{ @@ -683,18 +697,6 @@ workflow SAREK { if (params.tools) { - // TELSEQ - if (params.tools.split(',').contains('telseq')) { - TELSEQ( - cram_variant_calling, - fasta, - fasta_fai, - ( params.wes ? [ [:], intervals_bed_combined_for_variant_calling ] : [ [:] , [] ] ) - ) - reports = reports.mix(TELSEQ.out.output.collect{ meta, summary -> [ summary ] }) - versions = versions.mix(TELSEQ.out.versions) - } - // // Logic to separate germline samples, tumor samples with no matched normal, and combine tumor-normal pairs // From fcec136e91a547388bfa0679fb15d0eb0bf30d11 Mon Sep 17 00:00:00 2001 From: Pierre Lindenbaum Date: Wed, 25 Sep 2024 18:13:10 +0200 Subject: [PATCH 5/5] cont --- workflows/sarek/main.nf | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/workflows/sarek/main.nf b/workflows/sarek/main.nf index 1a1dfe85e3..00ae3b48f5 100644 --- a/workflows/sarek/main.nf +++ b/workflows/sarek/main.nf @@ -654,19 +654,6 @@ workflow SAREK { } } - // TELSEQ for telomere length - if (params.step == 'mapping' && - params.tools && - params.tools.split(',').contains('telseq')) { - TELSEQ( - cram_variant_calling, - fasta, - fasta_fai, - ( params.wes ? [ [:], intervals_bed_combined_for_variant_calling ] : [ [:] , [] ] ) - ) - reports = reports.mix(TELSEQ.out.output.collect{ meta, summary -> [ summary ] }) - versions = versions.mix(TELSEQ.out.versions) - } if (params.step == 'variant_calling') { @@ -683,7 +670,6 @@ workflow SAREK { BAM_TO_CRAM.out.cram.join(BAM_TO_CRAM.out.crai, failOnDuplicate: true, failOnMismatch: true), input_variant_calling_convert.cram ) - } if (params.step == 'annotate') cram_variant_calling = Channel.empty() @@ -845,6 +831,18 @@ workflow SAREK { params.wes ) + // TELSEQ for telomere length + if (params.tools.split(',').contains('telseq')) { + TELSEQ( + cram_variant_calling, + fasta, + fasta_fai, + ( params.wes ? [ [:], intervals_bed_combined_for_variant_calling ] : [ [:] , [] ] ) + ) + reports = reports.mix(TELSEQ.out.output.collect{ meta, summary -> [ summary ] }) + versions = versions.mix(TELSEQ.out.versions) + } + // POST VARIANTCALLING POST_VARIANTCALLING(BAM_VARIANT_CALLING_GERMLINE_ALL.out.vcf_all, params.concatenate_vcfs)