#bioinformatics #snakemake
Вопрос:
Проблема в том, что:
Программное обеспечение под названием «RGI» автоматически добавит .txt
в качестве суффикса к выходному файлу. Так что, если мой sampleID
7
. Тогда фактический выходной файл RGI будет 7.txt
, который отличается от выходного файла ( 7
), определенного в правиле snakefile. И snakemake сообщит об ошибках, таких как Job Missing files after 20 seconds
. Однако RGI по-прежнему добавляется .txt
в качестве суффикса, даже если вы предварительно задали суффикс (и фактический выходной файл будет выглядеть так 7.txt.txt
).
Как я могу решить эту проблему? Следующее является частью моего кода:
rule rgi:
output:
cardTxt = "{sampleId}/annotation/rgi/{sampleId}"
input:
faa = rules.prokka.output.faa,
cardDb = config['rgi']['cardDb']
shell:
"""
rgi load -i {input.cardDb}
rgi main -i {input.faa} -t protein -o {output.cardTxt} --include_loose --clean
"""
Ответ №1:
Удалите .txt
префикс из выходного имени файла, прежде чем передавать его rgi
. Я делаю это здесь, используя манипуляцию строками bash, но вы можете сделать это другими способами:
rule rgi:
input:
faa = rules.prokka.output.faa,
cardDb = config['rgi']['cardDb'],
output:
cardTxt = "{sampleID}/annotation/rgi/{sampleID}.txt",
shell:
"""
card=${{{output.cardTxt}%.txt}}
rgi load -i {input.cardDb}
rgi main -i {input.faa} -t protein -o $card --include_loose --clean
"""
(Я предполагаю, что вы хотите .txt
быть частью выходного имени файла. Т. е. с вами все в порядке 7.txt
)
Комментарии:
1. Ваш ответ дал мне подсказку, и я попробовал этот способ для ковенанта:
shell: """ rgi load -i {input.cardDb} rgi main -i {input.faa} -t protein -o {wildcards.sampleId}/annotation/rgi/{wildcards.sampleId} --include_loose --clean """
хотя это может быть не лучшим решением.