Как назначить несколько путей из config.yaml? - PullRequest
0 голосов
/ 08 ноября 2019

Я хотел бы использовать snakemake для анализа моих наборов данных. Поскольку я собираюсь работать с различными организмами, я бы хотел, чтобы змеиный мастер создал папку для каждого из них при индексации генома.

Я создал следующую структуру в моем config file

organism:
  Dmel:
    fasta: "ftp://ftp.ensembl.org/pub/current_fasta/drosophila_melanogaster/dna/Drosophila_melanogaster.BDGP6.22.dna.toplevel.fa.gz"
    gtf: "ftp://ftp.ensembl.org/pub/current_gtf/drosophila_melanogaster/Drosophila_melanogaster.BDGP6.22.98.gtf.gz"
  Dpse:
    fasta: "ftp://ftp.ensemblgenomes.org/pub/current/metazoa/fasta/drosophila_pseudoobscura/dna/Drosophila_pseudoobscura.Dpse_3.0.dna.toplevel.fa.gz"
    gtf: "ftp://ftp.ensemblgenomes.org/pub/current/metazoa/gtf/drosophila_pseudoobscura/Drosophila_pseudoobscura.Dpse_3.0.45.gtf.gz"

и хотел бы попытаться вызвать эти ссылки в моем rule star_index в моем snakemake файле, например:

rule star_index:
   input:
          fasta="genome/{org}.fa",
          gtf="genome/{org}.gtf"
   output:
          directory("genome/{org}/starIndex/")
   threads: 16
   params:
         prefix = lambda wildcards: "genome/{org}/starIndex".format(org=wildcards.organism) ## wildcards.organism # {config['organism']}
   shell:
          "mkdir -p {output} && "
          "STAR --runThreadN {threads} "
          "--outFileNamePrefix {output} "
          "--runMode genomeGenerate "
          "--genomeDir {output} "
          "--limitGenomeGenerateRAM {config[RAM]} "
          "--genomeSAindexNbases {config[SAindex]} "
          "--genomeFastaFiles {input.fasta} "
          "--sjdbGTFfile {input.gtf} "
          "--sjdbOverhang 100"

Но есть ошибка с подстановочными знаками, которые я не могуВычислять.

При выполнении этого правила я получаю следующую ошибку:

InputFunctionException в строке 51 файла /local/Assa/projects/automation/P135.automation/getGenome_IndexGenome.Snakefile: AttributeError: 'Wildcards'У объекта нет атрибута «организм». Подстановочные знаки: org = Dmel

Я знаю, что проблема в элементе params, потому что, когда я закомментирую эти две строки, скрипт сможет работать.

Что я не понимаю, так это то, почему wildcards.organism не определен.

Буду признателен за любые намеки или идеи. спасибо Асса

1 Ответ

1 голос
/ 08 ноября 2019
AttributeError: 'Wildcards' object has no attribute 'organism' 
Wildcards: org=Dmel

Похоже, что вы полностью прописали organism, а подстановочный знак - org.

params:
         prefix = lambda wildcards: "genome/{org}/starIndex".format(org=wildcards.org)
...