#!/bin/bash
# SSUなどのデータベースを更新する際、このスクリプトにかける。[cat SSU~.fa pr2~.fa mitofish.fa > ../db/mergedDB.fasta]とした後、このスクリプトでアダプター除去等を行う。
# 使用法:bash create_db.sh [../db/mergedDB.fasta]
db=$1
# makeblastdb,アダプター配列の検索
/suikou/tool/ncbi-blast-2.12.0+/bin/makeblastdb -dbtype nucl -in $db
/suikou/tool/ncbi-blast-2.12.0+/bin/blastn -db $db -query /suikou/db/adapters/Sequencing_adaptors.fasta -outfmt 6| awk '{if($9<$10){print $2"\t"$9-1"\t"$10}else{print $2"\t"$10-1"\t"$9}}' > ${db}.adaptors.bed
# アダプター配列がヒットした場合のみ、アダプター配列のマスク
if [ `cat ${db}.adaptors.bed|wc -l` -gt 0 ]; then
bedtools maskfasta -fi $db -bed ${db}.adaptors.bed -fo ${db}.maskadaptors
else
cat ${db} > ${db}.maskadaptors
fi
# データベースに載っているアクセッションIDのリストを作成
seqkit fx2tab ${db}.maskadaptors|awk -F"\t" '{split($1,array,".");print array[1];}'|awk -F"\t" '{if(substr($1,1,2)=="gb"){split($1,array,"|");print array[2];}else{print;}}' > ${db}.maskadaptors.accessionID
# 上のリストに対応するacc2taxidデータベースの抽出
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$1]=1;}if(FILENAME==ARGV[2]&&$1 in list){print;}}' ${db}.maskadaptors.accessionID <(zcat ../db/nucl_gb.accession2taxid.gz) > ${db}.maskadaptors.nucl_gb.accession2taxid
# 2つ上で抽出したaccession2taxidリストに対応するnames.dumpを抽出
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$3]=1;}if(FILENAME==ARGV[2]&&$1 in list){print;}}' ${db}.maskadaptors.nucl_gb.accession2taxid <(zcat ../db/names.dmp.sname.path.gz) > ${db}.maskadaptors.names.dmp
# NCBIから消去されたアクセッションIDリストを取得
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$1]=1;}if(FILENAME==ARGV[2]){delete list[$1];}}END{for(i in list){print i;}}' ${db}.maskadaptors.accessionID ${db}.maskadaptors.nucl_gb.accession2taxid > ../db/removed_accessionID.txt
# データベースをタブ区切りにして保存
seqkit fx2tab ${db}.maskadaptors > ${db}.maskadaptors.tab
# 消去されたアクセッションIDに対応するデータを除去したデータベースの作成
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$1]=1;}if(FILENAME==ARGV[2]){split($1,array,".");if(substr(array[1],1,2)=="gb"){split(array[1],array2,"|");acc=array2[2];}else{acc=array[1];}if(acc in list){}else{print;}}}' ../db/removed_accessionID.txt ${db}.maskadaptors.tab|seqkit tab2fx > ../db/database.fasta
# makeblastdb
/suikou/tool/ncbi-blast-2.12.0+/bin/makeblastdb -dbtype nucl -in ../db/database.fasta