- 投稿日:2020-07-29T20:56:16+09:00
QIIME2でOTU名とその系統(門、科、属など)の対応表を得る
前回の記事でOTUのカウントデータの取得方法を書いたが、多様性解析など以外の多くの場合、その系統をもとにデータを議論することになると思う。
というわけで、今回はQIIME2を使ってOTUとその系統の対応表を得る方法について書く。
と言っても、一度でもQIIME2を触ったことがある人にとっては正直全然難しくない。
個人的には今後、系統名を用いて色んな解析を投稿する際にこの記事を引用するために書いた。公式のチュートリアルに従って、QIIME2上でtaxonomy.qzvを開く(ブラウザで表示)。
QIIME2qiime tools view taxonomy.qzv今回は簡単に説明するために、このリンクからサンプルデータのtaxonomy.qzvをブラウザ表示したところに飛べるようにしておく。
1列目がOTUのID、2列目が系統名、3列目が信頼度(詳しくはこちら)。
左上の"Download metadata TSV file"を押し、対応表を.tsv(テキストファイル)としてダウンロードする。
- 投稿日:2020-07-29T20:19:45+09:00
QIIME2を使ってOTU(微生物)のカウントデータをテキストファイルで得る
微生物解析パイプライン「QIIME2」を使った解析で、公式のチュートリアルでは、fastqファイルから門や属レベルのカウントデータは得ることができるが、OTUのカウントデータの取得方法が載っていない。
しかし近年はOTUレベルでの解析も盛んに行われており、必要だと思うので、調べてみた。
【利用ソフト(OS)】
VirtualBox
QIIME2 2019.10 (VirtualBox用のもの) 詳しくは→Installing QIIME2(Dockerが流行ってるので今後はVirtalBoxからDockerにシフトする可能性はある。。。)
サンプルデータの取得
前提条件として、公式のチュートリアルに従って、table.qzaは持っているものとします。
サンプルデータは以下のリンクから取得してください。
download table.qzaOTUデータのエクスポート
.biomという形式のファイルに出力します。"feature-table.biom"というファイルが同じディレクトリに生成されます。
QIIME2qiime tools export --input-path table.qza --output-path ./テキストファイルへの変換
biomファイルのままでは普通の解析(OTUの名前とカウントが載ったテーブルを用いた解析)ができないので、biomをtsvファイル(.txtのようなテキストファイル)に変換
QIIME2biom convert -i feature-table.biom -o feature-table.tsv --to-tsvこれで、以下のようなテキストファイルが得られます。
1列目がOTU名(ID)、2行目がサンプル名ですね。
データフレーム処理をするのに1行目は邪魔だと思うので、ここは手動で消しちゃってもいいと思います。今後はこれを用いた解析のやり方をどんどん上げていきます。
- 投稿日:2020-07-29T15:02:55+09:00
LinuxからIKEv2を用いてKUINS-III(京大VPN)に接続する
前記事に書いた通り, UbuntuでPPTPを用いて京都大学のVPNシステムKUINS-IIIへの接続に成功した.
しかし, PPTP接続にはセキュリティ上の問題があり, 公式ページではIKEv2による接続が推奨されている.
その一方で, Linuxによる設定方法は示されておらず,今までIKEv2により接続することができなかった.
前回の成功に味をしめていろいろ検索していると,(Linux から京大の IKEv2 VPN に接続する方法)[https://blog.kmconner.net/archives/201]サイトを発見したので,これを参考にしてIKEv2によるVPN接続を試みる.パッケージのインストール
OSはUbuntu 20.04 LTSを想定していますが, 18.04 LTSでも動作すると思います.
IKEv2はstrongswanと呼ばれるパッケージを用いて設定を行うため,必要なパッケージをパッケージマネージャによりインストールします.$ sudo apt-get install strongswan libcharon-extra-plugins接続設定の作成
strongswanをインストールすると,
/etc/ipsec.conf
というファイルが作成されているはずなので,そちらに今回接続するVPNの設定を記述する.$ sudo cat << EOF >> /etc/ipsec.conf conn KUINS auto=start right=<IKEv2サーバー> rightid=<IKEv2サーバー> rightsubnet=10.0.0.0/8 rightauth=never left=%defaultroute leftsourceip=%config leftid=<ECS-ID> leftauth=eap-mschapv2 eap_identity=%identity keyexchange=ikev2 type=tunnel ike=aes128-sha256-modp3072 EOF<IKEv2サーバー>の部分は公式ページ
から確認できる.
KUINS-IIへ接続する場合はikev2.kuins.kyoto-u.ac.jpとすればよい.VLAN固定接続(KUINS-III)の場合は接続するキャンパスのホスト名を選択する. また,leftid=<ECS-ID@vlan番号>
としなければならない.
次に,EAP認証する際のパスワードを/etc/ipsec.secrets
に追記する.$ sudo cat << EOF >> /etc/ipsec.secrets ECS-ID : EAP "ECS-IDのパスワードを直打ち" EOFサーバー証明書の設定
前述の設定でクライアント認証のための設定は完了した.あとは,サーバーまでのルートを認証するための証明書を設定して置かなければならない.
$ sudo curl https://www.secomtrust.net/service/ninsyo/cer/scrootca2.txt >> /etc/ipsec.d/cacerts/key.pem $ sudo chmod 600 /etc/ipsec.d/cacerts/key.pem接続前の前準備
各種設定後,初回接続前に変更内容を反映させる必要がある.
$ sudo ipsec restart # strongswanの再起動 $ sudo ipsec reload # 設定内容を再読込 $ sudo ipsec listcacerts # 設定された証明書を表示 List of X.509 CA Certificates subject: "C=JP, O=National Institute of Informatics, CN=NII Open Domain CA - G5" issuer: "C=JP, O=SECOM Trust Systems CO.,LTD., OU=Security Communication RootCA2" validity: not before Mar 22 15:33:29 2018, ok not after Mar 22 15:33:29 2028, ok (expires in 2793 days) serial: 22:b9:b1 ... flags: CA CRLSign CRL URIs: http://repository.secomtrust.net/SC-Root2/SCRoot2CRL.crl OCSP URIs: http://scrootca2.ocsp.secomtrust.net pathlen: 0 certificatePolicies: 1.2.392.200091.100.901.4 CPS: https://repository.secomtrust.net/SC-Root2/ authkeyId: 0a:85:a9 ... subjkeyId: 67:3a:3a ... pubkey: RSA 2048 bits keyid: 8e:c0:9a ... subjkey: 67:3a:3a ... subject: "C=JP, O=SECOM Trust Systems CO.,LTD., OU=Security Communication RootCA2" issuer: "C=JP, O=SECOM Trust Systems CO.,LTD., OU=Security Communication RootCA2" validity: not before May 29 14:00:39 2009, ok not after May 29 14:00:39 2029, ok (expires in 3225 days) serial: 00 flags: CA CRLSign self-signed subjkeyId: 0a:85:a9 ... pubkey: RSA 2048 bits keyid: 3b:37:c0 ... subjkey: 0a:85:a9 ...上記のような表示がされれば準備はOKである.
接続
次のコマンドで接続・切断を行うことができる.
$ sudo ipsec up KUINS # VPNに接続 $ sudo ipsec down KUINS # VPNから切断感想
公式ページで,「LinuxはiKEv2に対応していない」とお茶を濁す意味がわかった気がする.テキストベースでの設定が多くこの方法を公開すればトラブル対応に追われるのが落ちである.しかしよく考えてみると,KUINS自体がstrongswanで構築されているのでLinuxで接続できないわけがない笑
- 投稿日:2020-07-29T00:09:25+09:00
BitnamiのAutostartについて
公式ドキュメントはあるのに詰まってしまった所を書き残しておきます。
→ Start the stack automatically on boot
※ 今回は、RedHat-like Distributions (Red Hat, Fedora Core, CentOS, Suse, …) でなく
Debian-like Distributions (Debian, Ubuntu, …) の話です。スクリプトの加工の仕方
流れとしては、上の記事にある通り、
Bitnamiのアプリ制御スクリプトであるところの ctlscript.sh を流用していきます。sudo cp installdir/ctlscript.sh /etc/init.d/bitnami-APPNAME本記事のポイントは以下の部分です。
スクリプトへ挿入せよと言われる部分### BEGIN INIT INFO # Provides: bitnami-APPNAME # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable services provided by daemon. ### END INIT INFOこれを #!/bin/bash の後に追記する様にしてください。
もし #!/bin/bash より先に記述してしまうと、
以下の様に、フォーマットエラーでOS起動時の実行に失敗してしまいます。$ systemctl status bitnami-APPs.service ● bitnami-APPs.service - LSB: Start daemon at boot time Loaded: loaded (/etc/init.d/bitnami-APPs; generated) Active: failed (Result: exit-code) since Tue 2020-07-28 23:21:13 JST; 1min 13s ago Docs: man:systemd-sysv-generator(8) Process: 512 ExecStart=/etc/init.d/bitnami-APPs start (code=exited, status=203/EXEC) Jul 28 23:21:13 on20200516 systemd[1]: Starting LSB: Start daemon at boot time... Jul 28 23:21:13 on20200516 systemd[512]: bitnami-APPs.service: Failed to execute command: Exec format error Jul 28 23:21:13 on20200516 systemd[512]: bitnami-APPs.service: Failed at step EXEC spawning /etc/init.d/bitnami-APPs: Exec format error Jul 28 23:21:13 on20200516 systemd[1]: bitnami-APPs.service: Control process exited, code=exited, status=203/EXEC Jul 28 23:21:13 on20200516 systemd[1]: bitnami-APPs.service: Failed with result 'exit-code'. Jul 28 23:21:13 on20200516 systemd[1]: Failed to start LSB: Start daemon at boot time.正しく追記した場合は以下の様に正常に自動起動に成功します。
$ systemctl status bitnami-APPs.service ● bitnami-APPs.service - LSB: Start daemon at boot time Loaded: loaded (/etc/init.d/bitnami-APPs; generated) Active: active (running) since Tue 2020-07-28 23:24:56 JST; 41s ago Docs: man:systemd-sysv-generator(8) Process: 514 ExecStart=/etc/init.d/bitnami-APPs start (code=exited, status=0/SUCCESS) Tasks: 46 (limit: 682) Memory: 283.5M CGroup: /system.slice/bitnami-APPs.service ├─ 569 /bin/sh /opt/bitnami/mysql/bin/mysqld_safe --defaults-file=/opt/bitnami/mysql/my.cnf --mysqld=mysqld.bin --socket=/opt/bitnami/mysql/tmp/my> ├─ 899 /opt/bitnami/mysql/bin/mysqld.bin --defaults-file=/opt/bitnami/mysql/my.cnf --basedir=/opt/bitnami/mysql --datadir=/opt/bitnami/mysql/data > ├─1155 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf ├─1169 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf ├─1170 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf ├─1171 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf ├─1172 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf └─1173 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf Jul 28 23:24:18 on20200516 systemd[1]: Starting LSB: Start daemon at boot time... Jul 28 23:24:48 on20200516 bitnami-APPs[567]: /opt/bitnami/mysql/scripts/ctl.sh : mysql started at port 3306 Jul 28 23:24:56 on20200516 bitnami-APPs[1151]: Syntax OK Jul 28 23:24:56 on20200516 bitnami-APPs[1150]: /opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80 Jul 28 23:24:56 on20200516 systemd[1]: Started LSB: Start daemon at boot time.