gpt4 book ai didi

Snakemake 无法处理很长的命令行?

转载 作者:行者123 更新时间:2023-12-03 23:43:55 25 4
gpt4 key购买 nike

这是一个很奇怪的问题。
当我的 {input}rule 中指定部分是 <200 个文件的列表,snakemake 工作正常。
但是当{input}有超过 500 个文件,snakemake 刚刚退出并留言 (one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!) .完整的日志没有提供任何错误消息。
日志见:https://github.com/snakemake/snakemake/files/5285271/2020-09-25T151835.613199.snakemake.log
有效的规则是(注意 input 上限为 200 个文件):

rule combine_fastq:
input:
lambda wildcards: samples.loc[(wildcards.sample), ["fq"]].dropna()[0].split(',')[:200]
output:
"combined.fastq/{sample}.fastq.gz"
group: "minion_assemble"
shell:
"""
echo {input} > {output}
"""
失败的规则是:
rule combine_fastq:
input:
lambda wildcards: samples.loc[(wildcards.sample), ["fq"]].dropna()[0].split(',')
output:
"combined.fastq/{sample}.fastq.gz"
group: "minion_assemble"
shell:
"""
echo {input} > {output}
"""
我的问题也在 GitHub 上发布: https://github.com/snakemake/snakemake/issues/643 .

最佳答案

我支持 Maarten 的回答,因为您遇到了 shell 限制的许多文件;蛇形只是在帮助您识别问题方面做得很差。
根据您引用的问题,您似乎正在使用 cat 来组合所有文件。也许跟随答案 here有助于:

rule combine_fastq_list:
input:
lambda wildcards: samples.loc[(wildcards.sample), ["fq"]].dropna()[0].split(',')
output:
temp("{sample}.tmp.list")
group: "minion_assemble"
script:
with open(output[0]) as out:
out.write('\n'.join(input))

rule combine_fastq:
input:
temp("{sample}.tmp.list")
output:
'combined.fastq/{sample}.fastq.gz'
group: "minion_assemble"
shell:
'cat {input} | ' # this is reading the list of files from the file
'xargs zcat -f | '
'...'
希望它能让你走上正轨。
编辑
第一个选项为每个输入文件分别执行您的命令。对整个输入列表执行一次命令的另一个选项是:
rule combine_fastq:
...
shell:
"""
command $(< {input}) ...
"""

关于Snakemake 无法处理很长的命令行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64073269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com