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

Linux/Bash循环处理BAM文件时生成唯一输出文件名的方法

批量处理BAM文件生成对应HTSeq计数输出文件

你的问题在于当前脚本把所有BAM文件的计数结果都写入了同一个固定的SC845414.txt,需要从每个BAM文件名中提取唯一样本ID,生成对应的输出文件。

文件名分析

典型BAM文件名格式为:SC845414-CTGATCGT-GCGCATAT_Aligned.sortedByCoord.out.bam,其中样本ID是第一个-分隔符之前的SC845414部分。

修改后的脚本

#!/bin/bash
#SBATCH --mem=110g
#SBATCH --cpus-per-task=12
#SBATCH --time=10-00:00:00

module load python

# 直接遍历目标路径下的所有BAM文件,避免通配符展开问题
for bam_file in /PATH/*.bam; do
    # 提取文件名(去掉路径部分)
    filename=$(basename "$bam_file")
    # 提取样本ID:截取第一个'-'之前的内容
    sample_id=${filename%%-*}
    # 动态生成输出文件路径
    output_file="/PATH3/HTseq/${sample_id}.txt"
    # 执行HTSeq计数并写入对应输出文件
    python -m HTSeq.scripts.count -s yes -f bam "$bam_file" /PATH1/gencode.v35.annotation.gtf > "$output_file"
done

关键修改点

  • 循环遍历优化:直接用/PATH/*.bam遍历文件,避免使用变量存储通配符可能带来的展开问题
  • 样本ID提取:用basename获取纯文件名,再通过${filename%%-*}截取第一个横杠前的字符串作为样本ID
  • 动态输出路径:将样本ID拼接到输出路径中,确保每个BAM文件对应独立的输出TXT

内容的提问来源于stack exchange,提问作者Genetics

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:35:22