У меня есть простая функция, которая читает файл (одна строка) и получает первый элемент после разделения.
def get_wc(wc):
file = open(wc,"r")
normalization_value = file.readline().split(' ')[0]
return(normalization_value)
Я использую эту функцию в создании правила змеи.
rule compute_fc:
input:
"data/annotated_clones/{cdna}_paste_{lib}.annotated.bed"
output:
"data/fold_change/{cdna}_paste_{lib}.fc.bed"
params:
size_cdna=get_wc("data/wc_bed/cdna/{cdna}.wc.txt"),
size_lib=get_wc("data/wc_bed/library/{lib}.wc.txt")
shell:'''
awk -v cdna1={params.size_cdna} -v inp={params.size_lib} -v addon=1 -v FS='\t' -v OFS='\t' '/^chr/{{ratio=(($7+addon)/($8+addon))*(inp/cdna1);print $0,ratio}}' {input} > {output}
'''
Я пытаюсь получить значение, возвращаемое функцией get_w c, и использовать его в качестве параметров в правиле создания змеи.
Но Snakemake не находит путь с подстановочными знаками поэтому он пытается найти путь с подстановочными знаками и, очевидно, он не работает.
[Errno 2] No such file or directory: 'data/wc_bed/cdna/{cdna}.wc.txt'