Reserved name in Snakemake?

Question:

I use Snakemake version 7.12.1 and I get the following error while trying to execute a pipeline:

AttributeError: invalid name for input, output, wildcard, params or
log: pop is reserved for internal use

I normally use the word pop as the wildcard for population with no issue. After the raised error, I made it changed to another word and it looks like the error is gone. Would someone confirm that pop is now a reserved name or there is another explanation for? I checked the snakemake manual and there is no any related notification.

Asked By: Maya_Cent

||

Answers:

Would someone confirm that pop is now a reserved name or there is another explanation for?

Yes, pop is reserved because internally some processes use .pop method to remove items from the directives.

Internally, the directives (input/output/etc) are stored as a Namedlist which inherits methods from the list. So almost all the methods defined for list (and Namedlist) will trigger this error, e.g. remove, reverse. There are two hard-coded whitelisted exceptions: index and sort.

This change has been added a couple of years ago, so you must have been running a much older snakemake version.

Here’s a small Snakefile for testing:

rule all:
    input: 'test.txt'
    
rule test:
    output:
        # this will err
        pop = 'test.txt'
    shell: 'echo {output}'
Answered By: SultanOrazbayev
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.