2018awk4回答例

練習問題①

アノテーション情報の付与

遺伝子(正確にはトランスクリプト)発現情報ファイル

http://www.suikou.fs.a.u-tokyo.ac.jp/yosh_data/2018train/take.tpm.txt

と、各遺伝子のBlast検索結果ファイル

http://www.suikou.fs.a.u-tokyo.ac.jp/yosh_data/2018train/take.blastn.txt

から、次のファイルを作成せよ

1.Blastの結果ファイルのうち、E-value ⇐ 1e-10 (0.0000000001)以下のトップヒットを抽出せよ。(blastの結果はトップヒットが必ず先頭に来ることを利用する。)  配列arrayの要素keyに値が入っているかどうかは、if(array[key]==“”)でチェックできます。

awk -F'\t' '
{
  if($11 <= 1e-10){ 
    if(data[$1]==""){
      data[$1]=$2;
      print $0;
    }
  }
}
' take.blastn.txt

2.遺伝子発現情報ファイルに1.で抽出された遺伝子名を付与せよ。  ファイルを2つ同時にawkに渡す。まずはBlastの結果ファイルを配列に格納し、次に発現情報ファイルを読み込みながらBlastの結果をアノテーションする。

awk -F'\t' '
{
  if(FILENAME==ARGV[1]){
    if($11 <= 1e-10){ 
      if(data[$1]==""){
        data[$1]=$2;
      }
    }
  }
  if(FILENAME==ARGV[2]){
    print $0"\t"data[$1];
  }
}
' take.blastn.txt take.tpm.txt

3.遺伝子名を付与することが出来た既知の遺伝子は全部で何個、何%か?

awk -F'\t' '
{
  if(FILENAME==ARGV[1]){
    if($11 <= 1e-10){ 
      if(data[$1]==""){
        data[$1]=$2;
      }
    }
  }
  if(FILENAME==ARGV[2]){
    cntall=cntall+1;
    if(data[$1]!=""){
      cnthit=cnthit+1;
    }
    print $0"\t"data[$1];
  }
}
END{print cnthit, cnthit/cntall*100}
' take.blastn.txt take.tpm.txt
  • 2018awk4回答例.txt
  • 最終更新: 2019/07/15 02:46
  • by 127.0.0.1