Я новичок в SnakeMake. Я пытаюсь научить его самому этому простому Snakefile:
(IDS, ) = glob_wildcards( "{id}.txt" )
print ( str ( IDS ) )
rule all:
input:
expand ( "out/{id}-1.txt", id = IDS )
rule copy:
input:
"{id}.txt"
output:
"out/{id}-1.txt"
shell:
"cp {input} {output}"
Когда я запускаю его в первый раз (когда выход еще не существует), он идет хорошо и создает три копии на выходе. В следующий раз IDS содержит 'out/c-1', 'out/a-1', 'out/b-1'
, что, конечно, не то, что я хочу, потому что мне бы хотелось, чтобы карты glob_wildcan сканировали только первый уровень. Любой способ сделать это, может быть, с параметром regex, который получает функция?
До сих пор я управлял им только через фильтр после создания IDS:
IDS = [ id for id in IDS if '/' not in id ]
Но я надеялся для чего-то более компактного.