如何在管道中将 BAM 转换为 FASTQ 以进行分析,然后删除生成的 fastq?
How do I convert BAM to FASTQ in pipe to analyze and then remove the fastq generated?
抱歉这个问题,但我是一名没有太多编程经验的生物信息学家,我不知道如何解决它。
我在服务器目录中有几个 bam 文件。我想用 grep
计算 bam 和相应的 fastq 文件中出现的次数,但是由于缺少 space,我还需要在分析后删除每个 fastq 文件。
为了计算 BAM 中出现的次数,我尝试了这个(但欢迎任何建议):
for i in *bam* ; do
echo $i >> TELO_BAM
grep 'TTAGGG' $i |
wc -l >> TELO_BAM
done
如您所见,我还想将文件名和计数放在 txt 文件中。
现在,为了计算 fastq 中的数字,我尝试了这个,但我不知道如何在完成计数后立即删除 fastq(所以它不会占用 space):
for i in *bam*; do
samtools bam2fq $i >> $i\.fq |
echo $i >> TELO_FQ
grep 'TTAGGG' $i >> TELO_FQ
done
我不知道它是否有效,但我想将 bam 转换为 fastq,将文件名放入文本文件中,计算 fastq 中出现的次数,然后将其删除并转到下一个文件.
grep XXX | wc -l
给出包含 XXX
的行数,而不是出现的次数(除非每行最多包含一次)。
使用 GNU grep -o XXX | wc -l
你将能够计算出现的总数。
在循环中使用>> TELO_XXX
是sub-optimal,最好使用文件描述符。
你将FastQ文件命名为$i.fq
,所以你只需要rm "$i.fq"
在使用它之后就可以了。不需要创建任何FastQ文件; samtools bam2fq
将其输出写入标准输出,因此您可以直接 grep
它。
这是一个未经测试的代码来说明这一切:
exec 3> TELO_BAM || exit 1
exec 4> TELO_FQ || exit 1
for bam in *bam*
do
printf '%s: ' "$bam" 1>&3
grep -o 'TTAGGG' "$bam" | wc -l 1>&3
printf '%s: ' "$bam.fq" 1>&4
samtools bam2fq "$bam" | grep -o 'TTAGGG' | wc -l 1>&4
done
抱歉这个问题,但我是一名没有太多编程经验的生物信息学家,我不知道如何解决它。
我在服务器目录中有几个 bam 文件。我想用 grep
计算 bam 和相应的 fastq 文件中出现的次数,但是由于缺少 space,我还需要在分析后删除每个 fastq 文件。
为了计算 BAM 中出现的次数,我尝试了这个(但欢迎任何建议):
for i in *bam* ; do
echo $i >> TELO_BAM
grep 'TTAGGG' $i |
wc -l >> TELO_BAM
done
如您所见,我还想将文件名和计数放在 txt 文件中。
现在,为了计算 fastq 中的数字,我尝试了这个,但我不知道如何在完成计数后立即删除 fastq(所以它不会占用 space):
for i in *bam*; do
samtools bam2fq $i >> $i\.fq |
echo $i >> TELO_FQ
grep 'TTAGGG' $i >> TELO_FQ
done
我不知道它是否有效,但我想将 bam 转换为 fastq,将文件名放入文本文件中,计算 fastq 中出现的次数,然后将其删除并转到下一个文件.
grep XXX | wc -l
给出包含XXX
的行数,而不是出现的次数(除非每行最多包含一次)。
使用 GNUgrep -o XXX | wc -l
你将能够计算出现的总数。在循环中使用
>> TELO_XXX
是sub-optimal,最好使用文件描述符。你将FastQ文件命名为不需要创建任何FastQ文件;$i.fq
,所以你只需要rm "$i.fq"
在使用它之后就可以了。samtools bam2fq
将其输出写入标准输出,因此您可以直接grep
它。
这是一个未经测试的代码来说明这一切:
exec 3> TELO_BAM || exit 1
exec 4> TELO_FQ || exit 1
for bam in *bam*
do
printf '%s: ' "$bam" 1>&3
grep -o 'TTAGGG' "$bam" | wc -l 1>&3
printf '%s: ' "$bam.fq" 1>&4
samtools bam2fq "$bam" | grep -o 'TTAGGG' | wc -l 1>&4
done