python - Snakemake 检查点(以非零退出代码退出)
问题描述
我需要在 Snakemake 中创建一个检查点,在染色体分散的步骤中使用 GATK 调用拷贝数变体:
rule all:
input:
'aggregated/chr1'
# step that gives non-zero exit code error
checkpoint scattering:
input:
interval = 'gcfiltered_{chr}.interval_list'
output:
directory('scatter_{chr}')
shell:
'mkdir -p {output} && '
'gatk --java-options "-Xmx8G" IntervalListTools '
'--INPUT {input.interval} '
'--SUBDIVISION_MODE INTERVAL_COUNT '
'--SCATTER_CONTENT 600 '
'--OUTPUT {output}'
def aggregate_scatter(wildcards):
checkpoint_output = checkpoints.scattering.get(**wildcards).output[0]
return expand('scatter_{chr}/{i}/scattered.interval_list',
chr=wildcards.chr,
i=glob_wildcards(os.path.join(checkoint_output, '{i}/scattered.interval_list')).i)
# dummy rule to check if scattered files will be aggregated:
rule aggregate:
input:
aggregate_scatter
output:
"aggregated/{chr}"
shell:
"cat {input} > {output}"
但是scattering
规则失败了。(exited with non-zero exit code)
尽管输出是正确产生的,但它会给出错误并删除输出。我尝试添加|| true
,它没有工作。
但是,当我在snakemake 之外运行命令时,它运行良好,退出状态为 0:
mkdir -p scatter_chr1 && gatk --java-options "-Xmx8G" IntervalListTools --INPUT gcfiltered_chr1.interval_list --SUBDIVISION_MODE INTERVAL_COUNT --SCATTER_CONTENT 600 --OUTPUT scatter_chr1
echo $?
我使用 Snakemake 5.5.4 和 GATK 4.1.2.0。输入文件示例(gcfiltered_chr1.interval_list
):
@HD VN:1.6
@SQ SN:chr1 LN:122678785 UR:file:canFam3.fa M5:e4671b339daa96b7f11eb0b68fd999d8
chr1 100000 100999 + .
chr1 101000 101999 + .
chr1 102000 102999 + .
chr1 103000 103999 + .
chr1 104000 104999 + .
chr1 105000 105999 + .
chr1 106000 106999 + .
chr1 107000 107999 + .
chr1 108000 108999 + .
chr1 109000 109999 + .
chr1 110000 110999 + .
chr1 111000 111999 + .
chr1 112000 112999 + .
chr1 113000 113999 + .
chr1 114000 114999 + .
chr1 115000 115999 + .
chr1 116000 116999 + .
chr1 117000 117999 + .
chr1 118000 118999 + .
chr1 119000 119999 + .
chr1 120000 120999 + .
解决方案
推荐阅读
- java - 查找数组的不匹配元素
- asp.net-core - .NET Core 外部访问站点?
- visual-studio-code - 如何为 Chrome 配置 Visual Studio 代码调试器
- c - char 数组是否为空终止符分配了一个额外的空间?
- javascript - 为什么使用 Form.addImageItem() 将图像添加到谷歌表单会导致“无效的数据更新表单”?
- ios - 使用两个 UIPickerViews 的问题 - 第一个有效,第二个无效
- android - 使用 AndroidNetworking.upload() 收到错误请求
- java - 如何阻止 JPA 存储库投影摘录返回多对多关系上的嵌入式列表
- database - ERD 的问题
- c# - 我如何在 linq 中使用 2 条件