我正在尝试在目录中的所有.bam文件上运行生物信息学命令行工具。这就是我正在使用的:
#!/bin/sh
reference='/path/Homo_sapiens_assembly19.fasta'
for f in *.bam
do
base_name=${f%.bam}
java -jar /ppath/GenomeAnalysisTK.jar -R $reference \
-T ASEReadCounter \
-o $base_name.csv \
-I $f \
-sites $base_name.vcf \
-U ALLOW_N_CIGAR_READS \
-minDepth 10 \
--minMappingQuality 10 \
--minBaseQuality 2
done;
问题是循环在迭代第一个bam文件后停止。我最终会喜欢这个浏览一组2000个.bam文件,而且我不想手动输入它们(它需要大约30个小时)。
答案 0 :(得分:0)
尝试以下方法:
#!/bin/bash
reference='/path/Homo_sapiens_assembly19.fasta'
for f in $(ls ./*.bam); do
base_name=${f%.bam}
#base_name=$(basename ${f}) # alternatively you can use this
java -jar /ppath/GenomeAnalysisTK.jar -R ${reference} \
-T ASEReadCounter \
-o ${base_name}.csv \
-I ${f} \
-sites ${base_name}.vcf \
-U ALLOW_N_CIGAR_READS \
-minDepth 10 \
--minMappingQuality 10 \
--minBaseQuality 2
done;
我怀疑你的-o $base_name.csv
正在寻找一个名为basename.csv
而不是basename
的变量,因此会覆盖输出文件,使其看起来好像只处理了一个bam文件。通过使用${basename}
调用bash变量,在使用后缀扩展它们之前,可以很容易地解决这个问题。