Я пытаюсь попрактиковаться в написании рабочих процессов в snakemake.
Содержимое моего Snakefile:
configfile: "config.yaml"
rule get_col:
input:
expand("data/{file}.csv",file=config["datname"])
output:
expand("output/{file}_col{param}.csv",file=config["datname"],param=config["cols"])
params:
col=config["cols"]
script:
"scripts/getCols.R"
Содержимое config.yaml:
cols:
[2,4]
datname:
"GSE3790_expression_data"
Мой сценарий R:
getCols=function(input,output,col) {
dat=read.csv(input)
dat=dat[,col]
write.csv(dat,output,row.names=F)
}
getCols(snakemake@input[[1]],snakemake@output[[1]],snakemake@params[['col']])
Похоже, вызываются сразу обе колонки. То, что я пытаюсь сделать, - это вызов одного столбца из списка для каждого выходного файла.
Поскольку второй вывод никогда не может быть создан (оба столбца используются для создания первого вывода), snakemake выдает ошибку:
Waiting at most 5 seconds for missing files.
MissingOutputException in line 3 of /Users/rebecca/Desktop/snakemake-tutorial/practice/Snakefile:
Job completed successfully, but some output files are missing.
Немного не связанное с этим примечание, я подумал, что могу записать ввод как: 'data / {file} .csv' Но это возвращает:
WildcardError in line 4 of /Users/rebecca/Desktop/snakemake-tutorial/practice/Snakefile:
Wildcards in input files cannot be determined from output files:
'file'
Любая помощь приветствуется!