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-config
    HSC 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 の中身を書き換えたいと思っているとします。

  1. makeDiscreteSkyMap.py の python script のある場所を確認する

    which makeDiscreteSkyMap.py
    
    # which の結果
    # >> $HOME/hscpipe/5.4/stack_5.4/Linux64/pipe_tasks/5.4-hsc/bin/makeDiscreteSkyMap.py
    
  2. 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()
    """
    
  3. コマンドが読み込んでいる python モジュールを調べる
    makeDiscreteSkyMap.py の場合は「lsst.pipe.tasks.makeDiscreteSkyMap」 というモジュールから「MakeDiscreteSkyMapTask」というクラスを呼び出しています。
  4. モジュールがあるディレクトリに移動
    モジュールがあるディレクトリには 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
    
  5. コマンドの中で使用されているクラスの 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