**文書の過去の版を表示しています。**
20210826
データのバックアップ
- node.jsのファイル群 ⇒ ローカルにファイルが存在
- node.js以外のファイル群 ⇒ m208サーバの/home/ito.takumi/work/metasearch/script_backup に保存
- 以下のGitHubリポジトリに保存。https://github.com/itotaku1225/Metasearch/tree/master/metasearch_dev
Yahooメールアドレスの設定更新
MetaSearchを実行したところ、メール配信用のスクリプトが実行されなかった。以下のエラーを確認。
Traceback (most recent call last):
File "script/send_mail.py", line 38, in <module>
send_mail("Your analysis finished", message, email)
File "script/send_mail.py", line 23, in send_mail
smtp.login(sender_name, passwd)
File "/opt/rh/rh-python38/root/usr/lib64/python3.8/smtplib.py", line 723, in login
(code, resp) = self.auth(
File "/opt/rh/rh-python38/root/usr/lib64/python3.8/smtplib.py", line 635, in auth
(code, resp) = self.docmd("AUTH", mechanism + " " + response)
File "/opt/rh/rh-python38/root/usr/lib64/python3.8/smtplib.py", line 425, in docmd
return self.getreply()
File "/opt/rh/rh-python38/root/usr/lib64/python3.8/smtplib.py", line 398, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
以下の設定を変更することで問題なくメールを送信することができるようになった。
「メール受信箱」⇒「設定・利用規約」⇒「メールの設定」⇒「IMAP/POP/SMTPアクセスとメール転送」⇒「Yahoo! JAPAN公式サービス以外からのアクセスも有効にする」⇒「IMAP」、「POP」、「SMTP」全てを有効にする。
NtデータベースとMitoFishデータベースでの生物種の比較
8/10に作成したTaxanomy IDから生物種に変換するスクリプトの結果ファイルから、硬骨魚類(Teleostomi),軟骨魚類(Chondrichthyes)のみを抽出し、差集合を取ることで、各データベース固有の生物種を探索した。
/home/ito.takumi/work/mitosearch/test_data/compare/script/get_onlyNtHit.sh を実行し、硬骨魚類、軟骨魚類の抽出と生物種のダブりを排除した。
bash script/get_onlyNtHit.sh DRR205394(IDを入れる)
get_onlyNtHit.sh
ID=$1
grep "root;cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Deuterostomia;Chordata;Craniata;Vertebrata;Gnathostomata;Teleostomi" only_nt_hit/${ID}_species_mitodb.txt |uniq >> only_nt_hit/${ID}_species_mitodb_fish_uniq.txt
grep "root;cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Deuterostomia;Chordata;Craniata;Vertebrata;Gnathostomata;Chondrichthyes;" only_nt_hit/${ID}_species_mitodb.txt |uniq >> only_nt_hit/${ID}_species_mitodb_fish_uniq.txt
grep "root;cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Deuterostomia;Chordata;Craniata;Vertebrata;Gnathostomata;Teleostomi" only_nt_hit/${ID}_species_nt.txt |grep -v "root;cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Deuterostomia;Chordata;Craniata;Vertebrata;Gnathostomata;Teleostomi;Euteleostomi;Sarcopterygii;"| uniq >> only_nt_hit/${ID}_species_nt_fish_uniq.txt
grep "root;cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Deuterostomia;Chordata;Craniata;Vertebrata;Gnathostomata;Chondrichthyes;" only_nt_hit/${ID}_species_nt.txt |uniq >> only_nt_hit/${ID}_species_nt_fish_uniq.txt
- TeleostomiだけでGrepしてしまうと、たまたま名前が一致するものも抽出してしまうので、Taxanomyのrootからgrepを行う。
- Teleostomi以下には哺乳類なども含まれるので、これらを除去してあげる必要がある。(grep -v で哺乳類のタクソノミーを除去)
次に/home/ito.takumi/work/mitosearch/test_data/compare/script/get_onlyNtHit.py を実行し、片方のデータベースのみに存在する生物種を取得。
python script/get_\onlyNtHit.py DRR075196
get_onlyNtHit.py
import sys
def main():
srrid = sys.argv[1]
mito_f = open("only_nt_hit/" + srrid + "_species_mitodb_fish_uniq.txt")
nt_f = open("only_nt_hit/" + srrid + "_species_nt_fish_uniq.txt")
mito_rowList = mito_f.readlines()
nt_rowList = nt_f.readlines()
mito_rowList = set(mito_rowList)
nt_rowList = set(nt_rowList)
diff_onlyMitoDB = mito_rowList - nt_rowList
diff_onlyNt = nt_rowList - mito_rowList
mito_w = open("only_nt_hit/" + srrid + "_only_mitodb.txt","w")
nt_w = open("only_nt_hit/" + srrid + "_only_nt.txt","w")
for living in diff_onlyMitoDB:
mito_w.write(living)
for living in diff_onlyNt:
nt_w.write(living)
mito_f.close()
nt_f.close()
mito_w.close()
nt_w.close()
if __name__ == "__main__":
main()
差分の結果は/home/ito.takumi/work/mitosearch/testdata/compare/onlynthit に、${ID}onlymitodb.txt、${ID}only_nt.txt として得られる。
結果の解釈
ほとんどのサンプルで、MitoFishデータベースとNTデータベースでの差分は近縁種が別の生物種にヒットしたことによる差分であった。またMitoFishデータベースのヒットしているデータが一部見られた。
Inputファイルとしては、MitoFishデータベースのみを用いることに決定。
Inputファイルの作成
http://www.suikou.fs.a.u-tokyo.ac.jp/dokuwiki/doku.php?id=20210803 を参考にフィルタリングをかけたInputファイルを作成。
/home/ito.takumi/work/mitosearch/create_input/script/create_input_ver4.sh をGridエンジンで実行
create_input_ver4.sh
#!/bin/bash
prefix=$1
#create tmp dir
mkdir -p /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}
if [ -e /suikou/files/m512/backup/r311/eDNA/${prefix}_1.fastq.gz -a -e /suikou/files/m512/backup/r311/eDNA/${prefix}_2.fastq.gz ]; then
#ファイルをコピー(Flashが上手く行かなかった時に使うシーケンスデータ)
cp /suikou/files/m512/backup/r311/eDNA/${prefix}_1.fastq.gz /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}
#解凍(Flashが上手く行かなかった時に使うシーケンスデータ)
gunzip /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/${prefix}_1.fastq.gz
#ペアエンドのfastqのセットをシングルエンドのfastqに変換。もしエラー(リード数がペアエンド間で異なるなど)の場合は1側のリードを使う。
flash /suikou/files/m512/backup/r311/eDNA/${prefix}_1.fastq.gz /suikou/files/m512/backup/r311/eDNA/${prefix}_2.fastq.gz -d /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix} -M 300 || mv /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/${prefix}_1.fastq /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fastq
#fastqファイルをfastaファイルに変換。
awk '(NR - 1) % 4 < 2' /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fastq | sed 's/@/>/' > /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fasta
#mitoFishデータベースにBlast検索を行う。
blastn -num_threads 8 -db /suikou/files/m208/ito.takumi/work/mitosearch/mitofish_db/complete_partial_mitogenomes.fa -query /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fasta -outfmt "6 qseqid sseqid qlen slen pident length mismatch gapopen qstart qend sstart send evalue bitscore staxids stitle" -max_target_seqs 1 -out /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/blast.mitodb.result
#Inputファイルのヘッダを書き込み(MitoFishデータベースとntデータベースで2つ作成。)
echo -e "id\t${prefix}.fastq" > /suikou/files/m208/ito.takumi/work/mitosearch/create_input/inputFiles/${prefix}.mitodb.input
#Inputファイル書き込み
cat /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/blast.mitodb.result| awk '$3 > 100'|awk '$5 > 90'|awk '$6 / $3 > 0.9'|cut -f 16 |sort |uniq -c |sort -r -n |awk 'BEGIN{OFS="\t"} {c="";for(i=2;i<=NF;i++) c=c $i" "; print c, $1}' >> /suikou/files/m208/ito.takumi/work/mitosearch/create_input/inputFiles/${prefix}.mitodb.input
else
if [ -e /suikou/files/m512/backup/r311/eDNA/${prefix}_1.fastq.gz ]; then
#ファイルをコピー
cp /suikou/files/m512/backup/r311/eDNA/${prefix}_1.fastq.gz /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}
#解凍
gunzip /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/${prefix}_1.fastq.gz
#fastqファイルをfastaファイルに変換。
awk '(NR - 1) % 4 < 2' /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/${prefix}_1.fastq | sed 's/@/>/' > /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fasta
#mitoFishデータベースにBlast検索を行う。
blastn -num_threads 8 -db /suikou/files/m208/ito.takumi/work/mitosearch/mitofish_db/complete_partial_mitogenomes.fa -query /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fasta -outfmt "6 qseqid sseqid qlen slen pident length mismatch gapopen qstart qend sstart send evalue bitscore staxids stitle" -max_target_seqs 1 -out /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/blast.mitodb.result
#Inputファイルのヘッダを書き込み(MitoFishデータベースとntデータベースで2つ作成。)
echo -e "id\t${prefix}.fastq" > /suikou/files/m208/ito.takumi/work/mitosearch/create_input/inputFiles/${prefix}.mitodb.input
#Inputファイル書き込み
cat /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/blast.mitodb.result| awk '$3 > 100'|awk '$5 > 90'|awk '$6 / $3 > 0.9'|cut -f 16 |sort |uniq -c |sort -r -n |awk 'BEGIN{OFS="\t"} {c="";for(i=2;i<=NF;i++) c=c $i" "; print c, $1}' >> /suikou/files/m208/ito.takumi/work/mitosearch/create_input/inputFiles/${prefix}.mitodb.input
fi
if [ -e /suikou/files/m512/backup/r311/eDNA/${prefix}_2.fastq.gz ]; then
#ファイルをコピー
cp /suikou/files/m512/backup/r311/eDNA/${prefix}_2.fastq.gz /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}
#解凍
gunzip /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/${prefix}_2.fastq.gz
#fastqファイルをfastaファイルに変換。
awk '(NR - 1) % 4 < 2' /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/${prefix}_2.fastq | sed 's/@/>/' > /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fasta
#mitoFishデータベースにBlast検索を行う。
blastn -num_threads 8 -db /suikou/files/m208/ito.takumi/work/mitosearch/mitofish_db/complete_partial_mitogenomes.fa -query /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/out.extendedFrags.fasta -outfmt "6 qseqid sseqid qlen slen pident length mismatch gapopen qstart qend sstart send evalue bitscore staxids stitle" -max_target_seqs 1 -out /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/blast.mitodb.result
#Inputファイルのヘッダを書き込み(MitoFishデータベースとntデータベースで2つ作成。)
echo -e "id\t${prefix}.fastq" > /suikou/files/m208/ito.takumi/work/mitosearch/create_input/inputFiles/${prefix}.mitodb.input
#Inputファイル書き込み
cat /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}/blast.mitodb.result| awk '$3 > 100'|awk '$5 > 90'|awk '$6 / $3 > 0.9'|cut -f 16 |sort |uniq -c |sort -r -n |awk 'BEGIN{OFS="\t"} {c="";for(i=2;i<=NF;i++) c=c $i" "; print c, $1}' >> /suikou/files/m208/ito.takumi/work/mitosearch/create_input/inputFiles/${prefix}.mitodb.input
fi
rm -r /suikou/files/m768b/ito.takumi/work/mitosearch/create_input/tmp/${prefix}
fi
この段階ではまだInputファイルはタクソノミーパスではないので、これを変換する必要がある。(これは後から)
/home/ito.takumi/work/mitosearch/create_input/inputFiles に出力。