我需要分析一些fastaq
个文件。主要问题是我目前使用的分析工具只接受ACTG
作为核苷酸,而不是IUPAC代码中的其他命名法(R
,W
等)。
我已经制作了这段代码来改变特定的核苷酸:
awk '{
split($2,a,"") ;
str="" ;
for (n in a) {nucleotide=a[n]} ;
if (nucleotide~/[ACTG]/) {str=str""nucleotide}
else {
if (nucleotide~/[RWMV]/) {str=str""A}
else {
if (nucleotide~/[YD]/) {str=str""C}
else {
if (nucleotide~/[SKN]/) {str=str""G}
else {str=str""T}
}
}
}
}' | head
它正在工作但它超级慢。你知道更有效的方法吗?
非常感谢你!
答案 0 :(得分:3)
为此,假设您使用fastq
格式,我建议使用专门的库,biopython
或bioperl
是不错的选择。
cat example.fastq
@ID AGTCGTACTGGACTGYGCSAACTG + IIIIIIIIIIIIIIIIIIIIIIII @ID2 RWMVYDSKNAAAAAAAAAAAAAAA + IIIIIIIIIIIIIIIIIIIIIIII
但是,使用awk
awk 'NR%4==2{gsub(/[RWMV]/,"A"); gsub(/[YD]/,"C"); gsub(/[SKN]/,"G")}1' example.fastq
你明白了,
@ID AGTCGTACTGGACTGCGCGAACTG + IIIIIIIIIIIIIIIIIIIIIIII @ID2 AAAACCGGGAAAAAAAAAAAAAAA + IIIIIIIIIIIIIIIIIIIIIIII