20200729のLinuxに関する記事は4件です。

QIIME2でOTU名とその系統(門、科、属など)の対応表を得る

前回の記事でOTUのカウントデータの取得方法を書いたが、多様性解析など以外の多くの場合、その系統をもとにデータを議論することになると思う。

というわけで、今回はQIIME2を使ってOTUとその系統の対応表を得る方法について書く。

と言っても、一度でもQIIME2を触ったことがある人にとっては正直全然難しくない。
個人的には今後、系統名を用いて色んな解析を投稿する際にこの記事を引用するために書いた。

公式のチュートリアルに従って、QIIME2上でtaxonomy.qzvを開く(ブラウザで表示)。

QIIME2
qiime tools view taxonomy.qzv

今回は簡単に説明するために、このリンクからサンプルデータのtaxonomy.qzvをブラウザ表示したところに飛べるようにしておく。

スクリーンショット (87).png

1列目がOTUのID、2列目が系統名、3列目が信頼度(詳しくはこちら)。

左上の"Download metadata TSV file"を押し、対応表を.tsv(テキストファイル)としてダウンロードする。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

QIIME2を使ってOTU(微生物)のカウントデータをテキストファイルで得る

微生物解析パイプライン「QIIME2」を使った解析で、公式のチュートリアルでは、fastqファイルから門や属レベルのカウントデータは得ることができるが、OTUのカウントデータの取得方法が載っていない。

しかし近年はOTUレベルでの解析も盛んに行われており、必要だと思うので、調べてみた。

【利用ソフト(OS)】
VirtualBox
QIIME2 2019.10 (VirtualBox用のもの) 詳しくは→Installing QIIME2

(Dockerが流行ってるので今後はVirtalBoxからDockerにシフトする可能性はある。。。)

サンプルデータの取得

前提条件として、公式のチュートリアルに従って、table.qzaは持っているものとします。

サンプルデータは以下のリンクから取得してください。
download table.qza

OTUデータのエクスポート

.biomという形式のファイルに出力します。"feature-table.biom"というファイルが同じディレクトリに生成されます。

QIIME2
qiime tools export --input-path table.qza --output-path ./

テキストファイルへの変換

biomファイルのままでは普通の解析(OTUの名前とカウントが載ったテーブルを用いた解析)ができないので、biomをtsvファイル(.txtのようなテキストファイル)に変換

QIIME2
biom convert -i feature-table.biom -o feature-table.tsv --to-tsv

参考にさせていただいたサイト(英語)

これで、以下のようなテキストファイルが得られます。

image.png

1列目がOTU名(ID)、2行目がサンプル名ですね。
データフレーム処理をするのに1行目は邪魔だと思うので、ここは手動で消しちゃってもいいと思います。

今後はこれを用いた解析のやり方をどんどん上げていきます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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で接続できないわけがない笑

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む