問題:3日目で使用したtake.tpm.txtファイルについて、各サンプル(0hA, 24hA1, 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
問題:
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を使う
問題: マツタケが生えている付近の土壌の真菌類のメタゲノム解析結果
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くらい使うはず。