Объект Snakemake 'Wildcards' не имеет атрибута
Я работаю над созданием змеи для анализа вызова трио de novo. У меня есть следующие входные файлы в формате:
Trio1_P, Trio1_M, Trio1_F
Trio2_P, Trio2_M, Trio2_F ..etc
(_P = proband, _M = mother, _F = father)
В моем змеемейке я определяю следующие подстановочные знаки:
sample = ['Trio1_P', 'Trio1_M', 'Trio1_F', 'Trio2_P', 'Trio2_M', 'Trio2_F'...]
trio = ['Trio1', 'Trio2'...]
Для первых 10 правил я использую
sample
подстановочный знак для базовой обрезки, выравнивания, вызова вариантов и т. д. Все это было выполнено успешно. Для моих следующих нескольких правил мне нужно, чтобы входы были связаны тройкой и дифференцировались суффиксами _P, _M, _F. В моем правиле all, когда я расширяю правило с помощью подстановочного знака, я обнаруживаю, что «объект« Подстановочные знаки »не имеет атрибута« образец »». Понятия не имею, почему snakemake столкнулся с этой ошибкой.
Правило с использованием trio wilcard:
rule GenomicsDBImport:
input:
proband = 'HaplotypeCaller/{trio}' + config['probandsuff'] + '.g.vcf.gz',
mother = 'HaplotypeCaller/{trio}' + config['mothersuff'] + '.g.vcf.gz',
father = 'HaplotypeCaller/{trio}' + config['fathersuff'] + '.g.vcf.gz'
output:
directory('GenomicsDBImport/{trio}')
params:
reference = config['reference'],
workDir = config['workDir'] + '/GenomicsDBImport/{trio}'
shell:
'gatk --java-options "-Xmx10g -Xms10g" GenomicsDBImport '
'-V {input.proband} '
'-V {input.father} '
'-V {input.mother} '
'--genomicsdb-workspace-path {params.workDir} '
'--consolidate true '
'-L interval.list'
rule all:
input:
expand('GenomicsDBImport/{trio}', trio=trios)
Вещи, которые я пробовал:
а. Правило все раскрывается как с образцами, так и с тремя подстановочными знаками
б. Определение глобальных wildcard_constraints
wildcard_constraints:
trio='[a-zA-Z0-9]+'
sample='\w+'
Выполнение работы с
--debug-dag
flag производит это, как и ожидалось, только правило GenomicsDBImport и распознает
trio
подстановочный знак:
...
candidate job GenomicsDBImport
wildcards: trio=Trio9
selected job GenomicsDBImport
wildcards: trio=Trio9
file GenomicsDBImport/Trio9:
Producer found, hence exceptions are ignored.
selected job all
wildcards:
file None:
Producer found, hence exceptions are ignored.
Using shell: /usr/bin/bash
Provided cluster nodes: 50
Job counts:
count jobs
44 GenomicsDBImport
1 all
45
Select jobs to execute...
Полное сообщение об ошибке:
[Sat Jan 1 19:00:32 2022]
rule GenomicsDBImport:
input: HaplotypeCaller/Trio40_P.g.vcf.gz, HaplotypeCaller/Trio40_M.g.vcf.gz, HaplotypeCaller/Trio40_F.g.vcf.gz
output: GenomicsDBImport/Trio40
jobid: 35
wildcards: trio=Trio40
gatk --java-options "-Xmx10g -Xms10g" GenomicsDBImport -V HaplotypeCaller/Trio40_P.g.vcf.gz -V HaplotypeCaller/Trio40_F.g.vcf.gz -V HaplotypeCaller/Trio40_M.g.vcf.gz --genomicsdb-workspace-path /project/rsubrama_477/riya/VariantCalling/GenomicsDBImport/Trio40 --consolidate true -L /project/rsubrama_477/riya/VariantCalling/interval.list
Traceback (most recent call last):
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/__init__.py", line 694, in snakemake
success = workflow.execute(
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/workflow.py", line 1017, in execute
success = scheduler.schedule()
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/scheduler.py", line 488, in schedule
self.run(runjobs)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/scheduler.py", line 499, in run
executor.run_jobs(
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/executors/__init__.py", line 136, in run_jobs
self.run(
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/executors/__init__.py", line 939, in run
jobscript = self.get_jobscript(job)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/executors/__init__.py", line 731, in get_jobscript
f = job.format_wildcards(self.jobname, cluster=self.cluster_wildcards(job))
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/executors/__init__.py", line 820, in cluster_wildcards
return Wildcards(fromdict=self.cluster_params(job))
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/executors/__init__.py", line 801, in cluster_params
cluster[key] = job.format_wildcards(value)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/jobs.py", line 840, in format_wildcards
return format(string, **_variables)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/site-packages/snakemake/utils.py", line 414, in format
return fmt.format(_pattern, *args, **variables)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/string.py", line 161, in format
return self.vformat(format_string, args, kwargs)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/string.py", line 165, in vformat
result, _ = self._vformat(format_string, args, kwargs, used_args, 2)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/string.py", line 205, in _vformat
obj, arg_used = self.get_field(field_name, args, kwargs)
File "/home1/rsverma/.conda/envs/snakemake/lib/python3.9/string.py", line 276, in get_field
obj = getattr(obj, i)
AttributeError: 'Wildcards' object has no attribute 'sample'
Спасибо за любую помощь / понимание!