首页 > 解决方案 > Snakemake 无效语法

问题描述

我对蛇精越来越疯狂了。我尝试了所有类型的方法,使用配置文件等,但没有任何效果,我无法准确理解如何逐行检测错误检查。

HISAT2_INDEX_PREFIX = "/media/jim/Elements/Happy/index/genome_chromosomes"

SAMPLES, *_=glob_wildcards('/media/jim/Elements/Happy/test/tissue/trimmed/{sample}_1.fastq.gz')

rule all:
    input: expand("{sample}.bam", sample=SAMPLES)

rule hisat2:
    input:
        hisat2_index=expand(f"{HISAT2_INDEX_PREFIX}.{{ix}}.ht2l", ix=range(1, 8)),
        fastq1="/media/jim/Elements/Happy/test/tissue/trimmed/{sample}_1.fastq.gz",
        fastq2="/media/jim/Elements/Happy/test/tissue/trimmed/{sample}_2.fastq.gz"
    output:
        bam = "{sample}.bam",
        txt = "{sample}.txt",
    log: "/snakemake_log.txt"
    threads: 8
    shell:
        "hisat2 -p {threads} -x {HISAT2_INDEX_PREFIX}"
        " -1 {input.fastq1} -2 {input.fastq2}  --summary-file {output.txt} |"
        "samtools sort -@ {threads} -o {output.bam}"

现在我得到的错误是:

SyntaxError in line 11 of /media/jim/Elements/Happy/test/Snakefile:
invalid syntax

错误可能是一些小东西,但我不明白是哪个......问题是我有很多组织,所以我必须至少做这个简单的例子......

标签: snakemake

解决方案


有几件事...

  • log: "/snakemake_log.txt"应该包含与其他指令相同的通配符。例如log: "/{sample}.snakemake_log.txt",否则snakemake 不知道在哪里编写示例特定日志

  • 我认为f"..."在 python 3.6 中已经引入了字符串格式化。也许你有 python < 3.6?


推荐阅读