Bash is good too, I solve it in awk with bash together. This result is comfortable but only one thing, there is only rounded to hundredths .Thank you..
• 0 views
•
link
Dear all,
I have one problem, it is only one condition for my easy script for counting of GC content per row
awk 'NR>1{n=length($1); gc=gsub("[gcGC]", "", $1); print gc/n}' $i
How to count length of row without N character.
for example:
Input: ACAGCTTGCNNNN => length= 9 Gc content=5/9
format of output is not important, only how to count it.
Thanks a lot
This command should work, but it's not in awk, it is in bash.
while read p; do
len=$(echo $p | sed 's/N//g' | tr -d '\n' | wc -c)
cnt=$(echo $p | grep -oh 'C\|G\|g\|c' | tr -d '\n' | wc -c)
gc=$(awk "BEGIN {printf \"%.2f\",${cnt}/${len}}")
echo -e length:$len --- GC:$gc
done<file
Normalized GC content per row sans N
awk '{gsub("N","");t=length();gsub(/[GC]/,"");print int((t-length())/t*100)/100}'
or, assumes sequence symbols are strictly ACTGN.
awk '{gsub("N","");t=length();gsub(/[AT]/,"");print int(length()/t*100)/100}'
Log in to answer this question.
I think I could do it by
and this result use in