Вы можете передать переменную request
в шаблон и использовать:
{{ request.session.name }}
Вы можете скачать список файлов fastq и извлечь из него список примеров, используя чистый код на python до того, как правила snakemake вступят в силу:
def download_files_list(output):
"""Download the list of fastq files and return the list
of samples
"""
content = """
bfe583337fd68b3 ID_001_1.fq.gz
1636b6756daa65f ID_001_2.fq.gz
0428baf25307249 ID_002_1.fq.gz
de33d81ba5bfa62 ID_002_2.fq.gz
""".strip()
with open(output, mode="w") as f:
print(content, file=f)
return ['ID_001_1', 'ID_001_2', 'ID_002_1', 'ID_002_2']
samples= download_files_list("md5")
wildcard_constraints:
sample= '|'.join([re.escape(x) for x in samples]),
rule all:
input:
expand("bams/{sample}.bam", sample= samples),
rule fastq_md5_files:
input: "md5"
output: "fastq/{sample}.fq.gz.md5"
shell: """awk '{{ print [110] > ("fastq/" $2 ".md5") }}' {input}"""
rule download_fastq_and_check_md5:
input: "fastq/{sample}.fq.gz.md5"
output: "fastq/{sample}.fq.gz"
#shell: "wget {}/{{sample}} && md5sum --check {{input}}".format(config["url_file_prefix"])
shell: "touch {output}"
rule align_fastq:
input: "fastq/{sample}.fq.gz"
output: "bams/{sample}.bam"
shell: "touch {output}" # aligning task
(мне любопытно, что насчет более snakemake-ish решение с использованием контрольных точек или аналогичного)