Skip to content

v-annotate.pl cannot be run with apptainer exec using the VADR Biocontainers Apptainer/Singularity image #87

Description

@peterk87

Hello,

I'm not sure if it's appropriate to post this issue here since it's an issue with the VADR Biocontainer image created from the Bioconda recipe. This issue only arises when running VADR using the Biocontainers Apptainer/Singularity image with Nextflow. There's no issue when running VADR with Nextflow using Conda/Mamba or Docker.

Pulling the VADR Biocontainers Docker image and creating the Apptainer image:

$ apptainer pull docker://quay.io/biocontainers/vadr:1.6.4--pl5321h031d066_0 quay.io-biocontainers-vadr-1.6.4--pl5321h031d066_0.img

Apptainer exec does not have the vadr module in the PERL5LIB env var:

$ apptainer exec quay.io-biocontainers-vadr-1.6.4--pl5321h031d066_0.img v-annotate.pl --help

Can't locate vadr.pm in @INC (you may need to install the vadr module) (@INC contains: /usr/local/lib/perl5/5.32/site_perl /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.32/vendor_perl /usr/local/lib/perl5/vendor_perl /usr/local/lib/perl5/5.32/core_perl /usr/local/lib/perl5/core_perl .) at /usr/local/bin/v-annotate.pl line 13.

Apptainer run works fine since the activation script that sets the PERL5LIB path is sourced:

$ apptainer run quay.io-biocontainers-vadr-1.6.4--pl5321h031d066_0.img v-annotate.pl --help

# v-annotate.pl :: classify and annotate sequences using a model library
# VADR 1.6.4 (Jun 2024)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# date:    Fri Sep 20 15:36:33 2024
#
Usage: v-annotate.pl [-options] <fasta file to annotate> <output directory to create>
...

With $ apptainer exec $IMG bash:

Apptainer> echo $PERL5LIB
# empty/not set

With $ apptainer run $IMG:

Apptainer> echo $PERL5LIB
/usr/local/share/vadr-1.6.4/vadr::/usr/local/share/sequip-0.10/lib

The VADR Bioconda build.sh script creates an activation script:

https://github.com/bioconda/bioconda-recipes/blob/dc96225686dbc772fc733265d51a934ac0f050f2/recipes/vadr/build.sh#L57

But it looks like the script is only sourced when running with Conda, Docker or apptainer run.

Maybe a wrapper script that explicitly sets the necessary env vars would help?

cat > $PREFIX/bin/v-annotate <<EOF
#!/bin/bash
source "${PREFIX}/etc/conda/activate.d/vadr.sh"
$PREFIX/bin/v-annotate.pl "\$@"
EOF

chmod +x $PREFIX/bin/v-annotate

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions