我有一個包含蛋白質序列的fasta文件。如何使用awk來計算每個序列中的殘基數量?計算fasta文件中殘基的數量
>seq1
PESDFA
>seq2
>seq3
GFCSSWWR
所需的輸出
seq1 6
seq2 0
seq3 8
我有一個包含蛋白質序列的fasta文件。如何使用awk來計算每個序列中的殘基數量?計算fasta文件中殘基的數量
>seq1
PESDFA
>seq2
>seq3
GFCSSWWR
所需的輸出
seq1 6
seq2 0
seq3 8
這awk
給你一些:
awk -v FS="" '!/^>/ {print f,NF} {f=substr($0,2)}' file
seq1 6
seq3 8
要獲得seq2
你可以這樣做:
awk '{printf (/^>/&&NR>1?RS:"")"%s ",$0} END {print ""}' file | awk '{print substr($1,2),length($2)}'
seq1 6
seq2 0
seq3 8
第一部分將所有seq
和信息更改爲一行,下一部分給出長度。
這一行是不是很好,但適用於你的例子:
kent$ paste f <(sed '1d' f)|awk '/^>/{print $1, ($2~/^>/?0:length($2))}'
>seq1 6
>seq2 0
>seq3 8
$ awk -F'>' '
NF==2 { seq=$2; lgth[seq]=0; next }
{ lgth[seq]=length($0) }
END { for (seq in lgth) print seq, lgth[seq] }
' file
seq1 6
seq2 0
seq3 8
如果你關心輸出的順序,只是不停地seq
值
$ awk -F'>' '
NF==2 { seq=$2; seqs[++numSeqs]=seq; next}
{ lgth[seq]=length($0) }
END { for (i=1; i<=numSeqs; i++) print seqs[i], lgth[seqs[i]]+0 }
' file
seq1 6
seq2 0
seq3 8
感謝一個單獨的數組你爲你的答案。我應該將seq2作爲零輸出。是否有可能? – user3580414
@ user3580414查看我更新的答案。 – Jotne
非常感謝。 – user3580414