Repository navigation
Description
Description of the bug
With the default InterProScan database settings, INTERPROSCAN fails on a real (non-test) run:
Running hmmpress (/usr/local/bin//hmmpress) on data/pirsf/3.10/sf_hmm_all
failed to open SSI index data/pirsf/3.10/sf_hmm_all.h3i
Could not run hmmpress!
...
FATAL - Analysis step 27 : Run pirsf.pl binary for selected proteins for proteins 1 to 405 has failed irretrievably.
CI doesn't catch it because the test profiles use the small interproscan_test.tar.gz.
Causes
1. Container and database versions don't match (confirmed)
modules/nf-core/interproscan/main.nfuses theinterproscan:5.59_91.0container.nextflow.configsetsinterproscan_db_urlto the 5.72-103.0 release.
InterProScan reads member database paths from its bundled interproscan.properties. The 5.59 container therefore looks for data/pirsf/3.10, data/panther/17.0, data/tigrfam/15.0 and so on, none of which exist in the 5.72 data. TIGRFAM was also merged into NCBIfam after 5.59, so the default interproscan_applications depends on the version.
2. The staged database directory is probably nested one level too deep (likely, not yet confirmed)
The full EBI release tarball contains a single top-level folder interproscan-X/ holding bin/, data/, interproscan.sh and so on. UNTAR strips that folder, and the module then stages the whole install directory as data (stageAs: 'data'). The HMMs end up at data/data/pirsf/..., while InterProScan looks for data/pirsf/.... The test tarball has no wrapper folder, which would explain why tests pass.
The same failure happens after switching the URL to the matching 5.59 release.
3. The HMMs aren't pre-pressed
Release tarballs need python3 setup.py -f interproscan.properties to be run once. Without it, pirsf.pl runs hmmpress inside the shared UNTAR output while the pipeline runs. With several input FASTAs, parallel INTERPROSCAN tasks can press the same files at the same time and race.
Suggested fix
- Keep the container and
interproscan_db_urlon the same version. Either bump both to 5.72 once the container is available (see Bump interproscan in bioconda #20) and replaceTIGRFAMwithNCBIfam, or point the URL at the 5.59-91.0 release. - In
subworkflows/local/functional_annotation/main.nf, pass the innerdata/folder when it exists, for both the download branch and the--interproscan_dbbranch:.map { _meta, database -> database.resolve('data').exists() ? database.resolve('data') : database } - Press the HMMs once after
UNTAR, with a small local step runningsetup.py, or document that--interproscan_dbmust point to a database that has already been set up.
Command used and terminal output
Slurm HPC, Singularity, default interproscan_db_url and interproscan_applications (Hamap,PANTHER,PIRSF,TIGRFAM,sfld), --disable-precalc.
System information
- Pipeline:
dev(ffb0473) - Executor: Slurm
- Container engine: Singularity
- InterProScan container: 5.59-91.0
Activity
vagkaratzas commentedon Sep 22, 2026
Cause 2 is confirmed. The
UNTAR_INTERPROSCANoutput forinterproscan-5.59-91.0-64-bit.tar.gzis the full install:Staged as
data, this puts the member databases atdata/data/....Workaround until this is fixed: point
--interproscan_dbat the inner folder,<UNTAR_workdir>/interproscan_db/data. Before that, runpython3 setup.py -f interproscan.propertiesonce ininterproscan_db/to press the HMMs.vagkaratzas commentedon Sep 22, 2026
Correction: the nested
data/data/layout is not what caused this failure. The root cause is in theinterproscanmodule itself, reported upstream as nf-core/modules#13009.interproscan.shchanges into its install directory before it readsINTERPROSCAN_CONF. The module sets that variable to a relative path, so InterProScan loads the container's owninterproscan.properties(data.directory=data, relative to the install dir) and uses the small, unpressed, read-only sample database in the container. Whatever is passed to--interproscan_dbis ignored, which is why the error stayed exactly the same after switching the URL and the path.Once the module is fixed, causes 1 (version mismatch) and 2 (pass the inner
data/folder) still need addressing here.Workaround for now: bind a pressed 5.59-91.0
data/folder over the container's copy:process { withName: '.*:INTERPROSCAN' { containerOptions = '-B /abs/path/interproscan_db/data:/usr/local/share/InterProScan/data' } }Record proteinannotator run 07 and the InterProScan workaround
vagkaratzas commentedon Sep 27, 2026
Fixed in #115 (now in
dev):interproscanmodule now uses the staged database (interproscan: staged database is ignored (relative INTERPROSCAN_CONF, wrong bin/data directories) modules#13009), which was the root cause.interproscan_db_urlnow points to the 5.59-91.0 release, which matches the container (cause 1).data/folder of an untarred release is passed toINTERPROSCAN(cause 2).PIRSFhas been removed from the defaultinterproscan_applications, so a default run no longer races onhmmpress(cause 3). To use PIRSF, pre-press the database as described in the usage docs and pass it with--interproscan_db.A one-off pressing step after
UNTAR, which would let PIRSF go back into the defaults, can be looked at separately.Fix InterProScan ignoring staged database (nf-core#114)