# 4-1回答例 問題:3日目で使用したtake.tpm.txtファイルについて、各サンプル(0h_A, 24h_A1, 48h_A1)の数値の合計値を求め、合計値を100万カウントに補正した場合の値として、テーブルを計算しなおしてみる。 回答例: ``` awk -F'\t' ' { if(FILENAME==ARGV[1]){ if(FNR>1){ for(i=2;i<=NF;i++){ cnt[i]=cnt[i]+$i; } } } if(FILENAME==ARGV[2]){ if(FNR==1){ print $0; }else{ str=$1; for(i=2;i<=NF;i++){ str=str"\t"$i/cnt[i]*1000*1000; } print str; } } } ' take.tpm.txt ./take.tpm.txt ``` # 4-2回答例 問題: wget http://suikou.fs.a.u-tokyo.ac.jp/yosh_data/2022train/test_1.fastq.gz wget http://suikou.fs.a.u-tokyo.ac.jp/yosh_data/2022train/test_2.fastq.gz でダウンロードした2つのFASTQファイルはペアエンドデータである。基本的に2つのファイルのリード名は完全に一致するはずだが、本当に一致するか? 回答例: ``` awk ' { if(FILENAME==ARGV[1]){ if(FNR%4==1){ data[FNR]=$1 } } if(FILENAME==ARGV[2]){ if(FNR%4==1){ if($1!=data[FNR]){ print "Forward: "FNR": "data[FNR]; print "Reverse: "FNR": "$1; } } } } ' <(zcat test_1.fastq.gz) <(zcat test_2.fastq.gz) #Macの人はzcatの代わりにgzip -dcを使う ``` # 4-3回答例 問題: マツタケが生えている付近の土壌の真菌類のメタゲノム解析結果 wget http://suikou.fs.a.u-tokyo.ac.jp/yosh_data/2022train/matsutake.blast に、下記のデータベースファイル2つを使ってAccession ID->Taxonomy ID->Taxonomy Pathへと変換した結果を付与したい。 wget http://suikou.fs.a.u-tokyo.ac.jp/yosh_data/2022train/nucl_gb.accession2taxid.50m.gz wget http://suikou.fs.a.u-tokyo.ac.jp/yosh_data/2022train/names.dmp.sname.path.gz 回答例: ``` awk -F'\t' ' { if(FILENAME==ARGV[1]){ split($2, array, "."); id[array[1]]=1; } if(FILENAME==ARGV[2]){ if(id[$1]==1){ acid2taxid[$1]=$3; }else{ delete id[$1]; } } if(FILENAME==ARGV[3]){ taxid2path[$1]=$2; } if(FILENAME==ARGV[4]){ split($2, array, "."); print $0"\t"taxid2path[acid2taxid[array[1]]]; } }' matsutake.blast <(zcat nucl_gb.accession2taxid.50m.gz) <(zcat names.dmp.sname.path.gz) ./matsutake.blast ``` 注意:入力の`nucl_gb.accession2taxid.50m.gz`は元のファイルを1/10くらいにしたもので、本来これが完全であれば100%アノテーションが付くはずなのだけど、数が少ないので10%くらいしか名前が付かない。元のファイルは https://ftp.ncbi.nih.gov/pub/taxonomy/accession2taxid/nucl_gb.accession2taxid.gz からダウンロード可能です。余裕があれば、元のファイルを使って実行できるか試してみて下さい。元のファイルだと不要な要素をdeleteしないとメモリーを100GBくらい使うはず。