両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
20210826 [2021/08/26 09:24] – 133.11.144.10 | 20210826 [Unknown date] (現在) – 削除 - 外部編集 (Unknown date) 127.0.0.1 |
---|
====== 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/test_data/compare/only_nt_hit に、${ID}_only_mitodb.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ファイルを作成。 | |
| |
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ファイルはタクソノミーパスではないので、これを変換する必要がある。(これは後から) | |
| |