#python #bioinformatics #snakemake
#python #биоинформатика #snakemake
Вопрос:
Я выполняю рабочий процесс Snakemake с помощью приложения python командной строки, которое работает более или менее таким образом:
./run.py workflowfile -argument1 -argument2...
В файле рабочего процесса указано целевое правило, которое передается в аргумент «targets» API Snakemake, например:
with open(workflowfile, 'rt') as fp:
workflow_info = json.load(fp)
target = workflow_info['workflow_target']
status = snakemake.snakemake(....targets=[target]....)
Где «цели» должны быть списком.
Теперь я пытаюсь избавиться от «workflowfile» и хочу указать с помощью другого аргумента имя целевого правила, чтобы получить:
./run.py -w "targetrulename" -a1 -a2...
В интерфейсе командной строки Snakemake это делается простым способом с помощью «target», вызывая:
snakemake targetrulename
где targetrulename — это просто имя правила, на которое вы хотите быть нацелены. Итак, я попытался реализовать новый аргумент командной строки с помощью argparse следующим образом:
parser.add_argument('-w', '--workflow', action="append", help='specify the workflow from the following: ')
и затем
targets=args.workflow
но так или иначе я получаю разные ошибки. Некоторые примеры:
-TypeError: unsupported operand type(s) for : 'NoneType' and 'int'
-TypeError: unhashable type: 'list'
-No rule to produce c (If I type "complete" as target rule name)
Извините за то, что я новичок, я только начал работать в области биоинформатики (я биотехнолог), и это мой первый вопрос о переполнении стека. Надеюсь, я все сделал правильно.
Спасибо за любые советы или рекомендации
Редактировать:
минимальный пример для скрипта python:
import argparse
import snakemake
def main(args)
snakefile=snakefile_path
snakemake.snakemake(snakefile, configfiles=[args.configfile] …)
if __name__ == ‘__main__’
parser=argparse.ArgumentParser(description=””, usage=””)
parser.add_argument(‘-c’, ‘--configfile’, action=’store’)
[...]
args = parser.parse_argse()
редактировать: решаемая
Комментарии:
1. Можете ли вы привести минимальный пример? Небольшой скрипт на python с argparse, snakefile и как вы его вызываете?
2. Конечно, я отредактировал сообщение. Спасибо