–1. Dockerを作ってみる –
**(1). 環境構築:VM 0.3.1 Beta 1 を使用。 ** でも、こちらを使う前に、VM 0.2.8を使ったり、模索しています。 Mac上にCore OSなどなどをインストールして試したりしてみたけれど、VM 0.3.1 Beta 上に環境は揃っているので、こちらを使用。 **(2). Ryotas先生の「ツールのコンテナ化(Docker)の手順」に沿ってやってみる。 ** VM 0.3.1 Betaができる前だったので、VM 0.2.8でやってみた。 まず、VMをVirtualBoxで立ち上げて、ターミナルで ssh galaxy@192.168.56.10 にログインして開発開始。 この辺りは、藤澤さんの作業ログ2 を参考にさせて頂いた。 最初VM 0.2.8を使っていて、次にVM 0.3.1 Beta に変えて、galaxyを実行しようとしたら、 左側のメニューパネルでツールをクリックすると、 Tool request failed [history_id=None] Failed to retrieve history. History unavailable. Please specify a valid history id. とエラーが出た。これは、galaxy へのログインに失敗していることに起因するものであった。 ログイン時、特にエラーメッセージが出なかったので気付けなかった。 なにかgalaxy の挙動がおかしければ、Sagari のCookie を削除し、再びログインし直すといい。 **(3). inutano先生にご教授頂きながら、自分のPerl スクリプトをdocker化 ** (2)のhello galaxy の例では、CentOSのdockerをコールしていたけど、今回は、perlを使いたいので Docker hub 3 で ‘perl’ と検索するとperlが使えるDocker が既に用意されている。 そのDockerで自分のperl スクリプトが動くかどうかの動作確認は、Description の実行コマンドに従って実行してみる。 今回は、perl オフィシャルの Docker を使う。 sudo docker run -it –rm –name my-running-script -v “$PWD”:/data -w /usr/src/myapp perl:5.20 perl -d /data/kick_detect_snps.pl mpileup /data/Koshihikari.vcf 0 0 both 0 /data/result.vcf Web上に記載されている、このperlのdockerファイルが、 —- FROM perl:5.20 COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ “perl”, “./your-daemon-or-script.pl” ] —– と記載されていたので、kick_detect_snp.pl が格納されているディレクトリで、この docker コマンドを実行すれば、docker 上の領域 /usr/src/myapp にコピーされて使用できるのかと思ったけど、ダメだった。 docker の -v オプションで、docker の空間上にマウントする領域を明示的に記載する必要がある。 perl -d オプションでデバックで確認することもできる。 今回使用した perl:5.20 は、docker hub に既にあるので、自分でDocker を作る必要がないのかと思ったけど、perl プログラムの設置するディレクトリと、Input / Output ファイルのディレクトリとを 分けたいので、Web 上に記載されている、perl のdocker ファイルをコピーして、作成する。 Docker ファイルと自分のperl プログラムを同じディレクトリに置いて、Docker build & run 。
sudo docker run -it -v “$HOME/docker/data”:/data takakoron/detect_snp perl -d /usr/src/myapp/kick_detect_snps.pl mpileup /data/Koshihikari.vcf 0 0 both 0 /data/result.vcf perl プログラムは、フルパスで指定しないと動作しないことがあるらしい。。。 この辺りは、inutano 先生にかなり助けて頂いたので、心より感謝申し上げます。 – 2. Docker と perl プログラムをDocker hub に登録 –
手順は、Ryotas 先生の「ツールのコンテナ化(Docker)の手順」を参照。 – 3. galaxy で Docker 化したツールを実行 – 手順は、Ryotas 先生の「ツールのコンテナ化(Docker)の手順」を参照。 入出力ファイルの指定がうまくいくか心配だったが、通常のxml のまま、perl スクリプトへのパラメータの指定は 変更することなく正常動作した。
xml のコマンドタグは、こんな感じ。パラメータの指定方法は変更していないけど、perlプログラムのパスを追加。/usr/src/myapp/
/usr/src/myapp/kick_detect_snps.pl $how.how_specify
#if $how.how_specify ==
“pileup
”:
$how.pileup
$how.consensus
$how.snp
$how.map
$how.coverage
$how.het_hom_both
$output1
#else:
$how.mpileup
$how.dp
$how.mq
$how.het_hom_both
$how.gq
$output1
#end if
</command>
hg push でのTool Shed への更新はできなくなったらしい。BioStars 4 そのあたりの機能は、もろもろ Planemo へ移行。 参照ページ 5 6 ‘’’ –1. Planemo のインストール – ‘’’
VM 環境上に Planemo をインストールした。 参照ページには、linuxbrew でもインストールできると書いてあるけど、glibc のインストールでエラーが出て、インストールできなかったので、pip にてインストール。
(1). vertualenv のインストール
curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python |
pip install virtualenv virtualenvwrapper
(2). Planemo のインストール
virtualenv .venv; . .venv/bin/activate
pip install planemo
適宜、.bash_profile でパスの指定をしてください。
’’’–2. Tool Shed に登録したいデータの準備 – ‘’’
(1). 作業ディレクトリの作成
ディレクトリ名は、Tool Shed に登録したいレポジトリ名にしておくと便利。 mkdir snpEff_3_6c
cd snpEff_3_6c
移行の処理は全てこのディレクトリ内で行うこと!!!
’’‘(2). 更新したいgalaxy ファイルを作業ディレクトリにコピー’’’
cp /path/path/snpEff_docker.xml .
cp /path/path/snpEff_genomes.loc ./snpEff_genomes.loc.sample
loc ファイルを xml 内で参照していれば、loc ファイルも同じディレクトリ内に用意していないとエラーになる。
loc ファイルのファイル名は、.loc の後ろに .sample を付ける規則らしい。
プログラムもあれば、同じようにコピーしておく。
’’’ –3. Tool Shed にリポジトリの作成 – ‘’’
(1). .shed.yml ファイルの作成
この.shed.yml ファイルに情報を参照して、リポジトリの作成やプログラムの更新をするので、まずは作成する。
planemo shed_init –name ‘ snpEff_3_6c’ –owner ‘takakoron’ –description ‘ snpEff_3_6c’ –category ‘Variant Analysis’
オプションの詳細は、planemo shed_init –help で確認してください。
(2). リポジトリの作成
planemo shed_create –shed_email xx@xx.xx.xx –shed_password xxxxxxx –shed_target toolshed
Exception: Attempting to create a repository with configured owner [takakoron] that does not matche API user [1-204-10-1002].
Tool Shed のアカウント API key もしくは、e-mail & password で shed_create コマンドでログイン。
なぜか、必ず、このエラーが出るので、エラーが出たら、
vi .shed.yml で、owner を ‘1-204-10-1002’ に変更して、再度、上記 Planemo shed_ create コマンドを実行。
さらに、 Repository [import_mpileup] does not exist in the targeted Tool Shed. と言われることがあるが、web ブラウザでレポジトリを確認して出来ていればOK。
オーナーを ‘1-204-10-1002’ にして実行しても、web ブラウザで見るとオーナーは takakoron になっているので、’.shed.yml’ の owner を ‘takakoron’ に戻す。(戻さないと後続処理でエラーになります…. 涙)
’’’ –4. Tool Shed にプログラムを更新 – ‘’’
planemo shed_update –shed_target toolshed –shed_email xxxx@xxx.xx.xx –shed_password xxxxxxxx
Repository import_mpileup updated successfully.