Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
version: 1.2
workflows:
- name: main
subclass: Galaxy
publish: true
primaryDescriptorPath: /viral-detection-from-bulk-metagenomes.ga
testParameterFiles:
- /viral-detection-from-bulk-metagenomes-test.yml
authors:
- name: Mina Hojat Ansari
orcid: 0000-0002-3602-7884
- name: "Niklas Stahl"
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Changelog

## [1.0] - 2026-26-04

- First release
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Viral detection from bulk metagenomes

## Overview

This workflow identifies viral contigs from metagenomic assemblies using **geNomad** and performs downstream analyses including **taxonomy**, **functional annotation**, **binning**, **host prediction**, and **coverage estimation**.

---

## Inputs

- **Assembled contigs** (FASTA, collection)
- **Trimmed paired-end reads** (list:paired)

### Requirements

- Reads must be quality-controlled (trimmed, adapters removed)
- Host contamination should be removed

---

## Workflow steps

### 1. Viral contig prediction
Viral sequences are identified from assembled contigs using **geNomad**.

### 2. Provirus detection and refinement
**CheckV** is used to identify proviruses. Extracted proviruses are re-analysed with **geNomad**.

### 3. Merging viral predictions
Viral contigs from both geNomad runs are combined.

### 4. Clustering and dereplication
Redundant sequences are removed using **MMseqs2** clustering.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Any specific reason not to use dRep?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

1- Bowtie2 is currently run twice as: once against the broader viral-contig set used for vRhyme because of binning purpose, and once against the filtered set used for CoverM with a stricter CheckV-filtered set, including only medium-quality, high-quality, and complete viral contigs. I will check whether the workflow can be simplified by mapping once against the broader dereplicated viral-contig set and then filtering the resulting coverage/abundance table to the final CheckV quality set, instead of running Bowtie2 twice. If this works cleanly in Galaxy, I will update the workflow accordingly.
2- We used MMseqs2 here because at this stage we are still working with viral candidate contigs before vRhyme binning, not final vMAGs. dRep can technically compare and dereplicate genome FASTA files, so it could be more suitable if we want to dereplicate the final vMAGs later. But for this contig-level step, MMseqs2 seemed more appropriate.


### 5. Quality assessment and filtering
**CheckV** is used to assess sequence quality. Only sequences classified as:

- Complete
- High-quality
- Medium-quality

are retained for downstream analysis.

### 6. Host prediction
Viral contigs are analysed using **iPHoP**.

### 7. Functional annotation
Viral genomes are annotated using **Pharokka**.

### 8. Coverage estimation
Reads are mapped using **Bowtie2** and coverage is calculated with **CoverM**.

### 9. Viral genome binning (vMAGs)
Viral contigs and coverage profiles are used by **vRhyme** to recover viral genomes.

---

## Outputs

- Viral contigs (geNomad)
- Taxonomy annotations
- Gene annotations
- Nonredundant viral sequences
- CheckV quality reports
- Filtered viral contigs
- Host predictions (iPHoP)
- Functional annotations (Pharokka)
- Coverage table (CoverM)
- vMAG bins (vRhyme)

---

## Notes

- Only **medium- and high-quality sequences** are used for biological interpretation

---

## License

MIT License
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
- doc: Test for viral-detection-from-bulk-metagenomes
job:
Assembled contigs:
class: Collection
collection_type: list
elements:
- class: File
identifier: SRR24759598
location: https://zenodo.org/records/19831629/files/SRR24759598.fasta
- class: File
identifier: SRR24759616
location: https://zenodo.org/records/19831629/files/SRR24759616.fasta
Trimmed reads:
class: Collection
collection_type: list:paired
elements:
- class: Collection
type: paired
identifier: SRR24759598
elements:
- class: File
identifier: forward
location: https://zenodo.org/records/19831629/files/SRR24759598_forward.fastqsanger.gz
- class: File
identifier: reverse
location: https://zenodo.org/records/19831629/files/SRR24759598_reverse.fastqsanger.gz
- class: Collection
type: paired
identifier: SRR24759616
elements:
- class: File
identifier: forward
location: https://zenodo.org/records/19831629/files/SRR24759616_forward.fastqsanger.gz
- class: File
identifier: reverse
location: https://zenodo.org/records/19831629/files/SRR24759616_reverse.fastqsanger.gz
outputs:
output cluster:
asserts:
- that: has_n_lines
n: 315
delta: 10
quality summary:
asserts:
- that: has_n_lines
n: 300
delta: 10
complete genomes:
asserts:
- that: has_n_lines
n: 2
delta: 1
- that: has_text
text: "contig_id"
coverage:
asserts:
- that: has_n_lines
n: 6
delta: 1
- that: has_text
text: "Contig"
output seqs:
asserts:
- that: has_size
size: 776500
delta: 50000
best bins membership:
asserts:
- that: has_n_lines
n: 0
best bins summery:
asserts:
- that: has_n_lines
n: 0
coverage file:
asserts:
- that: has_n_lines
n: 83
delta: 10
- that: has_text
text: "scaffold"
pharokka gbk:
asserts:
- that: has_size
size: 557600
delta: 50000
pharokka gff:
asserts:
- that: has_size
size: 342800
delta: 50000
genomad fasta:
element_tests:
SRR24759616:
asserts:
- that: has_size
value: 434300
delta: 50000
bam for vRhyme:
element_tests:
SRR24759616:
asserts:
- that: has_size
value: 65500
delta: 5000
bam for CoverM:
element_tests:
SRR24759616:
asserts:
- that: has_size
value: 24900
delta: 5000
Loading
Loading