文書の表示以前のリビジョンバックリンク文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 練習問題 ``` wget http://www.suikou.fs.a.u-tokyo.ac.jp/yosh_data/2018train/sample1.fasta.gz wget http://www.suikou.fs.a.u-tokyo.ac.jp/yosh_data/2018train/sample2.fasta.gz wget http://www.suikou.fs.a.u-tokyo.ac.jp/yosh_data/2018train/sample3.fasta.gz wget http://www.suikou.fs.a.u-tokyo.ac.jp/yosh_data/2018train/sample4.fasta.gz gzip -d sample*.fasta.gz として練習用のVCFファイルをダウンロードして解凍する。 上記ファイルは抗体可変領域のアンプリコンシーケンスデータである。 ``` 1.上記FASTAファイルの奇数行は配列名、偶数行は配列であることを確認せよ。 ``` #奇数行が配列名ではない場合を出力=>0件であることを確認 awk '{if(NR%2==1 && $0!~"^>"){print $0}}' sample1.fasta #偶数行が配列ではない場合を出力 awk '{if(NR%2==0 && $0~"^>"){print $0}}' sample1.fasta ``` 2.サンプル1のFASTAファイル中で出現回数の多い順に、回数とともに配列を出力せよ。 ``` awk ' {if(NR%2==0){data[$0]=data[$0]+1}} END{ PROCINFO["sorted_in"]="@val_num_desc"; for(i in data){print i,data[i]} } ' sample1.fasta ``` 3.サンプル2~4のファイルについても同様に配列の出現回数を求め、下記のように統合された出現頻度一覧表を作成せよ。 ヒント: awkの特別な変数「FILENAME」や配列「ARGV」を使います。 | |sample1|sample2|sample3|sample4| |AAAAAAA|13|0|0|0| |AAAACCC|0|1|5|0| |AAGGTTT|1|0|5|10| ``` awk ' { if(FNR%2==0){ data[$0][FILENAME]++; } } END{ ORS=""; for(i in data){ print i; for(j=1;j<length(ARGV);j++){ #ARGV[0]にはプログラムの名前(この場合は「awk」という文字列)が入っているため除く if(data[i][ARGV[j]]==""){data[i][ARGV[j]]=0}; print "\t"data[i][ARGV[j]]; } print "\n" } }' sample* ``` 4.連結した一覧表について、sample1で出現回数の多い順に表示せよ。 また、sample4で出現回数の多い順にも表示せよ。 ``` awk ' { if(FNR%2==0){ data[$0][FILENAME]++; if(FILENAME==ARGV[1]){ #sort用に配列を別途準備しておく dataforsort[$0]=dataforsort[$0]+1; #ファイル名がARGV[1]の時はカウンタを回し、 }else{ dataforsort[$0]=dataforsort[$0]+0; #そうでないときは単にindexとしてシーケンスを挿入しておく } } } END{ ORS=""; PROCINFO["sorted_in"]="@val_num_desc"; for(i in dataforsort){ #ARGV[1]の出現頻度順で出てくる print i; for(j=1;j<length(ARGV);j++){ if(data[i][ARGV[j]]==""){data[i][ARGV[j]]=0}; print "\t"data[i][ARGV[j]]; } print "\n" } }' sample* ``` 2018awk7回答例.txt 最終更新: 2019/07/15 02:46by 127.0.0.1