You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nextflow中截断gzip压缩fastq文件报错141如何解决?

Nextflow实现gzip压缩fastq文件截断的正确方案

错误原因说明

  • 错误码141:本质是管道SIGPIPE信号导致的退出码。head命令取满90万行后会提前终止进程,此时上游还在写入数据的zcat进程会收到SIGPIPE信号,退出码为141。Nextflow执行脚本时默认开启pipefail选项,管道中任意命令返回非0值都会判定整行命令执行失败,因此进程报错退出。
  • 直接用sed -i处理gzip文件的写法完全错误:sed默认无法识别gzip压缩的二进制格式,直接编辑会导致输出文件完全损坏无法使用。

正确进程实现

process TRUNCATE_FASTQ {
    input:
    set val(sample), val(single_end), path(reads) from ch_reads

    output:
    path "truncated_*.fastq.gz" into ch_output

    script:
    def read_files = single_end ? [reads[0]] : reads
    """
    <% read_files.each { read -> %>
    # 处理${read},仅当非141错误码时抛出异常
    zcat ${read} | head -n 900000 | gzip -c > truncated_${read}
    exit_code=\$?
    if [ \$exit_code -ne 0 ] && [ \$exit_code -ne 141 ]; then
        exit \$exit_code
    fi
    <% } %>
    """
}

方案说明

  • 兼容单端、双端测序数据:通过输入的single_end参数自动判断需要处理的文件数量
  • 异常处理逻辑:仅忽略正常截断产生的141错误码,其他真实错误(如压缩文件损坏、zcat不可用等)仍然会抛出,保证流程可靠性
  • 一步完成解压、截断、重新压缩:不需要生成中间未压缩文件,减少磁盘IO开销
  • 自动适配文件大小:如果原文件行数不足90万行,head会读取全部内容后正常退出,zcat返回0,不会做多余修改,符合需求

内容的提问来源于stack exchange,提问作者Cris Tuñí

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:54:00