很抱歉這個問題,但我是一個沒有太多編程經驗的生物資訊學家,我不知道如何解決它。
我在服務器目錄中有幾個 bam 檔案。我想計算grepbam 和相應的 fastq 檔案中出現的次數,但是由于空間不足,我還需要在分析后洗掉每個 fastq 檔案。
為了計算 BAM 中出現的次數,我嘗試了這個(但歡迎提出任何建議):
for i in *bam* ; do
echo $i >> TELO_BAM
grep 'TTAGGG' $i |
wc -l >> TELO_BAM
done
如您所見,我還想將檔案名和計數放入 txt 檔案中。
現在,為了計算我嘗試過的 fastq 中的數字,但我不知道如何在我完成計數后立即洗掉 fastq(所以它不占用空間):
for i in *bam*; do
samtools bam2fq $i >> $i\.fq |
echo $i >> TELO_FQ
grep 'TTAGGG' $i >> TELO_FQ
done
我不知道它是否有效,但我想將 bam 轉換為 fastq,將檔案名放在文本檔案中,計算 fastq 中的出現次數,然后將其洗掉并繼續下一個檔案。
uj5u.com熱心網友回復:
grep XXX | wc -l為您提供包含 的行數XXX,而不是出現次數(除非每行最多包含一次)。
使用 GNUgrep -o XXX | wc -l,您將能夠計算出現的總數。在回圈內部使用
>> TELO_XXX是次優的,最好使用檔案描述符。你命名 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/474246.html
