Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sylph/profile module #7118

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
daf9e8d
Add sylph/profile module and remove unnecessary pattern from sylph/sk…
sofstam Nov 28, 2024
dfdd3fc
Remove description
sofstam Nov 28, 2024
a2f1344
Update snap
sofstam Nov 28, 2024
8544ee9
Try again with linting
sofstam Nov 28, 2024
1e576e0
Merge branch 'master' into sylph_profile
sofstam Nov 28, 2024
fa0e2c1
Update snap
sofstam Nov 28, 2024
e45886d
Fix linting for meta.yaml
sofstam Nov 28, 2024
2451fcd
Update tests
sofstam Nov 28, 2024
c06f4fb
Add contains in nf-test
sofstam Dec 5, 2024
c95a100
Add contains
sofstam Dec 5, 2024
9cda43a
Merge branch 'master' into sylph_profile
mashehu Dec 5, 2024
85188bb
Merge branch 'master' into sylph_profile
sofstam Jan 8, 2025
6509880
Update modules/nf-core/sylph/profile/tests/main.nf.test
sofstam Jan 8, 2025
ecc9e18
Update modules/nf-core/sylph/profile/main.nf
sofstam Jan 8, 2025
0d5cd9b
Update modules/nf-core/sylph/profile/main.nf
sofstam Jan 8, 2025
2e1e013
Update modules/nf-core/sylph/profile/main.nf
sofstam Jan 8, 2025
114c010
Update description
sofstam Jan 8, 2025
b752de4
Remove single_end from the output
sofstam Jan 8, 2025
9a86542
Merge branch 'master' into sylph_profile
sofstam Jan 8, 2025
174b6d5
Update meta.yml file to include info if fastq/fasta files are provided
sofstam Jan 8, 2025
e5da167
Add tests
sofstam Jan 16, 2025
1cbbc12
Merge branch 'master' into sylph_profile
sofstam Jan 16, 2025
f7bc9cd
Fix test
sofstam Jan 16, 2025
bb4bb66
Fix tests
sofstam Jan 16, 2025
041ef71
Merge branch 'master' into sylph_profile
sofstam Jan 16, 2025
4d96cf3
Update modules/nf-core/sylph/profile/tests/main.nf.test
sofstam Jan 17, 2025
8139064
Update modules/nf-core/sylph/profile/main.nf
sofstam Jan 17, 2025
e924d82
Merge branch 'master' into sylph_profile
sofstam Jan 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions modules/nf-core/sylph/profile/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json
channels:
- conda-forge
- bioconda
dependencies:
- "bioconda::sylph=0.7.0"
49 changes: 49 additions & 0 deletions modules/nf-core/sylph/profile/main.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
process SYLPH_PROFILE {
tag "$meta.id"
label 'process_high'

conda "${moduleDir}/environment.yml"
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/sylph:0.7.0--h919a2d8_0' :
'biocontainers/sylph:0.7.0--h919a2d8_0' }"

input:
tuple val(meta), path(reads)
path(pre_sketched_files)

output:
tuple val(meta), path('*.tsv'), emit: profile_out
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}"
"""
sylph profile \\
$args \\
$reads \\
$pre_sketched_files\\
-o ${prefix}.tsv

cat <<-END_VERSIONS > versions.yml
"${task.process}":
sylph: \$(sylph -V|awk '{print \$2}')
END_VERSIONS

sofstam marked this conversation as resolved.
Show resolved Hide resolved
"""

stub:
def prefix = task.ext.prefix ?: "${meta.id}"
"""
touch ${prefix}.tsv

cat <<-END_VERSIONS > versions.yml
"${task.process}":
sylph: \$(sylph -V|awk '{print \$2}')
END_VERSIONS
"""

}
51 changes: 51 additions & 0 deletions modules/nf-core/sylph/profile/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: "sylph_profile"
description: Sylph profile command for taxonoming profiling
keywords:
- profile
- metagenomics
- sylph
- classification
tools:
- sylph:
description: Sylph quickly enables querying of genomes against even low-coverage
shotgun metagenomes to find nearest neighbour ANI.
homepage: https://github.com/bluenote-1577/sylph
documentation: https://github.com/bluenote-1577/sylph
tool_dev_url: https://github.com/bluenote-1577/sylph
doi: 10.1038/s41587-024-02412-y
licence: ["MIT"]
identifier: biotools:sylph
input:
- - meta:
type: map
description: |
Groovy Map containing sample information
e.g. `[ id:'test', single_end:false ]`
- reads:
type: file
description: |
List of input FastQ/FASTA files of size 1 and 2 for single-end and paired-end data,
respectively. They are automatically sketched to .sylsp/.syldb
- - pre_sketched_files:
mahesh-panchal marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest making this variable name more general given it could be fasta. Something like database ( since the manual uses the same term too ).

type: file
description: Pre-sketched *.syldb/*.sylsp files. Raw single-end fastq/fasta are allowed and will be automatically sketched to .sylsp/.syldb.
pattern: "*.{syldb,sylsp}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update this pattern too.

output:
- profile_out:
- meta:
type: map
description: Groovy Map containing sample information
- "*.tsv":
type: map
description: Output file of species-level taxonomic profiling with abundances and ANIs.
pattern: "*tsv"
- versions:
- versions.yml:
type: file
description: File containing software versions
pattern: "versions.yml"
authors:
- "@jiahang1234"
- "@sofstam"
maintainers:
- "@sofstam"
79 changes: 79 additions & 0 deletions modules/nf-core/sylph/profile/tests/main.nf.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
nextflow_process {

script "../main.nf"
process "SYLPH_PROFILE"
tag "modules"
tag "modules_nfcore"
tag "sylph"
tag "sylph/profile"

test("sarscov2 illumina single-end [fastq_gz]") {
when {
process {
"""
input[0] = [ [ id:'test', single_end:true ], // meta map
[ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you swap these to the more recent file paths please

]
input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)
"""
}
}

then {
def output_content = process.out.profile_out.get(0)

assertAll(
{ assert process.success },
{ assert snapshot(process.out.versions).match("versions_single") },
{ assert output_content.size() > 1 }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there not a specific file or contents to test for here?

)
}
}

test("sarscov2 illumina paired-end [fastq_gz]") {
when {
process {
"""
input[0] = [ [ id:'test', single_end:false ], // meta map
[ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true),
file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ]
]
input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)
"""
}
}

then {
def output_content = process.out.profile_out.get(0)

assertAll(
{ assert process.success },
{ assert snapshot(process.out.versions).match("versions_paired") },
sofstam marked this conversation as resolved.
Show resolved Hide resolved
{ assert output_content.size() > 1 }
)
}
}

test("sarscov2 illumina paired-end [fastq_gz]-stub") {
options "-stub"

when {
process {
"""
input[0] = [ [ id:'test', single_end:false ], // meta map
[ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true),
file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ]
]
input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)
"""
}
}

then {
assertAll(
{ assert process.success },
{ assert snapshot(process.out).match("stub_output") }
)
}
}
}
61 changes: 61 additions & 0 deletions modules/nf-core/sylph/profile/tests/main.nf.test.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
"versions_paired": {
"content": [
[
"versions.yml:md5,7b5a545483277cc0ff9189f8891e737f"
]
],
"meta": {
"nf-test": "0.9.2",
"nextflow": "24.10.3"
},
"timestamp": "2025-01-16T16:20:42.741197"
},
"versions_single": {
"content": [
[
"versions.yml:md5,7b5a545483277cc0ff9189f8891e737f"
]
],
"meta": {
"nf-test": "0.9.2",
"nextflow": "24.10.3"
},
"timestamp": "2025-01-16T16:20:36.300277"
},
"stub_output": {
"content": [
{
"0": [
[
{
"id": "test",
"single_end": false
},
"test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"1": [
"versions.yml:md5,7b5a545483277cc0ff9189f8891e737f"
],
"profile_out": [
[
{
"id": "test",
"single_end": false
},
"test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e"
]
],
"versions": [
"versions.yml:md5,7b5a545483277cc0ff9189f8891e737f"
]
}
],
"meta": {
"nf-test": "0.9.2",
"nextflow": "24.10.3"
},
"timestamp": "2025-01-16T16:20:49.124329"
}
}
1 change: 0 additions & 1 deletion modules/nf-core/sylph/sketch/meta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ output:
description: |
Groovy Map containing sample information
e.g. [ id:'test', single_end:false ]
sofstam marked this conversation as resolved.
Show resolved Hide resolved
pattern: "my_sketches/*.sylsp"
- my_sketches/*.sylsp:
type: map
description: |
Expand Down
Loading