我有一个用Snakemake编写的分析生物测序数据的工作流程。工作流期望所有的数据文件都被组织起来,以便每个原始读取文件都以分析类型(RNASeq、dnaseq等)开始,并且在工作流生成的所有文件中都保持这种文件名约定。在
我有一个规则来对齐除了RNASeq之外的每个分析的数据读取,还有一个只应用于RNASeq数据的不同规则。我在设置这些规则时遇到了困难,以便snakemake知道哪些文件要使用哪个。在
在RNASeq规则中,我有这样一个:
wildcard_constraints: library='RNASeq_.+'
这可以确保RNASeq库使用该规则。但是,对于其他分析的不明确规则,我仍然得到一个错误,因此我认为我需要约束其他规则中的通配符。我试过了:
^{pr2}$要说匹配没有RNASeq的任何内容,但是如果我在python解释器中尝试它,snakemake似乎无法将任何内容与这个regex匹配。我也试过其他方法,比如“[^R][^N][^A]”,但什么都没用。在
由于这些正则表达式在我对字符串进行手动尝试时起作用,所以我认为snakemake应用正则表达式的方式存在缺陷,或者我不了解snakemake如何使用它们。我假设它只是“如果这个正则表达式与通配符字符串匹配,使用这个规则。如果没有,就不要用这个规则。”
如果您不想让您的行以RNASeq或DNaseSeq开头,可以这样做
我相信以下是你想要达到的目标:
使用它(snakemake 4.6.0,python 3.6):
^{pr2}$我觉得你在做什么:
^{3}$使用它:
以下是如何修复它:
使用它:
但是由于硬编码
{3}
,它不是很通用:以下内容是基于我对
snakemake.io.regex
的简要阅读,可能包含错误一般来说,给出这样的规则:
以及这样的命令行调用:
如果满足以下条件,将执行规则
some_rule
返回匹配项(假设其他检查通过(例如歧义、循环dag等))。在
有趣的是,
$
被附加到模式中,但是^
没有被加在前面。在这种行为与我最初的想法不同,我最初的想法是这样的(这将允许在你的}在你的
^
和{wildcard_constraints
中使用):相关问题 更多 >
编程相关推荐