コマンド実行時のエラーに関する QA


makeDiscreteSkyMap.py で tract が定義されません

makeDiscreteSkyMap.py を実行した際に、以下のようなエラーが出てしまった場合は、

Note

makeDiscreteSkyMap FATAL: Failed: No data found from which to compute convex hull

SDSS 領域外であることが原因です。そのため、アストロメトリが成功せず、tract も生成されません。 この場合は、自身でアストロメトリ用カタログファイルを用意してください(参照)。


コマンド実行時に FATAL: Failed in task initialization というエラーが出ました

reduceFrames.py や stack.py 実行時に下記のようなエラーが発生して止まってしまった場合、

Note

FATAL: Failed in task initialization: Config does match existing config on disk for this task; tasks configurations must be consistent within the same output repo (override with –clobber-config)

実行したコマンドの最後に

--clobber-config

を追加して下さい。 hscpipe では同一の rerun において、configration を変更して解析を行うことを禁じています。 –clobber-config は config ファイルを上書きするためのものです。 詳細は HSC pipeline コマンドで使える共通パラメータのまとめ を参照して下さい。

また、reduceFrames 実行時にコンフィグを変更していないにもかかわらず、このエラーが出るバグがあります。 その際も –clobber-config をつけることで回避できます。


reduceFrames.py 実行時に OpenBLAS: pthread_create error が出ました

reduceFrames.py 実行時に下記のようなエラーが発生して止まってしまった場合、

Note

OpenBLAS: pthread_create error in blas_thread_init function. Error code:11

環境変数を以下のように設定して下さい。

$ OMP_NUM_THREADS=1 reduceFrames.py ~/HSC --rerun= ....

これは線形方程式を解く OpenBLAS が用いるスレッド数を指定する環境変数です。 pipeline は 1 プロセスにつき 1 スレッドですが、BLAS ライブラリは例外で一つのプロセスのなかでたくさんのスレッドを作ろうとします。 OMP_NUM_THREADS はこの際のプロセス当りのスレッド数を決める環境変数です。

Warning

ただし、 mosaic.py だけは他と違い、シングルプロセスでたくさんのスレッドを走らせるので、OMP_NUM_THREADS を 1 にはしないで下さい。


Narrow-band filter での reduceFrames.py 実行時に ColortermNotFoundError が出ました

HSC pipeline filter 対応表 の中で (1) の注釈がついたフィルターにおいて、そのまま reduceFrames.py を実行してしまうと以下のようなエラーが出ます (例は NB515 の場合)。

Note

ColertermNotFound: No colorterm set for filter N515 with astrometry_net_data version xxxxxxx

この場合は以下のような config.py ファイルを作成し、そのフィルター情報を読み込ませる必要があります (NB515 の場合)。さらに、自身で用意されたアストロメトリ用カタログファイルの名前は hsc で始まっていなければなりません (参照)。

# config.py の中身
root.processCcd.calibrate.astrometry.solver.filterMap["N515"]="NB0515"

from lsst.meas.photocal.colorterms import ColortermConfig
root.processCcd.calibrate.photocal.colorterms.library['hsc*'].group['N515']=ColortermConfig()
root.processCcd.calibrate.photocal.colorterms.library['hsc*'].group['N515'].c2= 0.0
root.processCcd.calibrate.photocal.colorterms.library['hsc*'].group['N515'].c1= 0.0
root.processCcd.calibrate.photocal.colorterms.library['hsc*'].group['N515'].c0= 0.0
root.processCcd.calibrate.photocal.colorterms.library['hsc*'].group['N515'].primary= 'N515'
root.processCcd.calibrate.photocal.colorterms.library['hsc*'].group['N515'].secondary= 'N515'

config.py が準備できましたら、以下のように最後に -C config.py を追加して reduceFrames.py コマンドを実行して下さい。

reduceFrames.py $home/hsc --calib=$home/hsc/CALIB --rerun=dith_16h_test --id filter=HSC-I visit=902798..902808:2 --config processCcd.isr.doFringe=False -C config.py

続く mosaic でも同様にコンフィグファイルを作成し、コマンド実行時に指定する必要があります。

# config_mosaic.py
from lsst.meas.photocal.colorterms import ColortermConfig
root.colorterms.library['hsc*'].group['N515']=ColortermConfig()
root.colorterms.library['hsc*'].group['N515'].c2= 0.0
root.colorterms.library['hsc*'].group['N515'].c1= 0.0
root.colorterms.library['hsc*'].group['N515'].c0= 0.0
root.colorterms.library['hsc*'].group['N515'].primary= 'N515'
root.colorterms.library['hsc*'].group['N515'].secondary= 'N515'

コマンドは以下のようになります。

mosaic.py $home/hsc --calib=$home/hsc/CALIB --rerun=dith_16h_test --id visit=902798..902808:2 ccd=0..103 tract=0 -C config_mosaic.py

この時、一度 mosaic を走らせた後に再び走らせる場合は、さらに –clobber-config をつけて下さい。 –clobber-config の詳細については こちら


mosaic.py 実行時にモザイクが解けずに失敗しました

mosaic.py 実行時に以下のようなエラーで止まってしまった場合、

Note

Exception: solving linear equation failed: dgesv returned 2620

モザイクを解くために必要な天体数が少ないことが原因の一つとして考えられます。検出された天体がアストロメトリカタログのどの天体に一致したか (マッチしたか) というリストは MATCH-/ML-xxxx.fits なので、そのファイルの天体数を visit/CCD ごとに確認していきます。MATCH- と ML- は基本的には同じですが、ML-は pipeline 以外でも参照できる仕様です。 例えば、以下のようなコマンドで調べることができます。

for i in output/xxxxx/HSC-I/output/ML-*.fits ; do echo $i $(head -c$((80*36*4)) $i | fold | grep NAXIS2) ; done

これでマッチリストの天体数が確認できますので、他の visit/CCD に比べて極端に天体数が少ないものは除いて処理して下さい。 CCD = 9 と 13 を除いてモザイクを行いたい場合、

mosaic.py <解析用ディレクトリ> --calib=<1次処理用データディレクトリ> --rerun=xxxxxxxx --id visit=xxxxx ccd=0..8^10..12^14..103 tract=0

このように CCD を指定することができます。


hanaco で 1次処理用データ作成中に qsub:command not found が出て止まりました

hanaco にはバッチジョブをサブミットする際のスケジューラが入っていないので、ローカルで処理をするオプションをコマンドに追加して下さい。 詳細は こちら を参照して下さい。 1次処理用データ作成以降の手順においても、「バッチ処理のオプションが使用できます」と書かれたコマンドに関しては同様にオプションを追加して下さい。


特定 CCD 起因で FLAT 画像作成が失敗しました

2016年11月21日以降、CCD 33 においてハード障害が起きていることが確認されています。その影響により、以下のようなエラーメッセージが出て、reduceFlat.py が失敗することがあります。

flat FATAL: Failed: Bad exposure scales: [[9.502126862373885 9.499400187124834 9.498856535788773 9.496713880612939
...
[9.755296139139855 9.752648112376978 9.752002573201265 9.749887192083907
9.748172542114258 9.752851785173549 9.753830962276854 9.752436002528357
9.752959752363898 9.751412547931334]] --> [ nan  nan  nan  nan  nan  nan  nan  nan  nan  nan]

この場合、まずは CCD 33 を抜いて reduceFlat.py を走らせて下さい。

reduceFlat.py $home/hsc --calib=$home/hsc/CALIB --rerun=<rerun> --id visit=902690..902704:2 ccd=0..32^34..111 --detrendId calibVersion=all

この時、CCD 33 以外の全ての CCD で FLAT 画像が作成されている場合は defects.dat を定義・登録することで回避することができます。以下に詳細を示します。

自身のローカルマシンに pipeline をインストールしている場合

defects ディレクトリに移ります。以下の例は version 4.0.5 の場合です。

$ cd /<pipeline DIR>/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3/hsc/defects
$ ls
2013-01-31  2014-04-03  2014-06-01  2014-09-01  defectRegistry.sqlite3

# 今後、このディレクトリ中に新たにファイルを作ることになりますので、不安な方は backup を取っておいて下さい。
# pipeline のバージョンが変わると ../HSC-4.0.3/ の部分が変わりますのでご注意下さい。

新しく登録する defects.dat を置くためのディレクトリを作成します。これはいつのデータからこの defects を適用するかの日付になります。 今回は 2016年11月21日からですので、

$ mkdir 2016-11-21

新たに defects.dat を作成します。

$ vi defects.dat

(defects.dat の中身)
#
# Defects file
#
# Convert to a fits table using getDefectFits.py;  this is done for you by running scons
#
# CCD x0    y0    width height
# Dead amps
33    0     0    1024   4176

defects の fits ファイルを作成します。

$ setup-hscpipe
$ genDefectFits.py /<pipeline DIR>/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3/hsc/hsc_geom.paf defects.dat .
$ ls
defects.dat  defects_33.fits
# defects_33.fits ができていれば成功です。

defect レジストリに登録します。

$ genDefectRegistry.py --create --root . -v

$ sqlite3 defectRegistry.sqlite3

sqlite> .header on
sqlite> select * from defect;
id|path|version|ccdSerial|validStart|validEnd
1|2013-01-31/defects_14.fits|./2013-01-31|14|2013-01-31|2037-12-31
2|2013-01-31/defects_17.fits|./2013-01-31|17|2013-01-31|2037-12-31
3|2013-01-31/defects_23.fits|./2013-01-31|23|2013-01-31|2037-12-31
4|2013-01-31/defects_33.fits|./2013-01-31|33|2013-01-31|2016-11-20T23:59:59
5|2016-11-21/defects_33.fits|./2016-11-21|33|2016-11-21|2037-12-31
6|2013-01-31/defects_45.fits|./2013-01-31|45|2013-01-31|2037-12-31
7|2014-09-01/defects_0.fits|./2014-09-01|0|2014-09-01|2037-12-31
8|2014-04-03/defects_9.fits|./2014-04-03|9|2014-04-03|2014-05-31T23:59:59
9|2014-06-01/defects_9.fits|./2014-06-01|9|2014-06-01|2014-08-31T23:59:59
10|2014-09-01/defects_9.fits|./2014-09-01|9|2014-09-01|2037-12-31
11|2013-01-31/defects_90.fits|./2013-01-31|90|2013-01-31|2037-12-31
12|2013-01-31/defects_100.fits|./2013-01-31|100|2013-01-31|2037-12-31
13|2013-01-31/defects_78.fits|./2013-01-31|78|2013-01-31|2037-12-31

# defects_33.fits が登録されていれば完了です。

hanaco 等、ソースを直接編集できない場合

ソースを直接編集できない場合は、ローカルディレクトリにソースをコピーして、編集し、設定を反映させる必要があります。以下の例では、ローカルの ~/opt/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3 にコピーするものとします。

# /<pipeline DIR>/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3 以下を ~/opt/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3 にコピー。
# hanaco の場合は /data/ana/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3 です。
$ cp -r /<pipeline DIR>/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3 ~/opt/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3

日付フォルダの作成以降は ~/opt/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3/hsc/defects に移動して作業を行います。以降の手順は上記をご確認下さい。

defect レジストリに登録が完了しましたら、ローカルの設定を反映させます。

$ setup -jr ~/opt/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3

$ eups list
obs_subaru            LOCAL:/home/<user>/opt/hscpipe/4.0.5/Linux64/obs_subaru/HSC-4.0.3         setup
# このようになっていれば完了です。
# 実行時は変更を反映させるため、毎回 setup -jr ... を行って下さい。