Skip to content

Title: backbone_metrics.py uses os.symlink for filtered output, breaking Nextflow Singularity execution #20

@Halewijn11

Description

@Halewijn11

Steps to Reproduce

When running the [rfdiffusion-end-to-end] pipeline (and likely others) with Nextflow + Singularity on a SLURM cluster, the LigandMpnn process fails with:

Root cause

backbone_metrics.py line 602 creates symlinks in the --filtered-output directory:

This creates a multi-level symlink chain across Nextflow work directories:

LigandMpnn work dir: backbones_filtered/ → symlink to BackboneMetrics output dir (correctly bind-mounted)
Inside that dir: each .pdb → symlink to the RFdiffusion work dir (not bind-mounted in the LigandMpnn container)
Singularity only bind-mounts the directories Nextflow explicitly stages as inputs. It does not recursively follow symlinks to mount their targets. So glob.glob finds the files (directory listing resolves), but open() fails because the symlink target is outside the container's mount namespace.

Files in backbones_filtered/ should be real copies, not symlinks, so they are self-contained within the BackboneMetrics output directory that gets staged into downstream processes.

Suggested fix

Replace line 602 with a copy instead of a symlink:

Environment

Nextflow 25.10.4
Singularity/Apptainer
SLURM scheduler
GPFS filesystem (paths accessible via both projects and 0 mount points)

Expected Behavior

No response

Actual Behavior

No response

Logs / Screenshots

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions