問題: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くらい使うはず。