練習問題①

FASTQファイルをftp://ftp.ddbj.nig.ac.jp/ddbj_database/dra/fastq/DRA000/DRA000520/DRX001286/DRR001823.fastq.bz2 からダウンロードし、

bzip2 -d DRR001823.fastq.bz2

とコマンド入力してファイルを解凍しておく。

1.FASTQファイルのリード数を算出せよ

FASTQは4行で1リードを記述するファイル形式です。

回答例

awk '{if(NR%4==1){cnt=cnt+1}} END{print cnt}' DRR001823.fastq

もしくは、下記のように改行・スペースを入れても良い。以後分かりやすいように回答例では改行を入れてあるが、実際には上記のように書くことが多い。

awk '
{
  if(NR%4==1){
    cnt=cnt+1
  }
}
END{print cnt}
' DRR001823.fastq

20336リード

2.リードの平均長を算出せよ

文字列の長さはlength(“文字列”)を使えば取得できます。

awk '
{
  if(NR%4==2){
    cnt=cnt+1;
    cnt2=cnt2+length($0);
  }
} 
END{print cnt,cnt2,cnt2/cnt}
' DRR001823.fastq

平均長:502.161 bp

3.最も長いリード長、短いリード長はそれぞれいくつか

最大リード長

awk '
{
  if(NR%4==2){
    if(length($0)>max){
      max=length($0)
    }
  }
} 
END{print max}
' DRR001823.fastq

629 bp

最小リード長

awk '
BEGIN{min=1000} #適当に大きな値をあらかじめ代入しておく
{
  if(NR%4==2){
    if(length($0)<min){
      min=length($0)
    }
  }
}
END{print min}
' DRR001823.fastq

340 bp

4.最も長いリード長を持つ配列を(1つでよいので)表示せよ

awk '
{
  if(NR%4==2){
    if(length($0)>max){
      max=length($0); 
      maxseq=$0;
    }
  }
} 
END{print max, maxseq}
' DRR001823.fastq

TGATACGTCTTCCTACGGGAGGCAGCAGTGGGGAATATTGGACAATGGGCGCAAGCCTGATCCAGCCATGCCGCGTGAGTGATGAAGGCCCTAGGGTTGTAAAGCTCTTTCGCCAGGGACGATAATGACGGTACCTGGATAAGAAGCCCCGGCTAACTTCGTGCCAGCAGCCGCCGGTAATACGAAGGGGCGGTANCGTTGTTTCGGAATACACTGGGCGGTAAACGACGCACGTAAGGCGGGATCTTTAACGTTACAGGGGTGGGAAAATAACCCCGACGGGCGTTCCTAAACCCTACCGGGAAACCGTAGCCCTTTTCGTAATAACCTTGGGAAGGGGTCCGTTCCGAGGTCCGGGACGGAAGGTTGGAGTGGTAACGTAGCGAGTGTTAGAAGGTGGAAATTAACGTTAGATAATTTCGTCCAAGAAACAACCCAACGTTGGCGGACGGAACGGGCGGTCCGACCTACGTCCGGTACCCGGTTCCGTACGGACCGTCGTAGGTAGGTACGGAACGGAACGGTACGGGGTAGGGACGGAAACGAAACGAAGTAAGTAAGTAACCGGTAACCGGTACCGTCGTACGACGTACGACGACGACGACGACAACGGAAGGTAAGGTAGNGNN