LoginSignup
2
1

More than 5 years have passed since last update.

Galaxyで関連のメモ

Last updated at Posted at 2016-11-17

概要

現在加筆編集中、よく調べていないことも書いてあります。

デバッグ時に、実行したスクリプトなどを残すようにする

galaxy.ini の中で、 cleanup_job=neverを設定する

環境変数について

環境変数をたくさん使えそうなイメージがあったのだが、これは
docker galaxy stableを作るときだけかもしれない。

もしあれば、使えるものを調べたい

調べかけ。書きかけ

Docker Galaxy の compose の下などで

GALAXY_CONFIG_CLEANUP_JOB=${GALAXY_CONFIG_CLEANUP_JOB:-onsuccess}

のように設定をしていて、実際にdockerコンテナ内では、
* GALAXY_CONFIG_CLEANUP_JOB
という環境変数に、値が保存されている。
Galaxyは実際にどこで取得しているのかを調査している

GalaxyConfigBuilder

def load_app_properties(
    kwds={},
    ini_file=None,
    ini_section="app:main",
    config_prefix="GALAXY_CONFIG_"
):

Galaxy を設定したり、ツール作ったり、実行環境を整備したときにチェックしたいこと

  • 投入したジョブを停止したときに、きちんとプログラムが停止するか
  • 一時停止はできるか?
  • 一時停止後の再開はできるか?

job_conf.xmlなどについて。

job_conf.xmlの設定を変更したり、差し替えた時の注意点

job_conf.xmlを変更する設定をしていると、ジョブの投入に失敗することがある。
この時、ジョブをそのままにしておくと、そのまま続きが流れないことがある。
再起動しても、ジョブがたまるばかりな場合、ジョブを削除すると、その後のジョブが流れることがある。

設定など

また、tool ごとの設定など。

metadataが展開されて困ること

job_conf.xml のちいさなサンプルがある

パフォーマンス関連
Real Userとしてジョブを投げるなどもある。

job_conf.xml での docker 関連の記述について

パラメータの指定は、job_conf.xml の中で、docker_volumes で指定する

          <param id="docker_volumes">$defaults,/mnt/galaxyData/libraries:ro,/mnt/galaxyData/indices:ro</param>

docker galaxy stable のコンテナでは $defaults は以下のように展開される

Galaxyでの変数 展開されたディレクトリ 未確認だが、どのディレクトリか
$galaxy_root:ro /galaxy-central Galaxyのroot
$tool_directory:ro /galaxy-central/tools/outputhostname 実行中のツールのディレクトリ
$job_directory:ro /export/galaxy-central/database/job_working_directory/000/3 実行中のジョブのディレクトリ
$working_directory:rw /export/galaxy-central/database/job_working_directory/000/3/working workingディレクトリ
$default_file_path:rw /export/galaxy-central/database/files GALAXY_CONFIG_FILE_PATH

docker コンテナで、ジョブを実行するときに、データが見れないときに確認すること

見せたいファイル、または、そのファイルのあるディレクトリが、リンクであるかを確認する。
リンクである場合、それが docker コンテナから見ることができる位置なのかも確認する。

Sun GridEngine(SGE)関連

ツールの作成

はじめようツール開発を読むのが良い。
そこにある、hellogalaxyのサンプルがわかりやすい。

config/tool_conf.xml

に追加する方法が書いてある

interpreterの説明なども参考にした。

最新はこちらをみたほうがよい?
planemoの使い方とか

Galaxy IUC を見ていたら見つけた。

planemo の仮想マシン環境

toolのXMLの書式

pythonのTemplate Engine である cheetah が使われているとのこと

git cloneしてきてすぐに run.sh をしたときに使われる tool_conf.xml

実際にはこれが使われているようだ。

config/tool_conf.xml.sample

おそらくファイル名を変更したほうがよさそうではある。

config/tool_conf.xml

ツールはうまく動いているようだが赤くなってエラーになっている場合

  • 終了ステータスコードが0になっているか?
  • 標準エラーになにか出力されていないか?(ちょっとでも出力されると、エラーと判定される)

実際に判定している部分

おそらくここ

galaxy/output_checker.py at c78a23cb873cf5cbcf177cfa7052ae6dad506eea · galaxyproject/galaxy

おそらく、テストコード

galaxy/test_job_output_checker.py at c78a23cb873cf5cbcf177cfa7052ae6dad506eea · galaxyproject/galaxy

WORKAROUND

XMLのなかのツールを実行する部分で、全部標準出力にする。

2>&1 

これをつけて回避できなくはない。

ただし本当のエラーを見落としかねない

perl の WORKAROUND

perl の Warning ならば、-X で解決できるケースもある。

perl -X

TODO

ジョブを止めた時の処理に関する扱いはあるか?

ツールが表示されない

きちんと、タグをとじていないとか、
xmlとしてまずい形式だとよみこまれないようだ。

CDATAをつかったほうがよさそうだけど

気をつけるのは、
* 閉じタグ
* コメントの中の -- とハイフンが2つあるとき
* > 左にひらいている記号

管理者向けガイド

Tool xml

Galaxy tool schema document

tool inputs conditional

tools inputs conditonal

Sun Gridengine

stderr に何か出力されると、エラーになる?

training

A collection of training material from offered Galaxy courses

Galaxy Server administration

Database の構造

Galaxy Database Schema

WebAPI serverside

lib/galaxy/webapps/galaxy/api

API 使ったサンプル

API sample

API を叩くライブラリ bioblend

python でコードがかけるならば

API を叩くライブラリをラップしたもの parsec

bioblend をラップしたコマンドラインツール

lint

snelis/tox docker hub

tox -e py27-lint

galaxy .travis.yml

Makefile

ここで、tar.gzなどを作っていると思われる。

(dev/Makefile)[https://github.com/galaxyproject/galaxy/blob/dev/Makefile]

追記2017-01-11
そうではないようで、新しいブランチを作ったりするもののようだ

古いGalaxy Dockerで、起動停止をすると、データが消えるとき

postgresqlのデータが、消えることがある。
そのときは、

/etc/postgresql/9.3/main/postgresql.conf

data_directory = '/var/lib/postgresql/9.3/main/'

この行を削除するとよい。

参考
* remove data directory from the provision file · bgruening/docker-galaxy-stable@8086233

コンフィグの読み込みについて

実例のメモ

GALAXY_CONFIG_CLEANUP_JOB=${GALAXY_CONFIG_CLEANUP_JOB:-onsuccess}

のように設定をしていて、実際にdockerコンテナ内では、

GALAXY_CONFIG_CLEANUP_JOB

に、値が保存されている。
実際にGalaxyのどこで取得しているのかを調査している
https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/config.py

GalaxyConfigBuilder

def load_app_properties(
    kwds={},
    ini_file=None,
    ini_section="app:main",
    config_prefix="GALAXY_CONFIG_"
):

job_config_file job_conf.xml の読み込みについて

job_config_file の定義は、上のサイトにでている

Galaxy からジョブが投入できない

クラスタ環境にジョブを投入するには、1つは実行ノードが起動している必要があるようだ。

下記のスレッドをみると、CloudManでもそうだったようです。

ジョブスケジューラにジョブをなげたら "The cluster DRM system terminated this job"

以下に書いてある。

大抵は wall time だろうとのこと。

ツールごとに、実行する場所を変えたい

job_conf.xml で指定する

例、ことなるキューになげるサンプル

<?xml version="1.0"?>
<job_conf>
    <plugins workers="8">
        <plugin id="sge" type="runner" load="galaxy.jobs.runners.drmaa:DRMAAJobRunner">
            <param id="drmaa_library_path">/usr/lib/gridengine-drmaa/lib/libdrmaa.so.1.0</param>
        </plugin>
    </plugins>
    <handlers>
        <handler id="main"/>
    </handlers>
    <destinations default="cluster">
        <destination id="cluster" runner="sge">
            <param id="embed_metadata_in_job">False</param>
        </destination>
        <destination id="cluster_e1" runner="sge">
            <param id="nativeSpecification"> -q e1only </param>
            <param id="embed_metadata_in_job">False</param>
        </destination>
        <destination id="cluster_e2" runner="sge">
            <param id="nativeSpecification"> -q e2only </param>
            <param id="embed_metadata_in_job">False</param>
        </destination>
    </destinations>
    <limits>
        <limit type="registered_user_concurrent_jobs">1</limit>
        <limit type="anonymous_user_concurrent_jobs">1</limit>
        <limit type="destination_user_concurrent_jobs">1</limit>
        <limit type="destination_total_concurrent_jobs">1</limit>
        <limit type="unregistered_user_concurrent_jobs">1</limit>
    </limits>
    <tools>
        <tool id="e1onlyjob" destination="cluster_e1" />
        <tool id="e2onlyjob" destination="cluster_e2" />
    </tools>
</job_conf>

データのアップロードに関して

2GB程度までなら、公式のツール?でもよいようである。
あとは、wgetやcurlでとってきて、直接配置する。またはFTP(Galaxyの)にアップロードするようである。

Quota制限について

その他 Galaxy 公式サポート関連

書きかけ、Galaxy デバッグ環境について

Galaxyのプロセスに対して、pdbをアタッチ、特にリモートからアタッチしたいことがある。
そんなときは、pdb-cloneが使えるかもしれない

デバッグしたいところに以下のコード(ただしそれをやる前にmainでやることがある、それについては、下に書いた)

from pdb_clone import pdb; pdb.set_trace_remote()

Docker Galaxy の場合、
galaxy webは、以下のもの、中身pythonスクリプト
ただしこのスクリプトはvirtualenvで動いている。
pdb-cloneをいれるには

source /galaxy_venv/bin/activate

virtualenv環境にはいっていることを確認してから

pip install pdb-clone

/galaxy_venv/bin/uwsgi
に、

from pdb_clone import pdbhandler; pdbhandler.register()

galaxy 起動後は pdb-attach
いかのオプションがなくても実行できたようにおもっている

--kill --pid PID
(galaxy_venv)root@19149b574344:/galaxy_venv# pdb-attach
Connected to uwsgi at ('127.0.0.1', 7935), pid: 1554.
> /galaxy_venv/bin/uwsgi(10)<module>()
-> if __name__ == '__main__':
(Pdb)

TODO

コンフィグの状態を確認した。
app.config ?

ブラウザで想定がのエラーがでたときのチェック方法

Docker Galaxy を使っているとき、
本来エラーがでるはずではないと、期待されている、または、そのようなコードになっていないようにみえるときは、

/usr/bin/startup_lite

このコマンドで起動すると必要最低限のものしか起動がされない。

データベーススキーマのチュートリアル

Database schema tutorial

tool の xml の構造、特に tool > help について

いくつか reStructuredText で何かをかけるようだ

infomark とか warningmark とか。画像。

Galaxy Architecture

Docker Galaxy Stable のadminユーザ追加方法

create_galaxy_user.py は、ここ にある。
ただしこのファイルは、ansibleの記法を含んでいる

run.sh のオプション

daemon で起動する

./run.sh --daemon

daemon を停止する

./run.sh --stop-daemon

再起動

./run.sh restart

CVMFS使ったデータの配布関連

Galaxyでは、
CERNの開発した、CernVM File System | cernvm.web.cern.ch を利用した、データの配布方法があるらしい。

何を配布しているのかなどを調べて書いていく予定。

CVMFSのマニュアル
* Welcome to CernVM-FS’s documentation! — CernVM-FS 2.4.3 documentation

データレポジトリかと思われる。要確認
レポジトリサーバ自体のコードかもしれない。

CVMFSのクライアントをいれるための、ansible playbook

データをレポジトリからとってくるための、ansible playbookのようだ

GalaxyCloudの Read the Docs

Onedataについてのドキュメント、Onedataが何かは要確認

Docker Galaxy Stable における CVMFS

以下のところによると、 usegalaxy にあるデータ同じものが使えるようです。

コードの構造

Galaxy のシステム概念図?

usegalaxy.org の構成、スライド32枚目

環境構築手順など

usegalaxy.org のクォータ(quota, 制限)についてのドキュメント

Planemoを使ってCWL

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1