即使在正确完成后,Snakemake 检查点也会抛出(以非零退出代码退出)
Snakemake Checkpoint Throws (exited with non-zero exit code) even after correct completion
我目前 运行 一个 snakemake 检查点,即使在正确完成命令后似乎仍抛出非零退出代码,我不确定如何解决该问题。
以下脚本的目的是解析坐标文件,bed_file
,从 bam 文件中提取所有区域 rna_file
,并最终 assemble 这些区域。代码如下,我的snakemake版本是5.6.0。
#Pull coordinates from a BAM file, and use the command samtools view to extract the corresponding #data, naming the output as the coordinate file, here named "6:25274434-25278245.bam". There are #an unknown number of output files
checkpoint pull_reads_for_BAM:
input:
¦ bed_file = get_lncRNA_file,
¦ rna_file = get_RNA_file
conda:
¦ "envs/pydev_1.yml"
params:
¦ "01.pulled_reads"
output:
¦ directory("01.pulled_reads/{tissue}")
shell:"""
mkdir 01.pulled_reads/{wildcards.tissue}
store_regions=$(cat {input.bed_file} | awk -F'\t' '{{ print ":" "-" }}')
for i in $store_regions ; do
¦ samtools view -b -h {input.rna_file} ${{i}} > 01.pulled_reads/{wildcards.tissue}/${{i}}.bam ;
done
echo "This completed fine"
"""
rule samtools_sort:
input:
¦ "01.pulled_reads/{tissue}/{i}.bam"
params:
¦ "{i}"
output:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam"
shell:
¦ "samtools sort -T sorted_reads/{params}.tmp {input} > {output}"
rule samtools_index:
input:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam"
output:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam.bai"
shell:
"samtools index {input}"
rule string_tie_assembly:
input:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam"
output:
¦ "02.string_tie_assembly/{tissue}/{i}_assembly.gtf"
shell:
"stringtie {input} -f 0.0 -a 0 -m 50 -c 3.0 -f 0.0 -o {output}"
def trigger_aggregate(wildcards):
checkpoint_output = checkpoints.pull_reads_for_BAM.get(**wildcards).output[0]
x = expand("02.string_tie_assembly/{tissue}/{i}_assembly.merged.gtf",
¦ tissue = wildcards.tissue,
¦ i=glob_wildcards(os.path.join(checkpoint_output, "{i}.bam")).i)
return x
#Aggregate function that triggers rule
rule combine_all_gtf_things:
input:
¦ trigger_aggregate
output:
¦ "03.final_stuff/{tissue}.merged.gtf"
shell:"""
cat {input} > {output}
"""
在命令 运行 完成后,snakemake returns (exited with non-zero exit code)
出于某种神秘原因。我可以看到文件中生成的输出,它看起来是正确的,所以我不确定它为什么会抛出这个错误。
我生成的检查点是仿照此生成的:
https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html
尚未回答的相关问题:
Snakemake checkpoint (exited with non-zero exit code)
不确定这是否是一个问题,但如果在执行 mkdir 之前目录存在或 01.pulled_reads
不存在,mkdir 01.pulled_reads/{wildcards.tissue}
将失败。
尝试将 -p
选项添加到 mkidr,即 mkdir -p 01.pulled_reads/{wildcards.tissue}
这个问题似乎是由于 {tissue}
中的通配符被设置为目录引起的。至于为什么这会引发非零退出状态,我不确定。只需将 {tissue}_dir
附加到上面的路径即可解决此问题。
可在此处找到有关此问题的更多信息:
https://bitbucket.org/snakemake/snakemake/issues/1303/snakemake-checkpoint-throws-exited-with
我目前 运行 一个 snakemake 检查点,即使在正确完成命令后似乎仍抛出非零退出代码,我不确定如何解决该问题。
以下脚本的目的是解析坐标文件,bed_file
,从 bam 文件中提取所有区域 rna_file
,并最终 assemble 这些区域。代码如下,我的snakemake版本是5.6.0。
#Pull coordinates from a BAM file, and use the command samtools view to extract the corresponding #data, naming the output as the coordinate file, here named "6:25274434-25278245.bam". There are #an unknown number of output files
checkpoint pull_reads_for_BAM:
input:
¦ bed_file = get_lncRNA_file,
¦ rna_file = get_RNA_file
conda:
¦ "envs/pydev_1.yml"
params:
¦ "01.pulled_reads"
output:
¦ directory("01.pulled_reads/{tissue}")
shell:"""
mkdir 01.pulled_reads/{wildcards.tissue}
store_regions=$(cat {input.bed_file} | awk -F'\t' '{{ print ":" "-" }}')
for i in $store_regions ; do
¦ samtools view -b -h {input.rna_file} ${{i}} > 01.pulled_reads/{wildcards.tissue}/${{i}}.bam ;
done
echo "This completed fine"
"""
rule samtools_sort:
input:
¦ "01.pulled_reads/{tissue}/{i}.bam"
params:
¦ "{i}"
output:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam"
shell:
¦ "samtools sort -T sorted_reads/{params}.tmp {input} > {output}"
rule samtools_index:
input:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam"
output:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam.bai"
shell:
"samtools index {input}"
rule string_tie_assembly:
input:
¦ "01.pulled_reads/{tissue}/{i}.sorted.bam"
output:
¦ "02.string_tie_assembly/{tissue}/{i}_assembly.gtf"
shell:
"stringtie {input} -f 0.0 -a 0 -m 50 -c 3.0 -f 0.0 -o {output}"
def trigger_aggregate(wildcards):
checkpoint_output = checkpoints.pull_reads_for_BAM.get(**wildcards).output[0]
x = expand("02.string_tie_assembly/{tissue}/{i}_assembly.merged.gtf",
¦ tissue = wildcards.tissue,
¦ i=glob_wildcards(os.path.join(checkpoint_output, "{i}.bam")).i)
return x
#Aggregate function that triggers rule
rule combine_all_gtf_things:
input:
¦ trigger_aggregate
output:
¦ "03.final_stuff/{tissue}.merged.gtf"
shell:"""
cat {input} > {output}
"""
在命令 运行 完成后,snakemake returns (exited with non-zero exit code)
出于某种神秘原因。我可以看到文件中生成的输出,它看起来是正确的,所以我不确定它为什么会抛出这个错误。
我生成的检查点是仿照此生成的: https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html
尚未回答的相关问题: Snakemake checkpoint (exited with non-zero exit code)
不确定这是否是一个问题,但如果在执行 mkdir 之前目录存在或 01.pulled_reads
不存在,mkdir 01.pulled_reads/{wildcards.tissue}
将失败。
尝试将 -p
选项添加到 mkidr,即 mkdir -p 01.pulled_reads/{wildcards.tissue}
这个问题似乎是由于 {tissue}
中的通配符被设置为目录引起的。至于为什么这会引发非零退出状态,我不确定。只需将 {tissue}_dir
附加到上面的路径即可解决此问题。
可在此处找到有关此问题的更多信息: https://bitbucket.org/snakemake/snakemake/issues/1303/snakemake-checkpoint-throws-exited-with