python输入规则_snakemake:规则的可选输入

我想知道是否有一种方法可以在规则中有可选的输入。

一个例子是排除未成对读取以进行对齐(或仅具有未成对读取)。伪规则示例:rule hisat2_align:

input:

rU: lambda wildcards: ('-U '+ read_files[wildcards.reads]['unpaired']) if wildcards.read_type=='trimmed' else '',

r1: lambda wildcards: '-1 '+ read_files[wildcards.reads]['R1'],

r2: lambda wildcards: '-2 '+ read_files[wildcards.reads]['R2']

output:

'aligned.sam'

params:

idx: 'index_prefix',

extra: ''

shell:

'hisat2 {params.extra} -x {params.idx} {input.rU} {input.r1} {input.r2}'

在这里,没有修剪读取(rU='')将导致丢失输入文件错误。

我可以通过一个带有调整后的input/shell语句的重复规则或通过params来处理输入(我相信还有其他方法)。我正努力处理这个问题,这样这个步骤就可以通过一个蛇形包装器(目前是一个定制的)来运行。在

我见过的最接近的例子是https://groups.google.com/d/msg/snakemake/qX7RfXDTDe4/XTMOoJpMAAAJ

以及约翰尼斯的回答。但是我们有一个条件赋值(例如input: 'a' if condition else 'b'),而不是可选的。在

如有任何帮助/指导,我们将不胜感激。在

编辑

为了澄清潜在的输入:

1)单独使用单端读取并在rU中声明它们。读取示例的文件可能是

^{pr2}$

在本例中,r1和{}可能是空列表,或者根本没有在规则中声明。在

2)使用成对的结束读取并在r1和r2中声明它们。读取示例的文件可能是sample1_paired_1_R1.fastq.gz

sample1_paired_1_R2.fastq.gz

sample1_paired_2_R1.fastq.gz

sample1_paired_2_R2.fastq.gz

在本例中,“rU”可能是空列表,或者根本没有在规则中声明。在

3)同时使用成对和单端读取(例如,一些线对断开的trimmomatic输出)。读取示例的文件可能是sample1_paired_1_R1.fastq.gz

sample1_paired_1_R2.fastq.gz

sample1_paired_2_R1.fastq.gz

sample1_paired_2_R2.fastq.gz

sample1_unpaired_1_R1.fastq.gz

sample1_unpaired_1_R2.fastq.gz

sample1_unpaired_2_R1.fastq.gz

sample1_unpaired_2_R2.fastq.gz

作为解决方案。最后我使用了@timofeyprodanov方法。我不知道空名单可以用来做这个。谢谢你的回答和评论!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值