1.FASTAファイルのレコード数(遺伝子数)を算出せよ
FASTAファイルのレコードは”>”から始まります。 1文字目を切り出すには・・・substr($0,1,1)
awk '
{
if(substr($0,1,1)==">"){
cnt=cnt+1
}
}
END{
print cnt
}
' TAIR6_seq_20060907
35351
2.塩基配列の平均長を算出せよ
seqkitでFASTA→TABに変換したファイルを利用する。区切り文字を指定する-F'\t'を忘れないこと。
awk -F'\t' '
{
cnt = cnt + length($2);
n = n + 1;
}
END{
print cnt / n;
}
' TAIR6_seq_20060907.tab
2227.59
3.最大、最小の配列長を算出せよ
awk -F'\t' '
BEGIN{min=1e+10} #<=10,000,000,000のこと
{
len=length($2)
if(len>max){max=len}
if(len<min){min=len}
}
END{
print max, min
}
' TAIR6_seq_20060907.tab
max: 31258 min: 22
4.配列を長い順に表示
awk -F'\t' '
{
data[$1]=length($2);
seq[$1]=$2;
}
END{
PROCINFO["sorted_in"]="@val_num_desc";
for(i in data){
print data[i]": "i"\t"seq[i];
}
}' TAIR6_seq_20060907.tab