Snakemake --forceall --dag导致mysterius错误:<stdin>:Graphvis中'File'附近的第1行语法错误

时间:2019-08-16 20:45:21

标签: syntax-error graphviz dot snakemake rna-seq

我使用snakemake从RNA-seq管道构建DAG或规则图的尝试导致来自graphviz的错误消息。 '错误::'文件'附近第1行的语法错误。

可以通过注释掉两个没有明显语法错误的打印命令来纠正该错误。我尝试在Notepad ++中将脚本从UTF-8转换为Ascii。 Graphviz似乎对这两个特定的打印语句有问题,因为管道脚本中还有其他打印语句。即使可以轻松纠正错误,也仍然很烦人,因为我希望同事能够轻松地为他们的出版物构建这些图表,并且打印语句可以告知他们工作流程中正在发生的事情。我的管道包含一个蛇文件和多个规则文件以及一个配置文件。如果在Snakefile中将有问题的行注释掉,则graphviz会在规则脚本中出现另一行问题。

#######Snakefile
!/usr/bin/env Python
import os
import glob
import re
from os.path import join
import argparse
from collections import defaultdict
import fastq2json
from itertools import chain, combinations
import shutil
from shutil import copyfile
#Testing for sequence file extension
directory = "."
MainDir = os.path.abspath(directory) + "/"
## build the dictionary with full path for each for sequence files
fastq=glob.glob(MainDir+'*/*'+'R[12]'+'**fastq.gz')
if len(fastq) > 0 :
    print('Sequence file extensions have fastq')
    os.system('scripts/Move.sh')
    fastq2json.fastq_json(MainDir)
else :
    print('File extensions are good')
######Rule File
if not config["GroupdFile"]:
    os.system('Rscript scripts/Table.R')
    print('No GroupdFile provided')

snakemake --forceall --rulegraph |点-Tpdf> dag.pdf应该会导致pdf输出显示snakemake工作流程,但是如果未注释掉这两行,则会导致Error::1行附近的语法错误

1 个答案:

答案 0 :(得分:2)

要了解发生了什么,请仔细查看生成dag.pdf的命令。

尝试命令的第一部分:

snakemake --forceall --rulegraph

这是做什么的?它以文本形式打印 dag

通过使用|符号,您可以“打印”(传递)此打印到命令的下一部分:

dot -Tpdf > dag.pdf

这部分从'piped'文本中生成实际的pdf,并存储在dag.pdf中。问题是,当您的snakefile生成打印语句时,这些打印内容也会被“管道传输”到命令的后半部分,这会干扰dag.pdf的生成。

我如何解决该问题以进行打印,但又能够生成dag的一种有点古怪的方式是使用snakemake的日志记录功能。这不是有据可查的方法,有点黑,但是对我来说确实很好:

from snakemake.logging import logger

logger.info("your print statement here!")