作ったツール,どうやってユーザーに届ける?
〜 Galaxy,Docker,クラウドを活用する
会場:大ホール(荘銀タクト鶴岡)
座長:鈴木 治夫(慶應義塾大)志波 優(東京農業大)
10:45~10:50 イントロ 志波 優(東京農業大)
10:50~11:00 ツールをコンテナ化する 菅波 麻衣(東京大学)
11:00~11:30 ツールを Galaxy に載せる 志波 優(東京農業大)
池田 誠(合同会社パーシピア)
新海 典夫(産業技術総合研究所)
11:30~11:50 Galaxy をユーザーに提供する 山中 遼太(オラクル・タイランド)
那須野 淳(株式会社アスケイド)
11:50~12:10 ツールをワークフロー化して記述する 丹生 智也(国立情報学研究所)
落合 展(国立がん研究センター)
12:10~12:15 まとめ
1
#iibmp2018, #usegalaxy @pitagora_meetup
twitter はじめました
ID: @pitagora_meetup
hashtag: #iibmp2018, #usegalaxy
講演中の質問・感想も大歓迎です!
スライドも後日公開予定です
2
#iibmp2018, #usegalaxy @pitagora_meetup
作ったツール、どうやってユーザーに届ける?
〜 Galaxy,Docker,クラウドを活用する
ビルド&インストール
3
#iibmp2018, #usegalaxy @pitagora_meetup
作ったツール,どうやってユーザーに届ける?
〜 Galaxy,Docker,クラウドを活用する
会場:大ホール(荘銀タクト鶴岡)
座長:鈴木 治夫(慶應義塾大)志波 優(東京農業大)
10:45~10:50 イントロ 志波 優(東京農業大)
10:50~11:00 ツールをコンテナ化する 菅波 麻衣(東京大学)
11:00~11:30 ツールを Galaxy に載せる 志波 優(東京農業大)
池田 誠(合同会社パーシピア)
新海 典夫(産業技術総合研究所)
11:30~11:50 Galaxy をユーザーに提供する 山中 遼太(オラクル・タイランド)
那須野 淳(株式会社アスケイド)
11:50~12:10 ツールをワークフロー化して記述する 丹生 智也(国立情報学研究所)
落合 展(国立がん研究センター)
12:10~12:15 まとめ
4
#iibmp2018, #usegalaxy @pitagora_meetup
細菌叢解析ツールの共有
〜Dockerコンテナ〜
東京大学 生産技術研究所
3部合原研究室 技術補佐員
菅波 麻衣
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
細菌叢解析ツールについて
6
#iibmp2018, #usegalaxy @pitagora_meetup
細菌叢解析ツールについて
MacProを使用
7
#iibmp2018, #usegalaxy @pitagora_meetup
vsearchの仕組�
8
#iibmp2018, #usegalaxy @pitagora_meetup
vsearchの仕組�
この他にも多くのソフト・パッケージ使用・・・
9
#iibmp2018, #usegalaxy @pitagora_meetup
解析ツール共有の問題
10
#iibmp2018, #usegalaxy @pitagora_meetup
解析ツール共有の問題
11
#iibmp2018, #usegalaxy @pitagora_meetup
ツールを共有・配布したい・・・!
複雑!でも便利な細菌叢解析ツールが完成!
そこで、
Dockerの登場です。
12
#iibmp2018, #usegalaxy @pitagora_meetup
Docker とは?
Docker社が開発した、
非常に軽量なコンテナ型の仮想化環境である。�
参考:wiki(https://ja.wikipedia.org/wiki/Docker)
VMに比べて
オーバヘッドが
少ない
13
#iibmp2018, #usegalaxy @pitagora_meetup
Docker とは?
Docker社が開発した、
非常に軽量なコンテナ型の仮想化環境である。�
参考:wiki(https://ja.wikipedia.org/wiki/Docker)
VMに比べて
オーバヘッドが
少ない
14
#iibmp2018, #usegalaxy @pitagora_meetup
Docker イメージを作成しよう!
Dockerイメージって? ��・Dockerコンテナの元
15
#iibmp2018, #usegalaxy @pitagora_meetup
Docker イメージを作成しよう!
Dockerイメージって? ��・Dockerコンテナの元�
・無料でインストールOK�
16
#iibmp2018, #usegalaxy @pitagora_meetup
Docker イメージを作成しよう!
Dockerイメージって? ��・Dockerコンテナの元�
・無料でインストールOK�
Dockerfileから作ってみよう!!
17
#iibmp2018, #usegalaxy @pitagora_meetup
Docker fileについて
18
#iibmp2018, #usegalaxy @pitagora_meetup
Docker fileについて
19
#iibmp2018, #usegalaxy @pitagora_meetup
Docker fileについて
Dockerfileをbuildして� 理想のDockerイメージ完成!
20
#iibmp2018, #usegalaxy @pitagora_meetup
Docker hubでイメージを配布
Dockerfile
21
#iibmp2018, #usegalaxy @pitagora_meetup
Docker hubでイメージを配布
Dockerfile
アップロード
22
#iibmp2018, #usegalaxy @pitagora_meetup
Docker hubでイメージを配布
Dockerfile
アップロード
公開・共有
ダウンロード
23
#iibmp2018, #usegalaxy @pitagora_meetup
まとめ
を使って解決!
1つ作っておけばOK!
24
#iibmp2018, #usegalaxy @pitagora_meetup
ここで、ふり返って考えてみよう。
もしも、
使わなかったら・・・?�(めんどくさいに違いない!!!)�
25
#iibmp2018, #usegalaxy @pitagora_meetup
【(例)試行錯誤の苦い思い出】
動かない・・・
動かない・・・
そもそも、この解析ツールはMac用だったことに気づく
26
#iibmp2018, #usegalaxy @pitagora_meetup
【(例)試行錯誤の苦い思い出】
動かない・・・
動かない・・・
そもそも、この解析ツールはMac用だったことに気づく
動かない・・・
(以下略)
27
#iibmp2018, #usegalaxy @pitagora_meetup
【(例)試行錯誤の苦い思い出】
動かない・・・
動かない・・・
そもそも、この解析ツールはMac用だったことに気づく
動かない・・・
(以下略)
なんとか動いた
として、、、� 解析結果は
同じなんかなぁ?
28
#iibmp2018, #usegalaxy @pitagora_meetup
まとめ2
やっぱり、
での共有は・・・
29
#iibmp2018, #usegalaxy @pitagora_meetup
気になる点・解決策
逆にいえば、一度覚えてしまえば便利。覚えても損はない!!(と私は思います。)�
→パッケージやソフト、スクリプトの変更などあれば随時更
→作りっぱなし×
30
#iibmp2018, #usegalaxy @pitagora_meetup
気になる点・解決策
→作成した Docker イメージのサイズの軽量化
ソフトやパッケージのサイズやレイヤー数が問題かも。。。
(重くなってはDockerとしての利点がなくなる!(汗))
→軽量で高速な Docker イメージになるように要改良
★ Dockerfileを作成の際には・・・
31
#iibmp2018, #usegalaxy @pitagora_meetup
今後について
(※個人的な夢)
→Google Colaboratory(=googleのサービス)
→Rstudio.cloud ・・・ など�
32
#iibmp2018, #usegalaxy @pitagora_meetup
謝辞 & 案内
petadimensionlab(中岡さんと共同研究)のサイトをご紹介。
※所々工事中�※今回ご紹介しました細菌叢解析ツールの
dockerfileやpythonスクリプトがあります!
本研究は、JSPS科研費 JP15H05707 の助成を受けて行いました。
Qiitaも
ぜひ入門編として
参考にしてみてください!
33
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy にツールを実装
公開するまでの流れ
志波 優 (Yuh Shiwa)
東京農業大学 分子微生物学科
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy とはなんでしょうか?
35
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy とはなんでしょうか?
36
#iibmp2018, #usegalaxy @pitagora_meetup
Public Galaxy Server(無料です)
https://galaxyproject.org/public-galaxy-servers/
37
#iibmp2018, #usegalaxy @pitagora_meetup
ワークフローも作成可能
38
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy にツールを実装・公開するまでに
やったこと
39
#iibmp2018, #usegalaxy @pitagora_meetup
実装したいツールのスコープを決める
1 Tool
1 XML File
などをXMLに記載
40
#iibmp2018, #usegalaxy @pitagora_meetup
NanoPlot のツールをGalaxyに実装してみた
$ Nanoplot --summary sequencing_summary.txt -o summary-plots
41
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy環境をDockerで用意
# チュートリアル用ファイル(XML、テスト入力)のダウンロード
$ git clone \
https://github.com/youyuh48/galaxy-tutorial-20180920.git
$ cd galaxy-tutorial-20180920
# Docker Galaxyの起動(ホスト上のツール定義XMLをマウント)
$ docker run --name galaxy -d -p 8080:80 \
-v `pwd`:/media --privileged=true \
-e GALAXY_CONFIG_TOOL_CONFIG_FILE=config/tool_conf.xml.sample,/media/mytool_conf.xml \
bgruening/galaxy-stable
42
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxyコンテナに対象ツールをインストール
# コンテナにログイン
$ docker exec -it galaxy /bin/bash
# Bioconda経由でインストール
$ /tool_deps/_conda/bin/conda create \
--name __nanoplot@1.13.0 nanoplot==1.13.0 --channel bioconda
$ source /tool_deps/_conda/bin/activate __nanoplot@1.13.0
$ NanoPlot --help
# Dockerも使える
$ docker run biocontainers/fastqc fastqc --help
43
#iibmp2018, #usegalaxy @pitagora_meetup
Tool XML ファイルの作成
# NanoPlot/NanoPlot.xml の抜粋
<tool id="NanoPlot" name="NanoPlot" version="0.1.0">
<description>ツールの説明</description>
<requirements>
<requirement type="package" version="1.13.0">nanoplot</requirement>
</requirements>
<command>
<![CDATA[
NanoPlot --summary "$input" -o report
&& mv report/NanoPlot-report.html output.html
]]>
</command>
<inputs>ツールの入力の記載</inputs>
<outputs>ツールの出力の記載</outputs>
44
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxyでツールを動かしてみる
# ツールパネルを定義する mytool_conf.xml から作成したXMLファイルを呼ぶ(抜粋)
<section id="mytools" name="My Tools">
<tool file="/media/NanoPlot/NanoPlot.xml" />
45
#iibmp2018, #usegalaxy @pitagora_meetup
Planemo を使って Tool Shed へツールを登録
# planemo shed_init \�--name=nanoplot \�--description="Galaxy wrapper for the NanoPlot package." \�(中略)
# planemo shed_create --shed_target testtoolshed
46
#iibmp2018, #usegalaxy @pitagora_meetup
ツールを Tool Shed 経由でインストール
ログイン→admin/admin→管理者→Install new tools
→Galaxy Test Tool Shed → ツール名 (NanoPlot) で検索 → Install
# Docker Galaxyを新規に起動
$ docker run --name galaxy2 -d -p 8080:80 \
--privileged=true \
-e GALAXY_CONFIG_ENABLE_BETA_MULLED_CONTAINERS=True \
-e ENABLE_TTS_INSTALL=True \
bgruening/galaxy-stable
47
#iibmp2018, #usegalaxy @pitagora_meetup
まとめ
48
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxyにツールを実装する
池田誠
合同会社パーシピア
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
ツールとは何か?
ツール(Tool):
画面の左側に表示されている、
解析の最小の単位
ワークフロー(Workflow):
ツールを組み合わせて解析を実行する
一連の処理手順
50
#iibmp2018, #usegalaxy @pitagora_meetup
ツールとは何か?
51
#iibmp2018, #usegalaxy @pitagora_meetup
ツールとは何か?
52
#iibmp2018, #usegalaxy @pitagora_meetup
実装までの手順
53
#iibmp2018, #usegalaxy @pitagora_meetup
実装までの手順2
54
#iibmp2018, #usegalaxy @pitagora_meetup
同じ事ができるツールが既に存在しないか探す
55
#iibmp2018, #usegalaxy @pitagora_meetup
同じ事ができるツールが既に存在しないか探す
�
ただし、過去のGalaxy用に作られていて、�現在は動作しないものも...
56
#iibmp2018, #usegalaxy @pitagora_meetup
ツールを(作成し)テストする
GalaxyでDockerを利用するにはxmlでは次のように記述� <requirements>
<container type="docker">
自分のツールのDockerイメージ
</container>
</requirements>
57
#iibmp2018, #usegalaxy @pitagora_meetup
ツールに与えるパラメーターを検討する
58
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
59
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
60
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
61
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
<tool
id="ツール名"
name="Galaxyのツールに表示される名称" version="2.0.1(バージョン番号)">
…
</tool>
62
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
<tool …>
<description>
(tool の id="ツール名")が何かを書く
</description>
</tool>
例:
tool の id=”Convert” で
description が delimiters to TABのときには
ツールのウィンドウ部分には
Convert delimiters to TAB
と表記される
63
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
<tool …>
<requirements>
<requirement>
他のツール
Dockerコンテナ等
<requirement>
</requirements>
</tool>
64
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
<tool …>
<command>![CDATA[
ツールで実行するコマンド
]]</command>
</tool>
あくまでもXmlで記載しているので、
記号のエスケープ等に煩わされないようにCDATAを利用
<help></help>も同様
65
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
commandの内部で条件分岐できるけど...
<command><![CDATA[
#if $input1:
samtools view
-b
-h
-@ \${GALAXY_SLOTS:-2}
-o '$bam_native_output'
'$input1'
#elif $input2:
cp '$input2' '$bam_native_output'
#elif $input3:
cp '$input3' '$bam_output'
#elif $input4:
cp '$input4' '$qname_sorted_bam_output'
#elif $input5:
cp '$input5' '$qname_input_sorted_bam_output'
#end if
]]>
</command>
https://github.com/galaxyproject/galaxy/blob/dev/test/functional/tools/sam_to_unsorted_bam.xml
66
#iibmp2018, #usegalaxy @pitagora_meetup
インターフェイスとパラメーターを定義するXML
<tool ...>全体をこの内部に記述する� <description>
“ツール名” は何をするもの...と記述する
</description>� <requirements>
dockerのコンテナの指定等�</requirements>�<command ...>コマンド</command>�<inputs>� 入力ファイルとパラメーター�</inputs>�<outputs>� 出力ファイル�</outputs>�<help>� ツールに関わるヘルプ�</help>
<tests><test></test></tests>
<citations>
<citation>...</citation>
<citations>
</tool>
<tool …>
<inputs>
<param name="入力名"
type="data" format="..."
label="インターフェイスに表示"/>
</inputs>
<outputs>
<data format="..."
name="出力名" />
</outputs>
</tool>
command部分で
your_command -i ‘$入力名’ -o ‘$出力名’
等のように利用する
67
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
$ docker pull manabuishii/docker-planemo:0.55.0
planemo lint で構文チェック
> planemo lint 作成したxml
planemo testでインターフェイスのチェック
> planemo test 作成したxml
planemo でツールを組み込んだサーバーを起動して最終確認
> planemo serve 作成したxml
planemoでtoolshedに登録
68
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
> docker run \
--entrypoint /bin/bash \
--rm \
--privileged=true \
-p 8010:80 \
-p 9090:9090 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v `pwd`:/opt/galaxy/tools \
-i \
-t \
\manabuishii/docker-planemo:0.55.0
69
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
# apt-get update -y
# apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
# add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
# apt-get update
# apt-get install -y docker-ce
70
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
planemo lint で構文チェック
> planemo lint 作成したxml
# planemo lint ./randomlines.xml
Linting tool /opt/galaxy/tools/mytools/randomlines.xml
Applying linter tests... CHECK
.. CHECK: 2 test(s) found.
Applying linter stdio... CHECK
.. INFO: No stdio definition found, tool indicates error conditions with output written to stderr.
Applying linter output... CHECK
.. INFO: 1 outputs found.
Applying linter inputs... CHECK
.. INFO: Found 4 input parameters.
Applying linter help... CHECK
.. CHECK: Tool contains help section.
.. CHECK: Help contains valid reStructuredText.
Applying linter general... CHECK
.. CHECK: Tool defines a version [2.0.1].
.. CHECK: Tool defines a name [Select random lines].
.. CHECK: Tool defines an id [random_lines1].
.. CHECK: Tool targets 16.01 Galaxy profile.
Applying linter command... CHECK
.. INFO: Command uses deprecated 'interpreter' attribute.
.. INFO: Tool contains a command with interpreter of type [python].
Applying linter tool_xsd... CHECK
.. INFO: File validates against XML schema.
71
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
planemo testでインターフェイスのチェック
> planemo test 作成したxml
# planemo test randomlines.xml
All 2 test(s) executed passed.
random_lines1[0]: passed
random_lines1[1]: passed
一度 planemo testを実行した後はこのplanemoの
コンテナイメージを保存すると幸せになれる
72
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
planemo testでインターフェイスのチェック
73
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
planemo でツールを組み込んだサーバーを起動して最終確認
> planemo serve --host=0.0.0.0 ./randomlines.xml
74
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoの利用方法(docker)を利用
xmlを変更して左側のToolのリンクをクリックすることで、すぐにインターフェイスの変更を確認できる
75
#iibmp2018, #usegalaxy @pitagora_meetup
もしPlanemoが無かったら
76
#iibmp2018, #usegalaxy @pitagora_meetup
Planemoについて
***上記のページ内のリンクが切れている部分があるので注意
77
#iibmp2018, #usegalaxy @pitagora_meetup
変異解析パイプラインを Galaxy Docker で提供する
国立研究開発法人産業技術総合研究所
人工知能研究センター 機械学習研究チーム
新海典夫
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
話す内容
#iibmp2018, #usegalaxy @pitagora_meetup
今日話すこと
80
#iibmp2018, #usegalaxy @pitagora_meetup
やってること/やりたいこと
81
#iibmp2018, #usegalaxy @pitagora_meetup
選択肢:galaxy on docker
82
#iibmp2018, #usegalaxy @pitagora_meetup
どうやって実装?
83
#iibmp2018, #usegalaxy @pitagora_meetup
実装の為の手順
84
#iibmp2018, #usegalaxy @pitagora_meetup
実装の為の手順
…と考えていましたがそれぞれの段階で色々と苦労しました。
85
#iibmp2018, #usegalaxy @pitagora_meetup
galaxy環境に関して発生した問題その1
[samopen] SAM header is present: 24 sequences.
[E::hts_idx_push] Unsorted positions on sequence #2: 26499387 followed by 24745767
86
#iibmp2018, #usegalaxy @pitagora_meetup
galaxy環境に関して発生した問題その1
87
#iibmp2018, #usegalaxy @pitagora_meetup
galaxy環境に関して発生した問題その1
88
#iibmp2018, #usegalaxy @pitagora_meetup
galaxy環境に関して発生した問題その1
89
#iibmp2018, #usegalaxy @pitagora_meetup
galaxy環境に関して発生した問題その2
90
#iibmp2018, #usegalaxy @pitagora_meetup
galaxy環境に関して発生した問題その2
#install miniconda
$conda env create -n gatk -f /path/to/gatkcondaenv.yml
$source activate gatk
91
#iibmp2018, #usegalaxy @pitagora_meetup
galaxy環境に関して発生した問題その2
92
#iibmp2018, #usegalaxy @pitagora_meetup
とりあえず実際に動作するgalaxy-docker-containerは用意できた→問題2(galaxy-dockerの問題)
"/galaxy_venv/local/lib/python2.7/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Cannot assign requested address
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
(Background on this error at: http://sqlalche.me/e/e3q8)
こんなエラーを延々と吐き続ける
93
#iibmp2018, #usegalaxy @pitagora_meetup
とりあえず実際に動作するgalaxy-docker-containerは用意できた→問題2(galaxy-dockerの問題)
公式galaxy-docker image
commit
galaxy-docker container
run
新galaxy-docker image
94
#iibmp2018, #usegalaxy @pitagora_meetup
とりあえず実際に動作するgalaxy-docker-containerは用意できた→問題2(galaxy-dockerの問題)
公式galaxy-docker image
galaxy-docker container
run
DATA
CONTAINER
こちらだけを維持
こちらはRUNの度に新しく�container作成
95
#iibmp2018, #usegalaxy @pitagora_meetup
対応:docker buildで一から作る
「galaxyの起動前に」galaxy-dockerの中身に手を加えたimageを作成できる。
公式galaxy-docker image
galaxy-docker container
run
DATA
CONTAINER
build
カスタマイズgalaxy-docker image
96
#iibmp2018, #usegalaxy @pitagora_meetup
実際のDockerfileの中身
#java
#sudo tar xvfo /local_tools/tools/java/jdk-8u172-linux-x64.tar.gz
RUN mkdir -p /usr/lib/jvm
ADD ./jdk-8u172-linux-x64.tar.gz /usr/lib/jvm
RUN ln -s /usr/lib/jvm/jdk1.8.0_172 /usr/lib/jvm/java-8-oracle-amd64
#conda install and source activate gatk
ENV MINICONDA Miniconda3-latest-Linux-x86_64.sh
RUN mkdir -p /dockerbuild_tmp
WORKDIR /dockerbuild_tmp
COPY gatkcondaenv.yml /dockerbuild_tmp/
COPY gatkPythonPackageArchive.zip /dockerbuild_tmp/
RUN wget --quiet https://repo.continuum.io/miniconda/$MINICONDA && \
bash $MINICONDA -b && \
rm $MINICONDA && \
export PATH="/home/galaxy/miniconda3/bin:$PATH" && \
conda install -y conda && \
conda update -y conda && \
conda env create -f gatkcondaenv.yml
#local_tool copy
ADD ./local_tools_data.tar.gz /
#local_reference_and_test_data_copy
ADD ./test_data_set.tar.gz /
oracle-javaを導入
minicondaをダウンロード
↓
gatkcondaenv.yml を内部にコピー�↓�それをminicondaに�読み込ませる
必要なツール、及びそのwrapper、レファレンスを内部にコピー
97
#iibmp2018, #usegalaxy @pitagora_meetup
まとめ
98
#iibmp2018, #usegalaxy @pitagora_meetup
こんな感じに実装できました。
99
#iibmp2018, #usegalaxy @pitagora_meetup
作成した Galaxy の�ワークフローを共有
山中遼太
オラクル・タイランド
Pitagora is � your friendly � neighbourhood!
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
それでも共有できない!
Galaxy
XML
Docker
Tool
101
#iibmp2018, #usegalaxy @pitagora_meetup
それでも共有できない!
� 動かない事件が多発!
(チュートリアルさえ…)
Galaxy
1
2
3
102
#iibmp2018, #usegalaxy @pitagora_meetup
それでも共有できない!
それが、ピタゴラ ▶
Galaxy
1
2
3
103
#iibmp2018, #usegalaxy @pitagora_meetup
ピタゴラでワークフローを共有
Galaxy
1
2
3
104
#iibmp2018, #usegalaxy @pitagora_meetup
ピタゴラでワークフローを共有
Galaxy
1
2
3
1
2
3
1
2
3
1
2
3
105
#iibmp2018, #usegalaxy @pitagora_meetup
今後はこうしてみます
1. Docker イメージを作成して公開
2. Galaxy ツール化(XML作成)して公開�3. Galaxy ワークフローを作成して公開� → 公開する場所(GitHub, Wiki)を提供
106
#iibmp2018, #usegalaxy @pitagora_meetup
今後はこうしてみます
Galaxy
1
2
3
1
2
3
107
#iibmp2018, #usegalaxy @pitagora_meetup
クラウド環境で
Galaxyを利用する
株式会社アスケイド
那須野 淳
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドとは何か?」について再確認
“
クラウドコンピューティングは、共用の構成可能なコンピューティングリソース(ネットワーク、サーバー、ストレージ、アプリケーション、サービス)の集積に、どこからでも、簡便に、必要に応じて、�ネットワーク経由でアクセスすることを可能とするモデルであり、�最小限の利用手続きまたはサービスプロバイダとのやりとりで速やかに割当てられ提供されるものである。
IPA(2011) NIST* によるクラウドコンピューティングの定義 https://www.ipa.go.jp/files/000025366.pdf
* アメリカ国立標準技術研究所� National Institute of Standards and Technology: NIST
109
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy の主な利用形態
* On-Premises: premise は構内の意。クラウドと対比する従来型システム形態を表現する言葉として利用される。
110
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy をクラウド環境で使う理由は?
.。oO ネットワーク周りとかインフラ構築で悩むのは本末転倒だ…
.。oO 独自のツールを自由にインストールしたい…
.。oO ディスク容量制限に引っかかった…
.。oO あのツールはかなりのメモリを食うし…
111
#iibmp2018, #usegalaxy @pitagora_meetup
クラウド利用時の気になる点 (1)
例えば、HISAT2→Cufflinks のような一般的なワークフロー実行時の�クラウド料金 (AWS EC2 M5/C5/R5, us-east-1) を可視化してみると…
入力データ: ERR204893
Paired RNA-Seq
HiSeq 2000
10,234,883 read
112
#iibmp2018, #usegalaxy @pitagora_meetup
クラウド利用時の気になる点 (2)
113
#iibmp2018, #usegalaxy @pitagora_meetup
クラウド / オンプレミス どちらでも…
複数ユーザで利用する場合、組織の運用ポリシーに沿ったインフラ管理が�求められます。
etc ...
114
#iibmp2018, #usegalaxy @pitagora_meetup
クラウド環境にGalaxyをどう構築する?
手段の選択肢が多いので、悩みますよね。
⇒ インストールされるツールは最小限、� 実運用のためには多くの設定変更 (DBMS, HTTP Server など) が必須。
git clone -b master https://github.com/galaxyproject/galaxy.git
cd galaxy && sh run.sh
115
#iibmp2018, #usegalaxy @pitagora_meetup
構成管理ツールによるセットアップ
git clone https://github.com/ARTbio/GalaxyKickStart.git
cd GalaxyKickStart/
ansible-galaxy install -r requirements_roles.yml -p roles
ansible-playbook \
--inventory-file inventory_files/galaxy-kickstart galaxy.yml
* http://galaxyproject.github.io/training-material/
> Galaxy Server administration > Ansible
116
#iibmp2018, #usegalaxy @pitagora_meetup
Galaxy CloudMan
117
#iibmp2018, #usegalaxy @pitagora_meetup
CloudLaunch の利用手順
CatalogからCloudManを選択
AWSリージョン選択および�クレデンシャル情報の入力
AWSインスタンスタイプ指定�“LAUNCH” 実行
“RUNNING” 状態で構築完了�クラスタ管理用UIのURL表示
クラスタ構成管理用コンソール
Galaxy Web UI
118
#iibmp2018, #usegalaxy @pitagora_meetup
Docker Galaxy
フレーバーの組み合わせは自在。
119
#iibmp2018, #usegalaxy @pitagora_meetup
学認クラウドオンデマンド構築サービス
NII :国立情報学研究所では10月から本運用を開始します!
ご興味のある方は vcp@nii.ac.jp まで。
120
#iibmp2018, #usegalaxy @pitagora_meetup
関連サイト
⇒ 特に “Deployment and Platform options” のスライドは� クラウド利用を検討する際の参考になる。
121
#iibmp2018, #usegalaxy @pitagora_meetup
ワークフローを
Common Workflow Language で記述する
丹生 智也 (Tomoya Tanjo)
国立情報学研究所
クラウド基盤研究開発センター
Pitagora is �your friendly neighbourhood!
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
できるようになったこと
共有できるように…
123
#iibmp2018, #usegalaxy @pitagora_meetup
「俺のワークフローエンジンで動くの?」
ポータビリティ
124
#iibmp2018, #usegalaxy @pitagora_meetup
ツールはポータブル。ワークフローは?
他のワークフローエンジンでは動かない
125
#iibmp2018, #usegalaxy @pitagora_meetup
書けるよ!
126
#iibmp2018, #usegalaxy @pitagora_meetup
Common Workflow Language (CWL)
127
#iibmp2018, #usegalaxy @pitagora_meetup
つまり
CWLで書けばどのエンジンでも
同じワークフローが動く(はず)!
…
他の人に渡すときも…
128
#iibmp2018, #usegalaxy @pitagora_meetup
ワークフローを共有しない人は
129
#iibmp2018, #usegalaxy @pitagora_meetup
ワークフローを共有しない人は
130
#iibmp2018, #usegalaxy @pitagora_meetup
早速書いて…
class: CommandLineTool
cwlVersion: v1.0
baseCommand: cat
inputs:
- id: file
type: File
inputBinding:
position: 0
outputs:
- id: output
type: stdout
stdout: output.txt
class: Workflow
cwlVersion: v1.0
inputs:
- id: inp
type: File
outputs:
- id: output
type: File
outputSource: sort/output
steps:
- id: cat
run: cat.cwl
in:
- id: file
source: inp
out: [output]
- id: sort
run: sort.cwl
in:
- id: file
source: cat/output
out: [output]
ワークフロー定義
ツール定義
131
#iibmp2018, #usegalaxy @pitagora_meetup
書きたくない…
132
#iibmp2018, #usegalaxy @pitagora_meetup
書きたくない!!!
これからは GUI の時代!!
133
#iibmp2018, #usegalaxy @pitagora_meetup
GUI で CWL を作成
134
#iibmp2018, #usegalaxy @pitagora_meetup
おまけ: 玄人向け
135
#iibmp2018, #usegalaxy @pitagora_meetup
まとめ
136
#iibmp2018, #usegalaxy @pitagora_meetup
まとめ
137
#iibmp2018, #usegalaxy @pitagora_meetup
関連リンク
138
#iibmp2018, #usegalaxy @pitagora_meetup
使い捨てクラウドで
「今日だけ」
そのワークフローを試す方法
国立がん研究センター
落合 展
iibmp2018
#iibmp2018, #usegalaxy @pitagora_meetup
共通規格で書かれたWorkflow
Common Workflow Language
140
#iibmp2018, #usegalaxy @pitagora_meetup
を、ちょっと試したい
Common Workflow Language
141
#iibmp2018, #usegalaxy @pitagora_meetup
バイオインフォマティクスにおける
「ちょっと試したい」のジレンマ
142
#iibmp2018, #usegalaxy @pitagora_meetup
バイオインフォマティクスにおける
「ちょっと試したい」のジレンマ
143
#iibmp2018, #usegalaxy @pitagora_meetup
バイオインフォマティクスにおける
「ちょっと試したい」のジレンマ
144
#iibmp2018, #usegalaxy @pitagora_meetup
クラウドでちょっと試すのわりと良いと思います
145
#iibmp2018, #usegalaxy @pitagora_meetup
コンピューティングリソースの選択
永続的
一時的
データサイズ小
データサイズ大
自分の
ローカル環境
自分の
ローカルに作ったVM
オンプレミス
HPC環境
パブリック
クラウドサービス
146
#iibmp2018, #usegalaxy @pitagora_meetup
プラットフォームの選択
有料
無料
オンプレミス
クラウド
スパコンの
使用契約
自前で
スパコン持ってる
(ローカル?)
パブリック
クラウドサービス
Galaxy
147
#iibmp2018, #usegalaxy @pitagora_meetup
課金モデルの選択
高頻度
低頻度
小規模並列
大規模並列
Galaxy
オンプレミス
HPC環境
パブリック
クラウドサービス
パブリック
クラウドサービス
148
#iibmp2018, #usegalaxy @pitagora_meetup
コミュニティの選択
プラグインや拡張の実装が
活発
技術として
いい意味で枯れてる
相談できるひとがいない
相談できる
149
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウド上でちょっとだけやる」方法
あるある
150
#iibmp2018, #usegalaxy @pitagora_meetup
BOF的には
このへんで終わるのがいいと思います
151
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
152
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
153
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
154
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
155
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
156
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
157
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
158
#iibmp2018, #usegalaxy @pitagora_meetup
「クラウドでちょっとやる」エンジン
「hotsub」の紹介(P-69)
$ hotsub run \
--cwl star-alignment.cwl \
--cwl-job sample_01.json \
--cwl-out s3://my-bucket/cwl-star
159
#iibmp2018, #usegalaxy @pitagora_meetup
twitter はじめました
ID: @pitagora_meetup
hashtag: #iibmp2018, #usegalaxy
講演中の質問・感想も大歓迎です!
スライドも後日公開予定です
160
#iibmp2018, #usegalaxy @pitagora_meetup