HSC pipeline コマンド全般


HSC pipeline コマンドで使える共通パラメータのまとめ

  • ROOT
    データリポジトリへの入力パス。
  • -h, –-help
    ヘルプオプション。コマンド毎にヘルプの結果は多少異なります。
  • -–calib=<一次処理用データディレクトリ>
    一次処理用データリポジトリへの入力パス。特別指定しなくても Pipeline での解析は実行されます。その場合は $home/hsc[_mapper のあるディレクトリ]/CALIB 以下に一次処理用データが生成されます。
  • -–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 やディレクトリにデータを出力したい場合

特に stack.py において、coadd 画像を異なる rerun やディレクトリに出力する時、 以下に示すようないくつかの方法があります。

  • <入力データ用 rerun> と <出力データ用 rerun> をコロン (:) を使って分ける

    # dith_16h_test ディレクトリからデータを読み込み、coadd 画像は dith_16h_output ディレクトリに出力する場合
    stack.py $home/hsc --rerun=dith_16h_test:dith_16h_output --id filter=HSC-I tract=0 --selectId visit=902798..902808:2 ccd=0..103
    
    # 説明:
    #   stack.py <解析用ディレクトリ> --rerun=<入力データ用rerun>:<出力データ用rerun>
    
  • <解析用ディレクトリ> に <入力データ用 rerun> のフルパスを指定し、rerun には <出力データ用 rerun> を指定する

    # dith_16h_test ディレクトリからデータを読み込み、coadd 画像は rerun/dith_16h_test/rerun/dith_16h_output に出力する場合
    stack.py $home/hsc/rerun/dith_16h_test --rerun=dith_16h_output --id filter=HSC-I tract=0 --selectId visit=902798..902808:2 ccd=0..103
    
    # 説明:
    #   stack.py <入力データ用rerun> --rerun=<出力データ用rerun>
    #
    # !!注意!! この方法では新たに rerun が作られるが、$home/hsc/rerun 下ではなく、
    #         $home/hsc/rerun/dith_16h_test/rerun 下になる
    
  • –output を使う

    # dith_16h_test ディレクトリからデータを読み込み、coadd 画像は $home/hsc/rerun/dith_16h_output ディレクトリに出力する場合
    stack.py $home/hsc/rerun/dith_16h_test --output=$home/hsc/rerun/dith_16h_output --id filter=HSC-I tract=0 --selectId visit=902798..902808:2 ccd=0..103
    
    # 説明:
    #   stack.py <入力データ用rerun> --output=<出力データ用rerun フルパス>
    #
    # !!注意!! --output の指定先は出力ディレクトリ/rerun をフルパスで指定する
    

いずれの方法でも既に一度 stack.py が実行されている場合、HSC pipelien では /rerun/[rerun]/[filter]/[tract]/[patch] 下にある warp-*.fits を使用して、 天体データの重ね合わせや天体検出が行われ、自身で設定した出力データディレクトリ/rerun に coadd 画像が生成されます。 もし warp 画像から生成し直したい場合は、既存の deepCoadd 下のディレクトリを移動する/名前を変更し、 stack.py を実行してください。

# deepCoadd 下の既存のディレクトリ名を変更
mv $home/hsc/rerun/dith_16h_test/deepCoadd/HSC-I $home/hsc/rerun/dith_16h_test/deepCoadd//tmp_HSC-I

コマンドのパラメータ設定が知りたい場合

コマンドの引数とその詳細なパラメータ設定は、ヘルプと config ファイルから調べることができます。 以下にその調べ方を紹介します。

# ヘルプの見方
# -h と省略して使用することも可能
mosaic.py --help

# config ファイルの見方
# mosaic.py の次には、"_mapper" が置かれているディレクトリを指定する
mosaic.py $home/HSC/ --show config

例えば、mosaic.py のヘルプでは以下のようなパラメータ設定がターミナル上に返されます。

positional arguments:
        ROOT                  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 LOGLEVEL, --loglevel LOGLEVEL
                          logging level
        -T [COMPONENT=LEVEL [COMPONENT=LEVEL ...]], --trace [COMPONENT=LEVEL [COMPONENT=LEVEL ...]]
                          trace level for component
        --debug               enable debugging output?
        --doraise             raise an exception on error (else log a message and
                          continue)?
        --logdest LOGDEST     logging destination
        --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 PROCESSTIMEOUT, --process-timeout PROCESSTIMEOUT
                          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 and eups versions to file~N backup.
        --id [KEY=VALUE1[^VALUE2[^VALUE3...] [KEY=VALUE1[^VALUE2[^VALUE3...] ...]]
                          data ID, with raw CCD keys + tract

Notes:
        * the --rerun option allows the input and output directories to be specified
          simultaneously, and relative to the same root.
        * --config, --configfile, --id, --trace 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:
                * wrong: --configfile=foo bar
        * right: --configfile foo bar

コマンドを自分で編集したい場合

何かのコマンドの中身を自分で編集したいと思った時、該当する python script を探す方法を紹介します。 以下では例として makeDiscreteSkyMap.py の中身を書き換えたいと思っているとします。

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

    which makeDiscreteSkyMap.py
    
    # which の結果
    # >> $HOME/hscpipe/3.7.3/Linux64/pipe_tasks/HSC-3.9.0/bin/makeDiscreteSkyMap.py
    
  2. makeDiscreteSkyMap.py の script 中身を確認する

    cat $HOME/hscpipe/3.7.3/Linux64/pipe_tasks/HSC-3.9.0/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 以下にある phthon > lsst > pipe > tasks に python モジュールとクラスが格納されています。
    cd $PIPE_TASKS_DIR/python/lsst/pipe/tasks
    
  5. コマンドの中で使用されているクラスの python script を編集する
    makeDiscreteSkyMap.py の場合は「MakeDiscreteSkyMapTask」 というクラスを使用しているので、その script を編集します。
    vi makeDiscreteSkyMap.py
    

もし上記の手順でスクリプトを編集できない場合は、以下の手順を踏んでください。 /opt/hscpipe/3.7.3/Linux64/pipe_tasks/HSC-3.9.0/python/lsst/pipe/tasks/calibrate.py を含む python 関係のソースを次のようにコピーします。:

$ mkdir -p ~/opt/hscpipe/3.7.3/Linux64/pipe_tasks
$ cp -r /opt/hscpipe/3.7.3/Linux64/pipe_tasks/HSC-3.9.0 ~/opt/hscpipe/3.7.3/Linux64/pipe_tasks/
#
# ソースコードを編集
$ setup -jr ~/opt/hscpipe/3.7.3/Linux64/pipe_tasks/HSC-3.9.0

実行時は変更を反映させるため、毎回 setup -jr ... を行って下さい。

設定を確認したい場合は以下のコマンドを実行してください。:

$ eups list
pipe_tasks            LOCAL:/home/<ユーザー名>/opt/hscpipe/3.7.3/Linux64/pipe_tasks/HSC-3.9.0   setup