生物信息分析

如何判断ASCII码的类型?

2022-01-22  本文已影响0人  笺牒九州的怪咖

脚本如下:

$ cat fq_ASCII_type.sh 
less $1 | head -n 1000 | awk '{if(NR%4==0) printf("%s",$0);}' \
| od -A n -t u1 -v \
| awk 'BEGIN{min=100;max=0;} \
{for(i=1;i<=NF;i++) {if($i>max) max=$i; if($i<min) min=$i;}}END \
{if(max<=126 && min<59) print "Phred33"; \
else if(max>73 && min>=64) print "Phred64"; \
else if(min>=59 && min<64 && max>73) print "Solexa64"; \
else print "Unknown score encoding";}'\

运行

$ sh fq_ASCII_type.sh temp.fq
Phred33      #即temp.fq的质量值使用的是Phred33

设计思路

· 如果有2个以上的质量字符ASCII值小于等于58(即有两个碱基的得分小于等于25),同时没有任何质量字符的ASCII值大于等于75,即判断是Phred+33。
· 如果有2个以上的质量字符ASCII值大于等于75(即有两个碱基的得分大于等于10),同时没有任何质量字符的ASCII值小于等于58,即判断是Phred+64。
· 如果所有质量字符的ASCII值介于59到74之间,即判断可能是Phred+33,但建议使用更多的序列做进一步测试(出现这种结果可能有两种情况:1, Phred+33编码,所有碱基质量得分介于26到42之间;2,Phred+64编码,所有碱基质量得分介于-5到10;是前者的可能性大)。
· 如果出现上述3种以外的情况,建议打印出质量字符的ASCII值人工判断。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------I`m a line!Thanks!-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考:https://www.jianshu.com/p/248308513e2e

上一篇 下一篇

猜你喜欢

热点阅读