Skip to content
Merged
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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
| --RV_primer | --primer_rev | |
| --classifier | --qiime_classifier | |

- [#1028](https://github.com/nf-core/ampliseq/pull/1028) - Multi-region sample sheet via `--multiregion` had its header changed from `FW_primer` and `RV_primer` to `primer_fwd` and `primer_rev`, respectively. (by @d4straub)

### `Fixed`

- [#1019](https://github.com/nf-core/ampliseq/pull/1019) - Improve channel assignment & improve some version reporting (by @d4straub)
Expand All @@ -41,6 +43,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### `Removed`

- [#1028](https://github.com/nf-core/ampliseq/pull/1028) - Removed support for the legacy sample sheet to simplify parsing (by @d4straub)

## nf-core/ampliseq version 2.18.0 - 2026-06-18

### `Added`
Expand Down
File renamed without changes.
4 changes: 0 additions & 4 deletions assets/samplesheet_legacy.tsv

This file was deleted.

67 changes: 3 additions & 64 deletions assets/schema_input.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,12 @@
"items": {
"type": "object",
"properties": {
"sampleID": {
"sample": {
"type": "string",
"pattern": "^[a-zA-Z][a-zA-Z0-9_]+$",
"errorMessage": "Unique sample ID must be provided: Must start with a letter, and can only contain letters, numbers or underscores; Regex: '^[a-zA-Z][a-zA-Z0-9_]+$'",
"meta": ["sample"]
},
"forwardReads": {
"type": "string",
"format": "file-path",
"exists": true,
"pattern": "^([\\S\\s]*\\/)?[^\\s\\/]+\\.f(ast)?q\\.gz$",
"errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'"
},
"reverseReads": {
"type": "string",
"format": "file-path",
"exists": true,
"pattern": "^([\\S\\s]*\\/)?[^\\s\\/]+\\.f(ast)?q\\.gz$",
"errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'"
},
"sample": {
"type": "string",
"pattern": "^[a-zA-Z][a-zA-Z0-9_]+$",
"errorMessage": "Unique sample ID must be provided: Must start with a letter, and can only contain letters, numbers or underscores; Regex: '^[a-zA-Z][a-zA-Z0-9_]+$'"
},
"fastq_1": {
"type": "string",
"format": "file-path",
Expand Down Expand Up @@ -65,49 +46,7 @@
"meta": ["quant_reading"]
}
},
"oneOf": [
{
"required": ["sampleID", "forwardReads"],
"not": {
"anyOf": [
{
"required": ["sample"]
},
{
"required": ["fastq_1"]
},
{
"required": ["fastq_2"]
}
]
},
"errorMessage": "When using legacy format (sampleID/forwardReads), do not use standardized fields (sample/fastq_1/fastq_2)"
},
{
"required": ["sample", "fastq_1"],
"not": {
"anyOf": [
{
"required": ["sampleID"]
},
{
"required": ["forwardReads"]
},
{
"required": ["reverseReads"]
}
]
},
"errorMessage": "When using standardized format (sample/fastq_1), do not use legacy fields (sampleID/forwardReads/reverseReads)"
}
]
"required": ["sample", "fastq_1"]
},
"allOf": [
{
"uniqueEntries": ["sample"]
},
{
"uniqueEntries": ["sampleID"]
}
]
"uniqueEntries": ["sample"]
}
10 changes: 5 additions & 5 deletions assets/schema_multiregion.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@
"errorMessage": "Length of region must be an integer",
"meta": ["region_length"]
},
"FW_primer": {
"primer_fwd": {
"type": "string",
"pattern": "^[ATUGCYRSWKMBDHVN]*$",
"errorMessage": "FW_primer must be provided and may contain only uppercase nucleotide IUPAC code [ATUGCYRSWKMBDHVN]",
"errorMessage": "primer_fwd must be provided and may contain only uppercase nucleotide IUPAC code [ATUGCYRSWKMBDHVN]",
"meta": ["primer_fwd"]
},
"RV_primer": {
"primer_rev": {
"type": "string",
"pattern": "^[ATUGCYRSWKMBDHVN]*$",
"errorMessage": "RV_primer must be provided and may contain only uppercase nucleotide IUPAC code [ATUGCYRSWKMBDHVN]",
"errorMessage": "primer_rev must be provided and may contain only uppercase nucleotide IUPAC code [ATUGCYRSWKMBDHVN]",
"meta": ["primer_rev"]
}
},
"required": ["region", "region_length", "FW_primer", "RV_primer"]
"required": ["region", "region_length", "primer_fwd", "primer_rev"]
},
"uniqueEntries": ["region"]
}
2 changes: 1 addition & 1 deletion conf/test.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_standardized.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Metadata.tsv"
dada_ref_taxonomy = "gtdb=R07-RS207"
cut_dada_ref_taxonomy = true
Expand Down
2 changes: 1 addition & 1 deletion conf/test_doubleprimers.config
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ params {
primer_fwd = "NNNNCCTAHGGGRBGCAGCAG"
primer_rev = "GACTACHVGGGTATCTAATCC"
double_primer = true
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_double_primer.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_double_primer_v3.tsv"
sample_inference = "independent"
trunc_qmin = 30
kraken2_ref_taxonomy = "greengenes"
Expand Down
2 changes: 1 addition & 1 deletion conf/test_failed.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_failed_sample.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_failed_sample_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Metadata_failed_sample.tsv"
sample_inference = "independent"
dada_ref_tax_custom = "https://zenodo.org/records/4310151/files/rdp_train_set_18.fa.gz"
Expand Down
2 changes: 1 addition & 1 deletion conf/test_full.config
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ params {
// Input data for full size test
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_full.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_full_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Metadata_full.tsv"
sample_inference = "independent"
dada_ref_taxonomy = "sbdi-gtdb"
Expand Down
2 changes: 1 addition & 1 deletion conf/test_glosed.config
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ params {

primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_v3.tsv"
sample_inference = "independent"
dada_ref_taxonomy = "glosed"
skip_qiime = true
Expand Down
2 changes: 1 addition & 1 deletion conf/test_iontorrent.config
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ params {
primer_rev = "TCCTCSSCTTATTGATATGC"
sintax_ref_tax_custom = "https://s3.hpc.ut.ee/plutof-public/original/a6c4d680-c99a-4252-ba67-748271c7d7f4.gz"
sintax_assign_taxlevels = "Domain,Phylum,Class,Order,Family,Genus,Species"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_it_SE_ITS.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_it_SE_ITS_v3.tsv"
sequencing_type = "iontorrent"
sample_inference = "independent"
max_ee = 5
Expand Down
2 changes: 1 addition & 1 deletion conf/test_multi.config
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ params {
skip_dada_quality = true
dada_ref_taxonomy = "rdp=18"
skip_dada_addspecies = true
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_multi.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_multi_v3.tsv"

skip_phyloseq = true
skip_tse = true
Expand Down
4 changes: 2 additions & 2 deletions conf/test_multiregion.config
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ params {
config_profile_description = 'Test dataset to check multi-region pipeline function'

// Input data
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/samplesheet_multiregion.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/samplesheet_multiregion_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/metadata_multiregion.tsv"
multiregion = params.pipelines_testdata_base_path + "ampliseq/samplesheets/regions_multiregion.tsv"
multiregion = params.pipelines_testdata_base_path + "ampliseq/samplesheets/regions_multiregion_v3.tsv"
sidle_ref_taxonomy = "greengenes88"
sample_inference = "independent"

Expand Down
2 changes: 1 addition & 1 deletion conf/test_novaseq.config
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ params {
config_profile_description = 'Minimal test dataset to check pipeline function with Novaseq data and codon filtering'

// Input data
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_novaseq.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_novaseq_v3.tsv"
binned_quality = "2,11,25,37"
sample_inference = "independent"

Expand Down
2 changes: 1 addition & 1 deletion conf/test_pacbio_its.config
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ params {
primer_fwd = "CTTGGTCATTTAGAGGAAGTAA"
primer_rev = "TCCTGAGGGAAACTTCG"
sintax_ref_taxonomy = "unite-fungi=8.2"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_pacbio_ITS.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_pacbio_ITS_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Metadata_pacbio_ITS.tsv"
sequencing_type = "pacbio"
sample_inference = "independent"
Expand Down
2 changes: 1 addition & 1 deletion conf/test_pplace.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Metadata.tsv"
sample_inference = "independent"
skip_dada_taxonomy = true
Expand Down
2 changes: 1 addition & 1 deletion conf/test_pplace_sheet.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_v3.tsv"
skip_dada_taxonomy = true
qiime_ref_taxonomy = "greengenes85"

Expand Down
2 changes: 1 addition & 1 deletion conf/test_qiimecustom.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_v3.tsv"
sample_inference = "independent"

// Comparison to expected
Expand Down
2 changes: 1 addition & 1 deletion conf/test_reftaxcustom.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_v3.tsv"
sample_inference = "independent"

// Custom reference taxonomy
Expand Down
2 changes: 1 addition & 1 deletion conf/test_savont.config
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ params {
config_profile_description = 'Minimal test dataset to check pipeline function with Savont'

// Input data
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_nanopore.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_nanopore_v3.tsv"
sequencing_type = "nanopore"

// cutadapt
Expand Down
2 changes: 1 addition & 1 deletion conf/test_single.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "GTGYCAGCMGCCGCGGTAA"
primer_rev = "GGACTACNVGGGTWTCTAAT"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_v3.tsv"
sequencing_type = "illumina_se"
dada_ref_taxonomy = "rdp=18"
cut_dada_ref_taxonomy = true
Expand Down
2 changes: 1 addition & 1 deletion conf/test_sintax.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "CTTGGTCATTTAGAGGAAGTAA"
primer_rev = "TCCTGAGGGAAACTTCG"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_pacbio_ITS.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_pacbio_ITS_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Metadata_pacbio_ITS.tsv"
sequencing_type = "pacbio"
sample_inference = "independent"
Expand Down
2 changes: 1 addition & 1 deletion conf/test_vsearch_lca.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ params {
// Input data
primer_fwd = "CTTGGTCATTTAGAGGAAGTAA"
primer_rev = "TCCTGAGGGAAACTTCG"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_pacbio_ITS.tsv"
input = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Samplesheet_pacbio_ITS_v3.tsv"
metadata = params.pipelines_testdata_base_path + "ampliseq/samplesheets/Metadata_pacbio_ITS.tsv"
sample_inference = "independent"
sequencing_type = "pacbio"
Expand Down
6 changes: 3 additions & 3 deletions docs/output.md
Original file line number Diff line number Diff line change
Expand Up @@ -484,9 +484,9 @@ Additional output includes reconstruction of abundance table and taxonomic infor
<summary>Output files</summary>

- `sidle/per-region/`
- `ASV_seqs_region*_<FW_primer>_<RV_primer>.fasta`: ASV sequences per region
- `ASV_table_region*_<FW_primer>_<RV_primer>.fasta`: ASV abundances per region
- `DADA2_table_region*_<FW_primer>_<RV_primer>.fasta`: ASV abundances and sequences per region
- `ASV_seqs_region*_<primer_fwd>_<primer_rev>.fasta`: ASV sequences per region
- `ASV_table_region*_<primer_fwd>_<primer_rev>.fasta`: ASV abundances per region
- `DADA2_table_region*_<primer_fwd>_<primer_rev>.fasta`: ASV abundances and sequences per region
- `sidle/DB/3_reconstructed/reconstruction_summary/index.html`: Information about the reconstructed reference taxonomy database
- `sidle/reconstructed/`
- `reconstructed_feature-table.biom`: Unified abundance table in biom format
Expand Down
25 changes: 11 additions & 14 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,26 +120,23 @@ For example, the tab-separated sample sheet may contain:
| sample3 | ./S4x.fastq.gz | ./S4y.fastq.gz | B | control | 1100 |
| sample4 | ./a.fastq.gz | ./b.fastq.gz | B | sample | 11000 |

Two header layouts are supported, a legacy and a standardized layout (the latter is described above):

| Layout | Required columns | Optional columns |
| ------------ | -------------------------- | ------------------------------------------------- |
| Legacy | `sampleID`, `forwardReads` | `reverseReads`, `run`, `control`, `quant_reading` |
| Standardized | `sample`, `fastq_1` | `fastq_2`, `run`, `control`, `quant_reading` |
| Required columns | Optional columns |
| ------------------- | -------------------------------------------- |
| `sample`, `fastq_1` | `fastq_2`, `run`, `control`, `quant_reading` |

Please note the following requirements:

- 2 to 6 columns/entries
- File extensions `.tsv`,`.csv`,`.yml`,`.yaml` specify the file type, otherwise file type will be derived from content, if possible
- Must contain either `sample` and `fastq_1` (standardized) OR `sampleID` and `forwardReads` (legacy)
- May contain `fastq_2`/`reverseReads`, `run`, `control`, and `quant_reading`
- Must contain either `sample` and `fastq_1`
- May contain `fastq_2`, `run`, `control`, and `quant_reading`
- Sample IDs must be unique
- Sample IDs must start with a letter
- Sample IDs can only contain letters, numbers or underscores
- FastQ files must be compressed (`.fastq.gz`, `.fq.gz`)
- Within one samplesheet, only one type of raw data should be specified (same amplicon & sequencing method)

Examples for both layouts are provided within the pipeline code in folder `assets` as `samplesheet_legacy.tsv` and `samplesheet_standardized.tsv`.
Examples for the layout is provided within the pipeline code in folder `assets` as `samplesheet.tsv`.

To avoid producing a sample sheet, [Direct FASTQ input](#direct-fastq-input) may be used instead.

Expand Down Expand Up @@ -295,7 +292,7 @@ For example, multiple variable regions of the 16S rRNA gene were sequenced with
Information about sequencing data via [`--input`](#sample-sheet-input), region primers length information via [`--multiregion`](https://nf-co.re/ampliseq/parameters#multiregion), and a taxonomic database via [`--sidle_ref_taxonomy`](https://nf-co.re/ampliseq/parameters#sidle_ref_taxonomy) or [`--sidle_ref_tax_custom`](https://nf-co.re/ampliseq/parameters#sidle_ref_tax_custom) with [`--sidle_ref_seq_custom`](https://nf-co.re/ampliseq/parameters#sidle_ref_seq_custom) is required.

```bash
--input "samplesheet_multiregion.tsv" --multiregion "regions_multiregion.tsv" --sidle_ref_taxonomy "silva=128"
--input "samplesheet_multiregion_v3.tsv" --multiregion "regions_multiregion_v3.tsv" --sidle_ref_taxonomy "silva=128"
```

The region information file can be tab-separated (.tsv), comma-separated (.csv), or in YAML format (.yml/.yaml) and can have two to four columns/entries with the following headers:
Expand All @@ -304,12 +301,12 @@ The region information file can be tab-separated (.tsv), comma-separated (.csv),
| ------------- | ------------------------------------------------------------------------- |
| region | Unique region identifier |
| region_length | Minimum region length, sequences are trimmed and shorter ones are omitted |
| FW_primer | Forward primer sequence |
| RV_primer | Reverse primer sequence |
| primer_fwd | Forward primer sequence |
| primer_rev | Reverse primer sequence |

For example, the tab-separated `regions_multiregion.tsv` may contain:
For example, the tab-separated `regions_multiregion_v3.tsv` may contain:

| region | FW_primer | RV_primer | region_length |
| region | primer_fwd | primer_rev | region_length |
| ------- | --------------------- | -------------------- | ------------- |
| region1 | TGGCGAACGGGTGAGTAA | CCGTGTCTCAGTCCCARTG | 145 |
| region2 | ACTCCTACGGGAGGCAGC | GTATTACCGCGGCTGCTG | 135 |
Expand Down
Loading
Loading