From e08270f8b7db269c38f4f7bb91377f581d4ffd73 Mon Sep 17 00:00:00 2001 From: buehlere Date: Tue, 6 Aug 2024 16:39:42 -0400 Subject: [PATCH 1/4] init module --- modules/msk/igv/snaphshot/environment.yml | 9 ++ modules/msk/igv/snaphshot/main.nf | 57 +++++++++++++ modules/msk/igv/snaphshot/meta.yml | 57 +++++++++++++ modules/msk/igv/snaphshot/tests/main.nf.test | 63 ++++++++++++++ .../msk/igv/snaphshot/tests/main.nf.test.snap | 82 +++++++++++++++++++ modules/msk/igv/snaphshot/tests/tags.yml | 2 + tests/config/test_data.config | 3 + 7 files changed, 273 insertions(+) create mode 100644 modules/msk/igv/snaphshot/environment.yml create mode 100644 modules/msk/igv/snaphshot/main.nf create mode 100644 modules/msk/igv/snaphshot/meta.yml create mode 100644 modules/msk/igv/snaphshot/tests/main.nf.test create mode 100644 modules/msk/igv/snaphshot/tests/main.nf.test.snap create mode 100644 modules/msk/igv/snaphshot/tests/tags.yml diff --git a/modules/msk/igv/snaphshot/environment.yml b/modules/msk/igv/snaphshot/environment.yml new file mode 100644 index 00000000..8d6df67e --- /dev/null +++ b/modules/msk/igv/snaphshot/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +name: "igv_snaphshot" +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - "bioconda::igv=2.17.4" diff --git a/modules/msk/igv/snaphshot/main.nf b/modules/msk/igv/snaphshot/main.nf new file mode 100644 index 00000000..d24bb2ce --- /dev/null +++ b/modules/msk/igv/snaphshot/main.nf @@ -0,0 +1,57 @@ +process IGV_SNAPHSHOT { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'ghcr.io/msk-access/igv_snapshot:0.0.1': + 'ghcr.io/msk-access/igv_snapshot:0.0.1' }" + + input: + tuple val(meta), path(bam), path(bai), path(variant_file) + + output: + + tuple val(meta), path("**igv_output/*"), emit: igv_screenshots + 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 bed_name = prefix ? "${prefix}.bed": "variant.bed" + def out = prefix ? "${prefix}_igv_output": "igv_output" + def genome = task.ext.genome ? "-g ${task.ext.genome}" : "" + """ + igv run_screenshot \\ + --input-files $bam \\ + --annotated-variant-file $variant_file \\ + -t $prefix \\ + -o $out \\ + -r $bed_name \\ + $genome + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + igv: \$(igv --version) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: "" + def prefix = task.ext.prefix ?: "${meta.id}" + def bed_name = prefix ? "${prefix}.bed": "variant.bed" + def out = prefix ? "${prefix}_igv_output": "igv_output" + """ + mkdir $out + touch $out/test.png + touch $out/test.bat + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + igv: \$(igv --version) + END_VERSIONS + """ +} diff --git a/modules/msk/igv/snaphshot/meta.yml b/modules/msk/igv/snaphshot/meta.yml new file mode 100644 index 00000000..016298a6 --- /dev/null +++ b/modules/msk/igv/snaphshot/meta.yml @@ -0,0 +1,57 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "igv_snapshot" +description: a module to run IGV screenshot +keywords: + - sort + - example + - genomics +tools: + - "igv": + description: "Integrative Genomics Viewer. Fast, efficient, scalable visualization tool for genomics data and annotations." + homepage: "https://igv.org/" + documentation: "https://igv.org/doc/desktop/#QuickStart/" + tool_dev_url: "https://github.com/igvteam/igv" + licence: ['MIT'] + +input: + # Only when we have meta + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - bam: + type: file + description: BAM file with index. + pattern: "*.{bam,cram,sam}" + - bai: + type: file + description: BAM file index + pattern: "*.{bai}" + - variant_file: + type: file + description: Variant file of input BAM. + pattern: "*.{maf,vcf}" + +output: + #Only when we have meta + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - igv_screenshots: + type: directory + description: directory containing IGV screenshot for provided sample, and the bat script used to generate the screenshots. + pattern: "**igv_output/*" + +authors: + - "@buehlere" +maintainers: + - "@buehlere" diff --git a/modules/msk/igv/snaphshot/tests/main.nf.test b/modules/msk/igv/snaphshot/tests/main.nf.test new file mode 100644 index 00000000..a6707430 --- /dev/null +++ b/modules/msk/igv/snaphshot/tests/main.nf.test @@ -0,0 +1,63 @@ +nextflow_process { + + name "Test Process IGV_SNAPHSHOT" + script "../main.nf" + process "IGV_SNAPHSHOT" + + tag "modules" + tag "modules_nfcore" + tag "igv" + tag "igv/snaphshot" + + test("chr22 - bam, vcf") { + + when { + process { + """ + input[0] = [ + [ id:'C-9M47TU-L001-d'], // meta map + file(params.test_data_mskcc['chr22']['chr22bam'], checkIfExists: true), + file(params.test_data_mskcc['chr22']['chr22bam_bai'], checkIfExists: true), + file(params.test_data_mskcc['chr22']['chr22vcf'], checkIfExists: true) + + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'C-9M47TU-L001-d'], // meta map + file(params.test_data_mskcc['chr22']['chr22bam'], checkIfExists: true), + file(params.test_data_mskcc['chr22']['chr22bam_bai'], checkIfExists: true), + file(params.test_data_mskcc['chr22']['chr22vcf'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/msk/igv/snaphshot/tests/main.nf.test.snap b/modules/msk/igv/snaphshot/tests/main.nf.test.snap new file mode 100644 index 00000000..ceae21ba --- /dev/null +++ b/modules/msk/igv/snaphshot/tests/main.nf.test.snap @@ -0,0 +1,82 @@ +{ + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "C-9M47TU-L001-d" + }, + [ + "test.bat:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + ], + "bam": [ + [ + { + "id": "C-9M47TU-L001-d" + }, + [ + "test.bat:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + ] + } + ], + "timestamp": "2024-08-06T16:13:42.379642" + }, + "sarscov2 - bam": { + "content": [ + { + "0": [ + [ + { + "id": "C-9M47TU-L001-d" + }, + [ + "22_22127176_22127176.png:md5,fd9de31a371db4523f8a0982df749a09", + "22_41565827_41565827.png:md5,1904ecf0b28baeee6e14e78543052a17", + "22_41566406_41566406.png:md5,c77c48716ed2272f45b49c7852a74705", + "22_41566413_41566413.png:md5,bfaf4189292aa0495e51c26ea33f64f7", + "22_41566595_41566595.png:md5,2fca6b6e75fd4c533fb512d0cd11941b", + "22_41566657_41566657.png:md5,fd49c1c6439206da9c15595921392d29", + "IGV_snapshots.bat:md5,d2eaf7a013f62e5fe07f8a0ddf459ace" + ] + ] + ], + "1": [ + "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + ], + "bam": [ + [ + { + "id": "C-9M47TU-L001-d" + }, + [ + "22_22127176_22127176.png:md5,fd9de31a371db4523f8a0982df749a09", + "22_41565827_41565827.png:md5,1904ecf0b28baeee6e14e78543052a17", + "22_41566406_41566406.png:md5,c77c48716ed2272f45b49c7852a74705", + "22_41566413_41566413.png:md5,bfaf4189292aa0495e51c26ea33f64f7", + "22_41566595_41566595.png:md5,2fca6b6e75fd4c533fb512d0cd11941b", + "22_41566657_41566657.png:md5,fd49c1c6439206da9c15595921392d29", + "IGV_snapshots.bat:md5,d2eaf7a013f62e5fe07f8a0ddf459ace" + ] + ] + ], + "versions": [ + "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + ] + } + ], + "timestamp": "2024-08-06T16:09:30.976474" + } +} \ No newline at end of file diff --git a/modules/msk/igv/snaphshot/tests/tags.yml b/modules/msk/igv/snaphshot/tests/tags.yml new file mode 100644 index 00000000..0e90cb9f --- /dev/null +++ b/modules/msk/igv/snaphshot/tests/tags.yml @@ -0,0 +1,2 @@ +igv/snaphshot: + - "modules/msk/igv/snaphshot/**" diff --git a/tests/config/test_data.config b/tests/config/test_data.config index 1dd200c0..547696d0 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -725,6 +725,9 @@ params { dbsnp_138_b37_chr17_vcf_gz_tbi = "${params.test_data_base_msk}/hg37/genomic_reference/GRCH37/vcf/dbsnp_138.b37.chr17.vcf.gz.tbi" } 'chr22' { + chr22bam = "${params.test_data_base_msk}/chr22/chr22/chr22.bam" + chr22bam_bai = "${params.test_data_base_msk}/chr22/chr22/chr22.bam.bai" + chr22vcf = "${params.test_data_base_msk}/chr22/chr22/chr22.vcf" chr22maf = "${params.test_data_base_msk}/chr22/chr22/chr22.maf" chr22mafstandard = "${params.test_data_base_msk}/chr22/chr22/chr22_standard.maf" } From e91793901692e31d28bfca70d70192609b7cddc9 Mon Sep 17 00:00:00 2001 From: buehlere Date: Tue, 6 Aug 2024 16:55:25 -0400 Subject: [PATCH 2/4] name corrections --- modules/msk/igv/snaphshot/tests/tags.yml | 2 -- modules/msk/igv/{snaphshot => snapshot}/environment.yml | 2 +- modules/msk/igv/{snaphshot => snapshot}/main.nf | 2 +- modules/msk/igv/{snaphshot => snapshot}/meta.yml | 9 +++++++-- .../msk/igv/{snaphshot => snapshot}/tests/main.nf.test | 7 ++++--- .../igv/{snaphshot => snapshot}/tests/main.nf.test.snap | 0 modules/msk/igv/snapshot/tests/tags.yml | 2 ++ 7 files changed, 15 insertions(+), 9 deletions(-) delete mode 100644 modules/msk/igv/snaphshot/tests/tags.yml rename modules/msk/igv/{snaphshot => snapshot}/environment.yml (90%) rename modules/msk/igv/{snaphshot => snapshot}/main.nf (98%) rename modules/msk/igv/{snaphshot => snapshot}/meta.yml (82%) rename modules/msk/igv/{snaphshot => snapshot}/tests/main.nf.test (93%) rename modules/msk/igv/{snaphshot => snapshot}/tests/main.nf.test.snap (100%) create mode 100644 modules/msk/igv/snapshot/tests/tags.yml diff --git a/modules/msk/igv/snaphshot/tests/tags.yml b/modules/msk/igv/snaphshot/tests/tags.yml deleted file mode 100644 index 0e90cb9f..00000000 --- a/modules/msk/igv/snaphshot/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -igv/snaphshot: - - "modules/msk/igv/snaphshot/**" diff --git a/modules/msk/igv/snaphshot/environment.yml b/modules/msk/igv/snapshot/environment.yml similarity index 90% rename from modules/msk/igv/snaphshot/environment.yml rename to modules/msk/igv/snapshot/environment.yml index 8d6df67e..af717a89 100644 --- a/modules/msk/igv/snaphshot/environment.yml +++ b/modules/msk/igv/snapshot/environment.yml @@ -1,6 +1,6 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "igv_snaphshot" +name: "igv_snapshot" channels: - conda-forge - bioconda diff --git a/modules/msk/igv/snaphshot/main.nf b/modules/msk/igv/snapshot/main.nf similarity index 98% rename from modules/msk/igv/snaphshot/main.nf rename to modules/msk/igv/snapshot/main.nf index d24bb2ce..4cc8ef43 100644 --- a/modules/msk/igv/snaphshot/main.nf +++ b/modules/msk/igv/snapshot/main.nf @@ -1,4 +1,4 @@ -process IGV_SNAPHSHOT { +process IGV_SNAPSHOT { tag "$meta.id" label 'process_single' diff --git a/modules/msk/igv/snaphshot/meta.yml b/modules/msk/igv/snapshot/meta.yml similarity index 82% rename from modules/msk/igv/snaphshot/meta.yml rename to modules/msk/igv/snapshot/meta.yml index 016298a6..84517a07 100644 --- a/modules/msk/igv/snaphshot/meta.yml +++ b/modules/msk/igv/snapshot/meta.yml @@ -1,6 +1,6 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json -name: "igv_snapshot" +name: "IGV_SNAPSHOT" description: a module to run IGV screenshot keywords: - sort @@ -12,7 +12,12 @@ tools: homepage: "https://igv.org/" documentation: "https://igv.org/doc/desktop/#QuickStart/" tool_dev_url: "https://github.com/igvteam/igv" - licence: ['MIT'] + licence: ["MIT"] + - "igv snapshot": + description: "A python package to generate and execute IGV screenshot script." + documentation: "https://github.com/msk-access/igv_snapshot/blob/main/README.md" + tool_dev_url: "https://github.com/msk-access/igv_snapshot" + licence: ["MIT"] input: # Only when we have meta diff --git a/modules/msk/igv/snaphshot/tests/main.nf.test b/modules/msk/igv/snapshot/tests/main.nf.test similarity index 93% rename from modules/msk/igv/snaphshot/tests/main.nf.test rename to modules/msk/igv/snapshot/tests/main.nf.test index a6707430..83883380 100644 --- a/modules/msk/igv/snaphshot/tests/main.nf.test +++ b/modules/msk/igv/snapshot/tests/main.nf.test @@ -1,13 +1,14 @@ nextflow_process { - name "Test Process IGV_SNAPHSHOT" + name "Test Process IGV_SNAPSHOT" script "../main.nf" - process "IGV_SNAPHSHOT" + process "IGV_SNAPSHOT" tag "modules" tag "modules_nfcore" + tag "modules_msk" tag "igv" - tag "igv/snaphshot" + tag "igv_snapshot" test("chr22 - bam, vcf") { diff --git a/modules/msk/igv/snaphshot/tests/main.nf.test.snap b/modules/msk/igv/snapshot/tests/main.nf.test.snap similarity index 100% rename from modules/msk/igv/snaphshot/tests/main.nf.test.snap rename to modules/msk/igv/snapshot/tests/main.nf.test.snap diff --git a/modules/msk/igv/snapshot/tests/tags.yml b/modules/msk/igv/snapshot/tests/tags.yml new file mode 100644 index 00000000..a2856d2e --- /dev/null +++ b/modules/msk/igv/snapshot/tests/tags.yml @@ -0,0 +1,2 @@ +igv/snapshot: + - "modules/msk/igv/snapshot/**" From 07387e8bb38d535e0196a746a0c7fcdc474acbeb Mon Sep 17 00:00:00 2001 From: buehlere Date: Tue, 6 Aug 2024 17:12:33 -0400 Subject: [PATCH 3/4] fixing snapshot and names --- modules/msk/igv/snapshot/meta.yml | 2 +- modules/msk/igv/snapshot/tests/main.nf.test | 4 ++-- .../msk/igv/snapshot/tests/main.nf.test.snap | 20 +++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/modules/msk/igv/snapshot/meta.yml b/modules/msk/igv/snapshot/meta.yml index 84517a07..81d3ea90 100644 --- a/modules/msk/igv/snapshot/meta.yml +++ b/modules/msk/igv/snapshot/meta.yml @@ -1,6 +1,6 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json -name: "IGV_SNAPSHOT" +name: "igv_snapshot" description: a module to run IGV screenshot keywords: - sort diff --git a/modules/msk/igv/snapshot/tests/main.nf.test b/modules/msk/igv/snapshot/tests/main.nf.test index 83883380..d87a2cd7 100644 --- a/modules/msk/igv/snapshot/tests/main.nf.test +++ b/modules/msk/igv/snapshot/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "modules_nfcore" tag "modules_msk" tag "igv" - tag "igv_snapshot" + tag "igv/snapshot" test("chr22 - bam, vcf") { @@ -35,7 +35,7 @@ nextflow_process { } - test("sarscov2 - bam - stub") { + test("chr22 - bam, vcf - stub") { options "-stub" diff --git a/modules/msk/igv/snapshot/tests/main.nf.test.snap b/modules/msk/igv/snapshot/tests/main.nf.test.snap index ceae21ba..cac17abd 100644 --- a/modules/msk/igv/snapshot/tests/main.nf.test.snap +++ b/modules/msk/igv/snapshot/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "sarscov2 - bam - stub": { + "chr22 - bam, vcf - stub": { "content": [ { "0": [ @@ -14,9 +14,9 @@ ] ], "1": [ - "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + "versions.yml:md5,870a90d9f64f5a5f5ec4cd474d69027c" ], - "bam": [ + "igv_screenshots": [ [ { "id": "C-9M47TU-L001-d" @@ -28,13 +28,13 @@ ] ], "versions": [ - "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + "versions.yml:md5,870a90d9f64f5a5f5ec4cd474d69027c" ] } ], - "timestamp": "2024-08-06T16:13:42.379642" + "timestamp": "2024-08-06T17:08:44.477177" }, - "sarscov2 - bam": { + "chr22 - bam, vcf": { "content": [ { "0": [ @@ -54,9 +54,9 @@ ] ], "1": [ - "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + "versions.yml:md5,870a90d9f64f5a5f5ec4cd474d69027c" ], - "bam": [ + "igv_screenshots": [ [ { "id": "C-9M47TU-L001-d" @@ -73,10 +73,10 @@ ] ], "versions": [ - "versions.yml:md5,d28e665acecc254b456b2d904fea3021" + "versions.yml:md5,870a90d9f64f5a5f5ec4cd474d69027c" ] } ], - "timestamp": "2024-08-06T16:09:30.976474" + "timestamp": "2024-08-06T17:08:31.32318" } } \ No newline at end of file From 467ed1a4312caef2aa1f3e106dd88c04d6762977 Mon Sep 17 00:00:00 2001 From: buehlere Date: Wed, 7 Aug 2024 10:31:36 -0400 Subject: [PATCH 4/4] Update test.yml --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ba1c5f68..385a527b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -416,6 +416,8 @@ jobs: tags: salmon/quant - profile: "conda" tags: rediscoverte + - profile: "conda" + tags: igv/snapshot env: NXF_ANSI_LOG: false