20210826

20210826

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」全てを有効にする。

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()
  • 20210826.1629966549.txt.gz
  • 最終更新: 2021/08/26 08:29
  • by 133.11.144.10