首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snakemake -强制

Snakemake -强制
EN

Stack Overflow用户
提问于 2019-08-16 20:45:21
回答 1查看 1K关注 0票数 5

我试图使用snakemake从RNA-seq管道构建DAG或规则图,结果是图形生成了错误消息。“error::文件”附近第1行的语法错误。

该错误可以通过注释掉两个没有可见语法错误的打印命令来纠正。我已经尝试过将脚本从UTF-8转换为Notepad++中的Ascii。Graphviz似乎与这两个特定的print语句有问题,因为管道脚本中还有其他print语句。尽管错误很容易纠正,但仍然很烦人,因为我希望同事能够为他们的出版物构建这些图表,并且打印语句会告诉他们工作流中正在发生的事情。我的管道包括一个snakefile和多个规则文件,以及一个配置文件。如果违规行在Snakefile中被注释掉,那么graphviz将与规则脚本中的另一行发生问题。

代码语言:javascript
复制
#######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')

-规则图\ -Tpdf > dag.pdf应该会产生一个pdf输出,显示snakemake工作流,但是如果这两行没有注释掉,则会导致错误::语法错误出现在第1行附近。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-16 21:11:06

要了解正在发生的事情,请仔细查看生成dag.pdf的命令。

尝试使用命令的第一部分:

代码语言:javascript
复制
snakemake --forceall --rulegraph

那有什么用?它以文本形式打印出dag。

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

代码语言:javascript
复制
dot -Tpdf > dag.pdf

这部分制作了实际的pdf从文本,是‘管道’和存储在dag.pdf中。问题是,当您的snakefile生成print语句时,这些打印也会“管道”到命令的后半部分,这会干扰dag.pdf的生成。

我如何解决这个问题以便能够打印,同时也能够生成守护进程的一种有点麻烦的方法是使用snakemake的日志记录功能。这不是一种记录在案的方式,也有点刺耳,但对我来说效果很好:

代码语言:javascript
复制
from snakemake.logging import logger

logger.info("your print statement here!")
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57530914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档