Объект 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'

Спасибо за любую помощь / понимание!

0 ответов

Другие вопросы по тегам