Skip to content

[PSEUDO-PR - DO NOT MERGE] core team release review - #79

Draft
jfy133 wants to merge 338 commits into
TEMPLATEfrom
dev
Draft

[PSEUDO-PR - DO NOT MERGE] core team release review#79
jfy133 wants to merge 338 commits into
TEMPLATEfrom
dev

Conversation

@jfy133

@jfy133 jfy133 commented Aug 19, 2026

Copy link
Copy Markdown
Member

This PR SHOULD NOT BE MERGED, and is only used for a 'clean' reviewing experience of dev against the latest template (vs. main, which will have an older version of the template).

miraep8 and others added 30 commits March 13, 2026 14:15
hotfix to module + Adds metro diagram, updates README.md
Add blocks into the figure
use true 'light' theme
add nf-metro command
Remove trailing spaces and redundant blank lines
attempt 1 at sensible defaults for eggnogmapper
Module updates, version topics, snapshots
nickp60 and others added 23 commits July 23, 2026 12:43
Update resource references for HUMANn v4, FMH FunProfiler, and eggNOG-mapper. Changes include: directing HUMANn v4 to official documentation, updating FMH FunProfiler repository to KoslickiLab organization, and pointing eggNOG-mapper to the official GitHub repository instead of the academic paper.
* Ignore branch.yml in files_unchanged lint

The 4.0.3 template renders `HEAD_REPO:` with two spaces while the prettier
pin used by prek collapses it to one, so the file can never match the
template and CI lint fails. Also drops the stale linting_comment.yml entry,
replaced by pr-comment.yml in the 4.0.3 template.

* Document local subworkflows in meta.yml (#58)

All three still described a samtools sort subworkflow copied from the template.

* Drop template TODO comments (#58)

Adds real pipeline-specific contribution guidelines in place of the docs/CONTRIBUTING.md placeholder.

* Format nf files with nextflow lint -format (#52)

Review point 3 from jfy133. Restores the inline comments the formatter drops.

* Tidy test_full config (#58)

Drops commented-out placeholders, plus outdir (set by awsfulltest) and cleanup (not a param, and unused).

* Rebuild schema to drop false defaults (#58)

* Fix singularity CI: bump apptainer, allow user namespaces

All singularity shards fail with 'Failed to create user namespace: Permission denied'; latest-everything only looks green because it is continue-on-error. Apptainer 1.1.2 (action default) is non-suid and the runner image blocks unprivileged userns.

* Collect software versions from the versions topic (#52)

Modules publish to the topic but nothing consumed it, so the MultiQC software versions section was empty. Restores the template's collection block and drops the unused versions/mqc emits from PROFILING.

* Point test configs at nf-core test-datasets

nf-core/test-datasets#2172 is merged, so samplesheets/test.csv and
database_full.csv now resolve under pipelines_testdata_base_path. Also
drops outdir and cleanup from test.config: both sat inside params, so
cleanup never reached the Nextflow directive and outdir is supplied by
the caller.

* List humann4 modules in profile meta.yml

* Update fmhfunprofiler snapshot for new sketch database

nf-core/test-datasets#2172 replaced KOs_sketched_scaled_1000_demo.sig.zip
on the funcprofiler branch, which is where tests/nextflow.config points
pipelines_testdata_base_path. The pipeline-level snapshot already carried
the new md5 because it resolves the database through database.csv.

* Update outdated nf-core modules and subworkflow

diamond 2.1.24 to 2.2.1 and seqkit 2.9.0 to 2.13.0; metaphlan stays on
4.1.1 but drops the pip/setuptools workaround and reports its version
through the versions topic. gunzip and untar only gain the apptainer
container-engine check. utils_nfschema_plugin renames option keys that
this pipeline never sets, since it passes null for both the parameters
schema and the CLI typecast.

* Revert metaphlan module update, it breaks conda

The newer module drops the pip/setuptools dependency, leaving metaphlan
on a Python 3.12 env with no distutils. Docker is unaffected.
* Fix DIAMOND database input, read meta and output format

The module needs the database as a tuple and --outfmt 6 rather than 102,
and publishDir needs the database identity in the read meta.

* Regenerate default test snapshot for RGI publish path
* update citations

* docs: add remaining tool citations (#65)

Signed-off-by: sapunyangkut <302607731+sapunyangkut@users.noreply.github.com>
Co-authored-by: sapunyangkut <302607731+sapunyangkut@users.noreply.github.com>

* fix lint

---------

Signed-off-by: sapunyangkut <302607731+sapunyangkut@users.noreply.github.com>
Co-authored-by: sapunyangkut <sapunyangkut@gmail.com>
Co-authored-by: sapunyangkut <302607731+sapunyangkut@users.noreply.github.com>
* Fix eggNOG-mapper database wiring

The data dir was looked up under an empty entity key, and the search database
was passed as a bare path instead of the [ search_mode, db ] tuple the module takes.

* Add an eggNOG-mapper test case to the profile subworkflow

The test builds its own data dir from the demo eggnog.db, since emapper.py
requires --data_dir to be a directory and the shared test data is a bare file.

* Test eggNOG-mapper on reads the demo database can annotate

The demo search database is the SARS-CoV-2 proteome, so the minigut fixture had
no homology to find and the test snapshotted an annotation file holding nothing
but its header. Switch the query to the sarscov2 Illumina reads, which annotate
139 reads against the one protein the 61 KB demo eggnog.db carries, and assert
the annotations are non-empty so a future empty result fails instead of
re-recording clean. Snapshot the unique seed ortholog, OG and description
triples rather than one row per read: the read-level rows are 30 KB and their
order is not guaranteed stable across thread counts.

* Stop publishing the eggNOG-mapper DIAMOND hit table

.emapper.hits carries every hit for every query and is an order of magnitude
larger than the rest of the pipeline's output: 5.6 GB per sample against 1.1 GB
of annotations on a ~5 M read metagenome. Nothing downstream reads it, and
reannotating against a newer eggNOG release takes the seed orthologs via
-m no_search --annotate_hits_table, so drop it from the publish pattern. The
module still emits it; only publishDir changes.

* Test DIAMOND against the B. fragilis database

Add test case against B. fragilis reference db

* Update output.md

Original text too verbose
Removes three things that were documented or declared but never wired up:
the `profileUsesContainers` variable left behind when its guard was deleted,
the commented-out igenomes params, and `save_runmerged_reads`, which was in
the schema and advertised FASTQ output the pipeline never publishes.

Also moves the profile subworkflow helpers below the workflow bodies, trims
the eggNOG-mapper publishDir comment, and converts the remaining GitHub-style
admonitions in usage.md and output.md to the nf-core website syntax, fixing
an unclosed `::` block in the process.

Co-authored-by: Jonas Scheid <43858870+jonasscheid@users.noreply.github.com>
FastQC was never called, so the citation claimed a tool that never ran.
Also carries over the database version table from #76.
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

nf-core pipelines lint overall result: Passed ✅ ⚠️

Posted for pipeline commit 0873fd4

+| ✅ 205 tests passed       |+
#| ❔   5 tests were ignored |#
!| ❗   3 tests had warnings |!
Details

❗ Test warnings:

  • nextflow_config - Config manifest.version should end in dev: 1.0.0
  • readme - README contains the placeholder zenodo.XXXXXXX. This should be replaced with the zenodo doi (after the first release).
  • pipeline_todos - TODO string in CHANGELOG.md: ## v1.0.0 - [unreleased replace with date on release ]

❔ Tests ignored:

  • files_unchanged - File ignored due to lint config: .github/PULL_REQUEST_TEMPLATE.md
  • files_unchanged - File ignored due to lint config: .github/workflows/branch.yml
  • files_unchanged - File ignored due to lint config: .github/workflows/linting.yml
  • files_unchanged - File ignored due to lint config: assets/nf-core-funcprofiler_logo_light.png
  • files_unchanged - File ignored due to lint config: .gitignore or .prettierignore

✅ Tests passed:

Run details

  • nf-core/tools version 4.1.0
  • Run at 2026-08-25 23:14:19

Comment thread .devcontainer/setup.sh Outdated

# Update welcome message
echo "Welcome to the nf-core/funcprofiler devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt
echo "Welcome to the nf-core/nextbigthing devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Suggested change
echo "Welcome to the nf-core/nextbigthing devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt
echo "Welcome to the nf-core/funcprofiler devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Where does the logo against the legned come from here? I think it looks quite ugly having this darker grey... if this is an nf-metro thing, then ignore me.

I would also argue you should simplify a lot of this, there is a lot of unnecessary complicated detail (e.g. one coloured line per profiler), which could be simplified for user-facing understanding when encountering the pipeline.

Given you only have a single data type - DNA FASTQ reads, you short read FASTQ to results directory could essentially be a single colour line (input database, and multiqc could be separate), as all you are doing up until the profilers are modifying the FASTQs. The log files (to multiqc) and profile tables (to results directory) could be a different colour.

Comment thread assets/schema_database.json Outdated
"db_name": {
"type": "string",
"pattern": "^\\S+$",
"errorMessage": "The unique name of the database should be provided.",

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Suggested change
"errorMessage": "The unique name of the database should be provided.",
"errorMessage": "A unique name of the database should be provided.",

Comment thread assets/schema_database.json Outdated
"eggnogmapper_db",
"eggnogmapper_data_dir"
],
"errorMessage": "The unique name of the database entity should be provided. (eg, for HUMAnN, specify whether db_path is the humann_nucleotide, humann_protein, or humann_metaphlan database; for eggnogmapper, specify eggnogmapper_db or eggnogmapper_data_dir)",

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

What is the difference between the database and database entity? I think this differenation should be made clear between the two columns

Comment thread assets/schema_database.json Outdated
"errorMessage": "Invalid database db_params entry. No quotes allowed.",
"meta": ["db_params"]
},
"db_type": {

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I would add a help text here, saying that 'Please specify if the files that should be profiled are short- or -long' reads.

But don't you only support short reads atm?

Comment thread workflows/funcprofiler.nf Outdated
include { PROFILE } from '../subworkflows/local/profile/main'
include { DATAPREP } from '../subworkflows/local/dataprep/main'
include { DBPREP } from '../subworkflows/local/dbprep/main'

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

There is a lot of non-useful whitespace in these subworkflows, I would do a clean up pass and remove them.

Comment thread CHANGELOG.md
## v1.0.0 - [date]
## v1.0.0 - [unreleased<!-- TODO nf-core: replace with date on release -->]

Initial release of nf-core/funcprofiler, created with the [nf-core](https://nf-co.re/) template.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Could add a list of the supported profilers here as well

Comment thread nextflow_schema.json Outdated
"pattern": "^\\S+\\.csv$",
"fa_icon": "fas fa-database",
"description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler",
"help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 5 columns (`tool`, `db_name`, `db_entity`, `db_params`, `db_path`), and a header row. See [usage docs](https://nf-co.re/funcprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\n As with taxprofiler, we recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused."

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Suggested change
"help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 5 columns (`tool`, `db_name`, `db_entity`, `db_params`, `db_path`), and a header row. See [usage docs](https://nf-co.re/funcprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\n As with taxprofiler, we recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused."
"help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 5 columns (`tool`, `db_name`, `db_entity`, `db_params`, `db_path`), and a header row. See [usage docs](https://nf-co.re/funcprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\n As with taxprofiler, we recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused."

Comment thread nextflow_schema.json Outdated
"run_fmhfunprofiler": {
"type": "boolean",
"fa_icon": "fas fa-toggle-on",
"description": "Turn on profiling with fmhfunprofiler; Requires database to be present CSV file passed to --databases"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Suggested change
"description": "Turn on profiling with fmhfunprofiler; Requires database to be present CSV file passed to --databases"
"description": "Turn on profiling with fmhfunprofiler. Requires database to be present in CSV file passed to --databases"

Comment thread nextflow_schema.json Outdated
"run_humann_v3": {
"type": "boolean",
"fa_icon": "fas fa-toggle-on",
"description": "Turn on profiling with HUMAnN3. Requires `humann_v3`-tagged database to be present CSV file passed to --databases"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Suggested change
"description": "Turn on profiling with HUMAnN3. Requires `humann_v3`-tagged database to be present CSV file passed to --databases"
"description": "Turn on profiling with HUMAnN3. Requires `humann_v3`-tagged database to be present in CSV file passed to --databases"

Check all entries for same change

Samplesheet rows are validated and turned into their final [meta, [reads]]
form in PIPELINE_INITIALISATION, so a bad sheet aborts before any task is
submitted; DATAPREP now only merges runs and concatenates. The platform,
fastq_1 and long-read checks move into assets/schema_input.json, which no
longer offers OXFORD_NANOPORE or PACBIO_SMRT. validateProfilerDatabases()
does the same for the database sheet, replacing the lazy checks inside
getDbPath() and the fmhfunprofiler db_params check inside PROFILE. Drops
the unread db_type column from the database schema.
Drops leftover debug output and a duplicated ${args} from HUMANN4, adds a
header comment saying why the humann4 modules are local, and credits the
authors who modified them.
tests/nextflow.config goes back to the template shape so -profile test can
be run without nf-test, and test_full says why some profilers are off.
One sentence per line, GitHub admonitions instead of Astro, output file
lists in collapsible blocks, a database-preparation section per tool, and
the db_name/db_entity distinction spelled out before the examples.
Drops the preprocessing node, which 1.0.0 does not have, and collapses the
per-profiler lines into reads, databases, profiles and logs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants