Я пытаюсь создать простой конвейер, используя змейку, чтобы загрузить два файла из Интернета, а затем объединить их в один вывод.
Я думал, что сработает следующий код:
dwn_lnks = {
'1': 'https://molb7621.github.io/workshop/_downloads/sample.fa',
'2': 'https://molb7621.github.io/workshop/_downloads/sample.fa'
}
import os
# association between chromosomes and their links
def chromo2link(wildcards):
return dwn_lnks[wildcards.chromo]
rule all:
input:
os.path.join('genome_dir', 'human_en37_sm.fa')
rule download:
output:
expand(os.path.join('chr_dir', '{chromo}')),
params:
link=chromo2link,
shell:
"wget {params.link} -O {output}"
rule merger:
input:
expand(os.path.join('chr_dir', "{chromo}"), chromo=dwn_lnks.keys())
output:
os.path.join('genome_dir', 'human_en37_sm.fa')
run:
txt = open({output}, 'a+')
with open (os.path.join('chr_dir', "{chromo}") as file:
line = file.readline()
while line:
txt.write(line)
line = file.readline()
txt.close()
Этот код возвращает ошибку: No values given for wildcard 'chromo'. in line 20
Также в правиле слияния код python внутри прогона не работает.
Учебник в пакете dragonmake не содержит достаточного количества примеров, чтобы изучить детали для тех, кто не занимается информатикой. Если кто-нибудь знает хороший ресурс, чтобы узнать, как работать со змейкой, я был бы признателен, если бы они могли поделиться :).
link=chromo2link
это ошибка, я думаю.chromo2link
является функцией и ожидает подстановочный знак в качестве параметра - person BoilingFire   schedule 22.06.2017