问题标签 [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.
snakemake - snakemake - 在一条规则中从多个输入文件中仅输出一个文件
我第一次使用snakemake,以便使用cutadapt、bwa 和GATK(修剪;映射;调用)构建基本管道。我想在目录中包含的每个 fastq 文件上运行这个管道,而不必在蛇文件或配置文件中指定它们的名称或任何内容。我想成功地做到这一点。
前两个步骤(cutadapt 和 bwa / 修剪和映射)运行良好,但我遇到了 GATK 的一些问题。
首先,我必须从 bam 文件生成 g.vcf 文件。我正在使用以下规则执行此操作:
这些规则运作良好。例如,如果我有文件: Cla001d_S281_L001_R1_001.fastq.gz Cla001d_S281_L001_R2_001.fastq.gz
我可以创建一个 bam 文件 ( Cla001d_S281_L001_001.bam
),然后从该 bam 文件创建一个 GVCF 文件 ( Cla001d_S281_L001_001.g.vcf
)。我有很多这样的样本,我需要为每个样本创建一个 GVCF 文件,然后将这些 GVCF 文件合并到一个文件中。问题是我无法提供要合并到以下规则的文件列表:
为了做到这一点,我尝试了几件事,但无法成功。问题是两个规则之间的链接(GATK_raw_calling
并且GATK_merge
应该合并 的输出GATK_raw_calling
)。如果我将输出指定GATK_raw_calling
为以下规则的输入,我无法输出一个文件(输入文件中的通配符无法从输出文件中确定),并且如果我无法在这两个规则之间建立链接我没有将这些文件指定为输入...
有没有办法成功地做到这一点?我认为,困难在于我没有定义名称列表或其他任何东西。
提前感谢您的帮助。
snakemake - Snakemake:包装器命令日志记录
我无法弄清楚如何记录包装器执行的命令。“snakemake -p”和“snakemake -D”都没有向我显示实际运行的命令。
记录通过包装器创建的命令的最佳方法是什么?
干杯,塞布
snakemake - 可能在 Snakefile 中覆盖的默认内存请求?
我有一个包含多个规则的 Snakefile,只有少数需要超过 1 GB/核心才能在集群上运行。该resources
指令对此非常有用,但我找不到设置默认值的方法。我宁愿不必为resources: mem_per_cpu = 1024
不需要超过默认值的每个规则编写。
我意识到我可以__default__
在集群配置文件中使用我想要的东西并覆盖mem_per_cpu
特定规则的值。我犹豫是否这样做,因为内存要求与平台无关,所以我更愿意将它们包含在 Snakefile 本身中。它还会阻止我使用--resources
命令行选项指定本地资源限制。
Snakemake 有一个简单的解决方案可以帮助我吗?谢谢!
snakemake - 如何在snakemake run指令下传递函数
我正在 snakemake 中构建一个工作流,并希望将其中一个规则循环到两个不同的输入源。输入源可以是 source1 或 source1+source2,根据输入,输出目录也会有所不同。由于在同一规则中执行此操作非常复杂,并且我不想创建完整规则的副本,因此我想创建两个具有不同输入/输出但运行相同命令的规则。
有可能完成这项工作吗?我正确解析了 DAG,但作业没有在集群 ( ERROR : bamcov_cmd not defined
) 上完成。下面的示例(两个规则最后使用相同的命令):
这是命令
这是规则
这是可选规则2
snakemake - 用于配对 bwa align 的蛇形 yaml 配置
我想为 bwa 对齐一些数据创建一个简单的蛇形文件。我在使用通配符和输入时遇到问题
配置.yml
这是snakemake文件和bwa规则
这个分析如何使用通配符?或者管理该配置文件的最佳方法是什么?
snakemake - 理解和克服snakemake中的AmbiguousRuleException
我有一个复杂的工作流程,我逐渐扩展。最后一个扩展导致了AmbiguousRuleException
. 我试图在以下示例中重现工作流的关键结构:
上述状态是功能性的。切换(1)
和(4)
取消注释(2)
并(3)
对应于我正在尝试制作的扩展名,并导致以下失败:
似乎snakemake认为results/allthings/all_yes.txt
可以由gather_things
.
为什么?
我怎样才能避免这种情况?
注意:修改的目标(3)
是(4)
同时处理(for , and )compute_md5
的直接输出和三个 ( ) 的联合输出,尽可能根据其他规则的输出定义输入(这会产生变化比显式使用文件名更容易)。gather_things
foo
bar
baz
all
parameters - SnakeMake 中的链式参数
这似乎在 SnakeMake 中用于链接参数。这样做可以吗,还是会在并行环境中引起问题,是否应该使用 PersistentDict 代替?
snakemake - 从 2 个或更多车道进行 bwa 对齐后,snakemake 合并 bam 文件
我尝试使用蛇形制作地图并合并从许多车道获得的一些数据。我有一些问题。我想做的是:
*.gz> 432_L001.sam, 432_L002.sam > 432_L001.sorted.bam,432_L002.sorted.bam> 432.bam
因此,从单位的 fastq 开始,使用样本键的名称创建一个 unic bamfile。
配置.yaml
蛇制造
规则
如果我使用此代码,我总是会出现此错误:
怎么可能解决?
这个通配符有什么问题..??:
lambda 通配符:expand("mapped_reads/bam/{unit}_sorted.bam",unit=config["samples"][wildcards.sample])
bioinformatics - 如何为具有特定版本的 shell 调用的软件编写规则?(例如 Samtools 1.3.1 和 0.1.18)
关于如何考虑可以使用需要(稍微)不同的 shell 调用的软件版本的管道的想法?
有时,在带有conda的版本之间切换,shell 调用是不同的,例如 Samtools 0.1.18 和 Samtools 1.3.1。前缀需要不同的格式。
我已经想到了三种方法,并正在寻找其他建议:
我将在我的 YAML 中添加一个配置变量,用它来设置版本号。有一个条件,使得只包含匹配的版本规则。与我在这里使用软件选择标志的方式类似。
我将在规则中进行版本检测,并相应地更改 shell 调用。在上面的示例中,唯一的区别是添加了“-T”参数。这很简单,但我担心最终我会遇到一种情况,它不仅仅是一个额外的论点。
编写完全独立的规则,规则名称中包含版本,让用户有责任选择正确的版本。这将不可避免地导致模棱两可的冲突,但我可以处理这些。
反思: 我不相信嵌套条件是最好的方法,因为它使维护更加困难,而且真的不是那么优雅。在规则中进行检测并没有那么糟糕,但我不喜欢将控制流推送到规则中的想法(现在它已经从我的管道规则中删除了)。我想避免产生歧义冲突。
我缺少支持功能吗?起初我以为这是Snakemake 的 'Version' 指令,但实际上并不是我想要的。要么,要么我错过了如何使用它。
想法?
支持文档
山姆工具 1.3.1
1.3.1 ---> config["samtools"] + ' sort -no -m ' + str(config["sortMem"]) + ' - -T' + str(log.stdErr)
山姆工具 0.1.18
0.1.18 --> config["samtools"] + ' sort -no -m ' + str(config["sortMem"]) + ' - ' + str(log.stdErr)
不同之处在于 str(log.stdErr) 之前的“-T”。
snakemake - 在哪里报告 SnakeMake 的建议
对 SnakeMake 开发人员的建议应该在哪里发布?
我想提出的建议是:
在 SnakeMake 用户指南网站上指明发布建议的位置。
在 SnakeMake 用户指南网站上指出有关 SnakeMake 的问题应发布在 stackOverflow 上。
(或者他们在那里,我想念他们?)