HSC pipeline コマンド全般¶
HSC pipeline コマンドで使える共通パラメータのまとめ¶
- ROOTデータリポジトリへの入力パス。
- -h, –-helpヘルプオプション。コマンド毎にヘルプの結果は多少異なります。
- -–calib <一次処理用データディレクトリ>一次処理用データリポジトリへの入力パス。特別指定しなくても Pipeline での解析は実行されますが、一次処理用データは ~/HSC/rerun/[rerun] にできてしまうので注意。
- -–output <出力データディレクトリ>出力データ用ディレクトリへのパス(rerun を設定してある場合は不要)。特に、ある rerun で解析を実行した際にる出力データを他のディレクトリに置きたい場合に有効なパラメータです。
- -–rerun <rerun 名>ある解析プロセスの名前。基本的には、<rerun 名> のディレクトリ下のデータを参照し解析が実行され、<rerun 名> のディレクトリ下に解析コマンド実行後のデータが生成されます。基本的に rerun の設定は 1 つの解析ランにおいて 1 rerun となっています。
- -c <config 項目>=<パラメータ値>, –-config <config 項目>=<パラメータ値>ある config パラメータを無効にするオプション。例えば -c foo=newfoo bar.baz=3 のように使います。変更したい config パラメータが大量にある場合は、 自身で config ファイルを準備し、-C で読み込ませるという方法もあります。
- -C <config ファイル名>, –-configfile <config ファイル名>デフォルトの config パラメータを、自分で用意した config ファイル内のパラメータに置き換えてコマンドを使う時のオプション。config ファイルには 一行一パラメータを書き込んでください。
- -L <ログメッセージのレベル> –-loglevel <ログメッセージのレベル>ログメッセージのレベルを特定する。ログ内のおかしなメッセージを調べたければ DEBUG を、デフォルト設定時の基本的なコマンド情報は INFO を、 警告情報のみ見たければ WARN を、HSC Pipeline コマンドのタスクの失敗箇所のみ調べたければ FATAL を追加してください。
- –-debug可能な debug 出力。
- –-doraiseエラーでの例外を取り上げるパラメータ。エラーメッセージの debug のため、ログメッセージ全体から例外だけ取り出して処理したい時に使用できます。
- –-logdest LOGDESTログメッセージを自身で設定した場所にコピーしたい時に指定します(解析中のログメッセージそのものはターミナルにも出力されます)。
- –-show [{config,data,tasks,run} [{config,data,tasks,run} …]]自身で指定した情報のみを表示するためのパラメータ。恐らく最も使うパラメータは –show config です。このパラメータを使用すると、全ての config パラメータの情報をターミナルに表示することができます(詳細は コマンドのパラメータ設定が知りたい場合)。また、config パラメータ中のある特定のキーワードだけ抜き出して検索することも可能です。例えば、’background‘ という文字が含まれるパラメータだけ抜き出して表示するには –show config=*background* と設定してください。この他に有用なパラメータは –show tasks です。このパラメータでは現在自身が使用しているHSC Pipeline コマンドで呼び込まれているタスクをターミナルに出力してくれます。
- -j <プロセス数>, –-processes <プロセス数>使用するプロセスの数を指定します。このパラメータを用いれば1 ノード上で複数のプロセス(マルチプロセス)を発生させることができます。
- -t <最大経過時間 [秒]>, –-process-timeout <最大経過時間 [秒]>マルチプロセスの最大経過時間 [秒] を指定します。指定した時間になるとプロセスは終了します。
- –-clobber-output既存の出力ディレクトリを消去した後で、改めて生成させるパラメータ。このパラメータで指定されるプロセスはマルチプロセス前に終了するため、コマンド実行時に ‘-j’ パラメータと同時に付加しても問題ありません。
- -–clobber-configHSC pipeline 内で使用した config パラメータをバックアップし(<data_repo>/config/ のファイルが <foo> –> <foo>~1 に変更される)、古い confing ファイルを上書きする場合のパラメータ。解析コマンドが実行される度に全ての config パラメータの情報は解析リポジトリに保存されます。もしある既存の rerun のもとで何かパラメータを変更した場合、生成されるデータの均一性が保証されないため、HSC pipeline ではそのコマンドの実行を拒否します。しかし、–clobber-config を付加することで既存の config パラメータは上書きされ、コマンドを実行することができます。
- –-id <キーワード>=<パラメータ値> <キーワード>=<パラメータ値> …解析を実行したいデータ ID を指定します。例えば –id visit=12345 ccd=1,2 のように使用できます。
異なる rerun やディレクトリにデータを出力したい場合¶
特に coaddDriver.py において、coadd 画像を異なる rerun やディレクトリに出力する時、 以下に示すようないくつかの方法があります。 いずれの方法でも既に一度 coaddDriver.py が実行されている場合、 /rerun/[rerun]/deepCoadd/[filter]/[tract]/[patch] 下にある warp-*.fits を使用して、 天体データの重ね合わせや天体検出が行われ、自身で設定した出力データディレクトリ/rerun に coadd 画像が生成されます。
[入力データ用 rerun] と [出力データ用 rerun] をコロン (:) を使って分ける
# test1 ディレクトリからデータを読み込み、coadd 画像は test2 ディレクトリに出力する場合 coaddDriver.py $home/hsc --rerun test1:test2 --id filter=HSC-I tract=0 --selectId visit=224608..224888:2 ccd=0..103 # 説明: # coaddDriver.py [解析ディレクトリ] --rerun [入力データ用rerun]:[出力データ用rerun]
[解析ディレクトリ] に [入力データ用 rerun] のフルパスを指定し、rerun には [出力データ用 rerun] を指定する
# test ディレクトリ ($home/hsc/rerun/test) からデータを読み込み、coadd 画像は rerun/TEST/rerun/test2 に出力する場合 coaddDriver.py $home/hsc/rerun/test --rerun=test2 --id filter=HSC-I tract=0 --selectId visit=224608..224888:2 ccd=0..103 # 説明: # coaddDriver.py [入力データ用rerun フルパス] --rerun [出力データ用rerun] # # !!注意!! この方法では新たに rerun が作られるが、$home/hsc/rerun 下ではなく、 # $home/hsc/rerun/test/rerun 下になる
–output を使う
# test ディレクトリからデータを読み込み、coadd 画像は $home/hsc/rerun/test2 ディレクトリに出力する場合 # coaddDriver.py を走らせるディレクトリは $home/hsc coaddDriver.py $home/hsc/rerun/test --output rerun/test2 --id filter=HSC-I tract=0 --selectId visit=224608..224888:2 ccd=0..103 # 説明: # coaddDriver.py [入力データ用rerun] --output [出力データ用rerun] # 出力データ用 rerun の指定は、coaddDriver.py を走らせるディレクトリからの相対パスになります。
もし warp 画像から生成し直したい場合は、既存の deepCoadd 下のディレクトリを移動する/名前を変更し、 coaddDriver.py を実行してください。
# deepCoadd 下の既存のディレクトリ名を変更
mv $home/hsc/rerun/test/deepCoadd/HSC-I $home/hsc/rerun/test/deepCoadd/tmp_HSC-I
コマンドのパラメータ設定が知りたい場合¶
コマンドの引数とその詳細なパラメータ設定は、ヘルプと config ファイルから調べることができます。 以下にその調べ方を紹介します。
# ヘルプの見方
# -h と省略して使用することも可能
mosaic.py --help
# config ファイルの見方
# mosaic.py の次には、"_mapper" が置かれているディレクトリを指定する
mosaic.py $home/HSC/ --show config
例えば、mosaic.py のヘルプでは以下のようなパラメータ設定がターミナル上に返されます。
usage: mosaic.py input [options]
positional arguments:
input path to input data repository, relative to
$PIPE_INPUT_ROOT
optional arguments:
-h, --help show this help message and exit
--calib RAWCALIB path to input calibration repository, relative to
$PIPE_CALIB_ROOT
--output RAWOUTPUT path to output data repository (need not exist),
relative to $PIPE_OUTPUT_ROOT
--rerun [INPUT:]OUTPUT
rerun name: sets OUTPUT to ROOT/rerun/OUTPUT;
optionally sets ROOT to ROOT/rerun/INPUT
-c [NAME=VALUE [NAME=VALUE ...]], --config [NAME=VALUE [NAME=VALUE ...]]
config override(s), e.g. -c foo=newfoo bar.baz=3
-C [CONFIGFILE [CONFIGFILE ...]], --configfile [CONFIGFILE [CONFIGFILE ...]]
config override file(s)
-L [LEVEL|COMPONENT=LEVEL [LEVEL|COMPONENT=LEVEL ...]], --loglevel [LEVEL|COMPONENT=LEVEL [LEVEL|COMPONENT=LEVEL ...]]
logging level; supported levels are
[trace|debug|info|warn|error|fatal]
--longlog use a more verbose format for the logging
--debug enable debugging output?
--doraise raise an exception on error (else log a message and
continue)?
--profile PROFILE Dump cProfile statistics to filename
--show SHOW [SHOW ...]
display the specified information to stdout and quit
(unless run is specified).
-j PROCESSES, --processes PROCESSES
Number of processes to use
-t TIMEOUT, --timeout TIMEOUT
Timeout for multiprocessing; maximum wall time (sec)
--clobber-output remove and re-create the output directory if it
already exists (safe with -j, but not all other forms
of parallel execution)
--clobber-config backup and then overwrite existing config files
instead of checking them (safe with -j, but not all
other forms of parallel execution)
--no-backup-config Don't copy config to file~N backup.
--clobber-versions backup and then overwrite existing package versions
instead of checkingthem (safe with -j, but not all
other forms of parallel execution)
--no-versions don't check package versions; useful for development
--id [KEY=VALUE1[^VALUE2[^VALUE3...] [KEY=VALUE1[^VALUE2[^VALUE3...] ...]]
data ID, with raw CCD keys + tract
--diagDir DIAGDIR Directory in which to dump diagnostics
--diagnostics Save diagnostics plots?
--snapshots Save snapshots of ObsVecs during iteration?
--numCoresForReadSource NUMCORESFORREADSOURCE
Number of cores to be used for reading source catalog
--readTimeout READTIMEOUT
Timeout (sec) for reading inputs with multiple
processes
Notes:
* --config, --configfile, --id, --loglevel and @file may appear multiple times;
all values are used, in order left to right
* @file reads command-line options from the specified file:
* data may be distributed among multiple lines (e.g. one option per line)
* data after # is treated as a comment and ignored
* blank lines and lines starting with # are ignored
* To specify multiple values for an option, do not use = after the option name:
* right: --configfile foo bar
* wrong: --configfile=foo bar
また、–show config を使って config ファイルを確認すると、
root INFO: Loading config overrride file '/opt/hscpipe/5.4/stack_5.4/Linux64/obs_subaru/5.3-hsc+1/config/Mosaic.py'
root INFO: Loading config overrride file '/opt/hscpipe/5.4/stack_5.4/Linux64/obs_subaru/5.3-hsc+1/config/hsc/Mosaic.py'
import lsst.meas.mosaic.mosaicTask
assert type(config)==lsst.meas.mosaic.mosaicTask.MosaicConfig, 'config is of type %s.%s instead of lsst.meas.mosaic.mosaicTask.MosaicConfig' % (type(config).__module__, type(config).__name__)
# Use Chebyshev polynomials for flux fitting?
config.chebyshev=True
# Fit to catalog flux?
config.fluxFitAbsolute=True
# Minimum number of sources to be merged.
# Valid Range = [0,inf)
config.numSourceMerge=2
# flux fitting order
# Valid Range = [0,inf)
config.fluxFitOrder=7
# Solve flux correction?
config.doSolveFlux=True
# number of stars used for fitting per exposure
config.nBrightest=0
# Solve CCD alignment?
config.solveCcd=True
# If True, saturated objects will also be used for mosaicking.
config.includeSaturated=False
...
のように表示されます。特定のパラメータのみを表示させたい場合は、
# "doColorterms" が含まれているものだけを表示
mosaic.py ~/HSC --show config=*doColorterms*
# 以下結果
root INFO: Loading config overrride file '/opt/hscpipe/5.4/stack_5.4/Linux64/obs_subaru/5.3-hsc+1/config/Mosaic.py'
root INFO: Loading config overrride file '/opt/hscpipe/5.4/stack_5.4/Linux64/obs_subaru/5.3-hsc+1/config/hsc/Mosaic.py'
Matching "*doColorterms*" without regard to case (append :NOIGNORECASE to prevent this)
# Apply color terms as part of solution?
config.doColorTerms=True
のようにします。
コマンドを自分で編集したい場合¶
何かのコマンドの中身を自分で編集したいと思った時、該当する python script を探す方法を紹介します。 以下では例として makeDiscreteSkyMap.py の中身を書き換えたいと思っているとします。
makeDiscreteSkyMap.py の python script のある場所を確認する
which makeDiscreteSkyMap.py # which の結果 # >> $HOME/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks/5.4-hsc/bin/makeDiscreteSkyMap.py
makeDiscreteSkyMap.py の script 中身を確認する
cat $HOME/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks/5.4-hsc/bin/makeDiscreteSkyMap.py # makeDiscreteSkyMap.py の中身 """ #!/usr/bin/env python # # LSST Data Management System # Copyright 2008, 2009, 2010 LSST Corporation. # # This product includes software developed by the # LSST Project (http://www.lsst.org/). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the LSST License Statement and # the GNU General Public License along with this program. If not, # see <http://www.lsstcorp.org/LegalNotices/>. # from lsst.pipe.tasks.makeDiscreteSkyMap import MakeDiscreteSkyMapTask MakeDiscreteSkyMapTask.parseAndRun() """
- コマンドが読み込んでいる python モジュールを調べるmakeDiscreteSkyMap.py の場合は「lsst.pipe.tasks.makeDiscreteSkyMap」 というモジュールから「MakeDiscreteSkyMapTask」というクラスを呼び出しています。
- モジュールがあるディレクトリに移動モジュールがあるディレクトリには path が通っています。そのpath 名はコマンド script 内のモジュール名と対応付けられており、lsst. 以下「.」で区切られた2単語で定義されています。 例えば、makeDiscreteSkyMap.py の場合では、モジュールのあるディレクトリの path 名は $PIPE_TASKS_DIR となります。この path 以下にある python > lsst > pipe > tasks に python モジュールとクラスが格納されています。
cd $PIPE_TASKS_DIR/python/lsst/pipe/tasks
- コマンドの中で使用されているクラスの python script を編集するmakeDiscreteSkyMap.py の場合は「MakeDiscreteSkyMapTask」 というクラスを使用しているので、その script を編集します。
vi makeDiscreteSkyMap.py
上記の手順でスクリプトを編集できない場合 (例えば hanaco のように pipeline が共有ディレクトリにあるため、ユーザーが編集できない場合) は、以下の手順を踏んでください。 python 関係のソースを次のようにコピーします。
$ mkdir -p ~/opt/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks
$ cp -r /opt/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks/5.4-hsc ~/opt/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks/
#
# ソースコードを編集
$ setup -jr ~/opt/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks/5.4-hsc
実行時は変更を反映させるため、毎回 setup -jr … を行って下さい。
設定を確認したい場合は以下のコマンドを実行してください。
$ eups list
pipe_tasks LOCAL:/home/<ユーザー名>/opt/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks/5.4-hsc setup