问题标签 [snakemake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
385 浏览

python-3.x - 蛇形 LSF 问题

我有一个在命令行中运行良好的管道

我希望能够在集群上使用它。该管道采集样本(在配置文件中指定),并运行几个处理步骤 - 这是一个 RNA-Seq 管道。我尝试使用这两种不同的方式提交到集群

第一次尝试

第二次尝试

产生以下输出

提供的集群节点:48
作业计数:
count jobs
1 all
2 collat​​e_barcodes 2
correct_counts
2 count_reads
2 dedup_counts
2 extract_gz_samples
2 mark_duplicaticates
2 move_bc
2 run_cutadapt
2 star_mapping
19
rule extract_gz_samples:
输入:cluster_fastq/Zelzer_M_Spindle_M_1.R1.fastq.gz/Spindle_Mq_M R2.fastq.gz
输出:cluster_fastq/Zelzer_M_Spindle_M_1.R1.fastq、cluster_fastq/Zelzer_M_Spindle_M_1.R2.fastq
通配符:sample=cluster_fastq/Zelzer_M_Spindle_M_1
内存预留为(MB):2048
内存限制为(MB):2048
规则extract_gz_samples:
输入:cluster_fastq/WT_M_DT_T_393.R1.fastq.gz,cluster_fastq/WT_M_DT_T_393.R2.fastq.gz
输出:cluster_fastq/WT_M_DT_T_393.R1.fastq, cluster_fastq/WT_M_DT_T_393.R2.fastq
通配符:sample=cluster_fastq/WT_M_DT_T_393
内存预留为 (MB):2048
内存限制为 (MB):2048
最多等待 5 秒丢失文件。
线程 Thread-1 中的异常:
回溯(最后一次调用):
文件“/apps/RH6U4/python/3.5.2/lib/python3.5/site-packages/snakemake/dag.py”,第 257 行,在 check_and_touch_output
wait_for_files(扩展输出,latency_wait=wait)
文件“/apps/RH6U4/python/3.5.2/lib/python3.5/site-packages/snakemake/io.py”,第 341 行,在 wait_for_files
latency_wait,“\n”.join(get_missing())))
OSError:5 秒后丢失文件:
cluster_fastq/Zelzer_M_Spindle_M_1.R1.fastq
cluster_fastq/Zelzer_M_Spindle_M_1.R2.fastq

在处理上述异常的过程中,又出现了一个异常:

Traceback(最近一次调用最后):
文件“/apps/RH6U4/python/3.5.2/lib/python3.5/threading.py”,第 914 行,在 _bootstrap_inner
self.run()
文件“/apps/RH6U4/python /3.5.2/lib/python3.5/threading.py”,第 862 行,在运行 self._target(*self._args, **self._kwargs)
文件“/apps/RH6U4/python/3.5.2/lib /python3.5/site-packages/snakemake/executors.py”,第 517 行,在 _wait_for_jobs self.finish_job(active_job.job)
文件“/apps/RH6U4/python/3.5.2/lib/python3.5/site- packages/snakemake/executors.py”,第 426 行,finish_job
super().finish_job(job, upload_remote=False) 文件“/apps/RH6U4/python/3.5.2/lib/python3.5/site-packages/snakemake /executors.py”,第 153 行,在 finish_job 中
super().finish_job(job, upload_remote=upload_remote) 文件“/apps/RH6U4/python/3.5.2/lib/python3.5/site-packages/snakemake/executors.py”,第 111 行,在 finish_job
self.dag .check_and_touch_output(job, wait=self.latency_wait)
文件“/apps/RH6U4/python/3.5.2/lib/python3.5/site-packages/snakemake/dag.py”,第 259 行,在 check_and_touch_output 中
引发 MissingOutputException(str (e), rule=job.rule)
snakemake.exceptions.MissingOutputException:5秒后丢失文件:
cluster_fastq/Zelzer_M_Spindle_M_1.R1.fastq
cluster_fastq/Zelzer_M_Spindle_M_1.R2.fastq

^C^H^C根据用户请求终止进程。
完成当前正在运行的作业后将退出。
删除失败作业 extract_gz_samples 的输出文件,因为它们可能已损坏:
cluster_fastq/Zelzer_M_Spindle_M_1.R1.fastq、cluster_fastq/Zelzer_M_Spindle_M_1.R2.fastq
删除失败作业 extract_gz_samples 的输出文件,因为它们可能已损坏:
cluster_fastq/WT_M_DT_T_393.R1.fastq、cluster_fastq /WT_M_DT_T_393.R2.fastq

此时,程序似乎卡住了(请参阅^C^H^C,我的休息) - 如果我使用 (在另一个会话中)检查作业bjobs,队列中没有作业。

知道为什么会发生这种情况以及如何调试它吗?

0 投票
0 回答
375 浏览

snakemake - Snakemake 解复用的最佳实践

我有一个关于最佳实践的问题。具体来说,关于从 illumina 测序中解复用读取的最佳蛇形模式。我们的工作流程需要解复用多个测序通道,然后将它们组合在一个分析中。显然,我们知道泳道和样品名称,但是样品名称在泳道之间并不相同。只有一条车道,可以执行以下操作:

但是,对于多个通道,我一直想将函数用作输出规则。以下内容如何转化为可能的东西:

如果之前已经回答过这个问题,或者如果我遗漏了一些明显的方法,请原谅我。

干杯,凯文

0 投票
1 回答
1985 浏览

python - 当不需要某些特定的通配符组合时,如何在snakemake中使用扩展?

假设我有以下文件,我想使用 snakemake 自动对其进行一些处理:

以下蛇形expand文件用于确定所有潜在的最终结果文件:

执行上面的snakefile会导致如下错误:

该错误的原因是在后台expand使用itertools.product生成通配符组合,其中一些恰好对应于丢失的文件。

如何过滤掉不需要的通配符组合?

0 投票
1 回答
169 浏览

snakemake - 优雅地处理工作流程中数据不足的样本?

我已经建立了一个 Snakemake 管道,用于对来自我们实验室的浅鸟枪宏基因组学样本进行一些简单的 QC 和分析。

当具有少量数据的样本作为输入传递时,管道中的一些工具会失败或出错——但这有时不能从原始输入数据中得知,作为中间过滤步骤(例如适配器修剪和宿主基因组移除)可以删除不同数量的读取。

理想情况下,我希望能够通过对某些输入规则进行某种检查来处理这些情况,这可以评估输入文件中的读取次数并选择是否继续工作流图的该部分。有没有人成功实施过这样的事情?

非常感谢,-乔恩

0 投票
0 回答
142 浏览

geany - 为 Geany“文件类型”定义函数

我使用 Geany 作为我的文本编辑器。我已经开始研究snakemake,从语法的角度来看,它是经过一些修改的 Python。Python 函数定义为:

snakemake 以类似的方式添加“规则”的定义:

Geany 在侧边栏中展示了所有 Python 函数,但我也希望它展示所有规则。但是,我无法在文件 geany/filetypes.python 中找到如何定义函数的关键字(我想添加关键字rule)。

有人有什么主意吗?

0 投票
0 回答
618 浏览

snakemake - 在蛇形通配符中使用正则表达式

我在蛇形通配符中使用正则表达式,但遇到了一个我不明白的错误。

在这个缩短的示例中,它可以工作:

在此示例中,它不会:

我附上了我收到的错误消息的屏幕截图。谢谢你的帮助。

这是错误消息的屏幕截图。

0 投票
1 回答
258 浏览

snakemake - 为蛇形规则生成参数化数量的输出文件

我的工作流程需要在两个不同的集群上执行。第一个集群根据资源可用性将作业调度到节点。第二个集群为给定作业保留整个节点,并要求其用户在其作业脚本中有效地使用这些多个核心。对于第二个集群,在后台提交较少数量的作业和堆栈进程是公认的做法。

对于一个玩具示例,假设我要创建四个文件:

这可以与每个样本一个作业并行运行。

除了每个创建一个文件的四个作业之外,我还希望能够有两个作业每个创建两个文件。

我尝试了一些想法,但还没有走得很远。以下工作流程与上述工作流程相同,只是它创建批次并将作业作为每个批次中的后台进程启动:

然而,这仍然创造了四个工作岗位!

我还在相关主题的邮件列表中看到了 Karel Brinda 的回复。他指出了他自己的项目,他在 python 中进行动态规则创建。接下来我将尝试这些方面的东西。

理想的解决方案是生成一组输出文件的单个规则,但能够批量生成这些文件。批次数将由配置参数设置。

这里有没有人遇到过类似的情况?任何想法或想法将不胜感激!

0 投票
1 回答
230 浏览

python - 在 Snakemake 中全局加载 R 库

我目前正在使用 Snakemake 构建我的 NGS 管道,并且在加载 R 库时遇到了问题。我的规则调用的几个脚本需要加载 R 库。由于我发现无法全局加载它们,它们被加载到 R 脚本中,当我在几个单独的输入文件上运行相同的规则集时,这当然是多余的计算时间。

有没有办法保留一个 R 会话来执行多个规则并预先加载所有必需的库?

干杯,祖普

0 投票
1 回答
1921 浏览

snakemake - 如何获取工作目录路径?

我想知道如何管理我的 Snakefiles 中的路径。假设我有这个配置:

我以这种方式执行我的工作流程:

我知道我可以使用全局变量获得我的 Snakefile 的路径workflow.snakefile,但我也想获得:

  • 我的配置文件的路径
  • 我正在执行我的蛇文件的路径,例如current_dir

如何做到这一点?Snakemake 中是否还有其他我不知道的全局变量?

谢谢

0 投票
2 回答
769 浏览

python - 批处理:GNU-make、Snakemake 还是什么?

我需要通过将目录中的一组文件传递给 matlab 或 python 脚本来处理它们。

对于目录中的每个输入文件 FileName.IN,我需要获取一个输出文件 FileName.OUT。

解决方案是 Python 还是 bash 脚本并不重要。

为了实现我的目标,我尝试了 GNU Make(或 Python Snakemake),但是我有点坚持。看起来我可以说 GNU Make 来做: “嘿,对于每个输出(目标)文件 FileName.out 搜索相应的 FileName.IN(先决条件)”

但是,如前所述,我想做的恰恰相反。

  • make(或)是snakemake正确的选择吗?
  • 你还有什么建议?

我的makefile代码看起来像这样,但它不起作用(我是 GNU make 的新手):