使用頻度の高い API について,主要な内容を記述した, ビギナー向けのリファレンスマニュアルです.
SLLIB クラス: | ストリーム / 文字列 / 文字列配列 / 文字列連想配列 / 多次元配列 |
SLLIB クラス用関数: | 多次元配列用の統計用関数 / 多次元配列用の数学関数 / 多次元配列用の複素関数 |
SLLIB クラス以外: | 定数・型の定義 / C99互換の複素数・複素関数 |
SFITSIO クラス: | fitscc / fits_hdu / fits_image / fits_table / fits_table_col / fits_header / fits_header_record |
SFITSIO クラス以外: | 関数 / 定数・型の定義 / FITSファイルの部分読み出し機能 / FITSテンプレート / 規約外FITS拡張 |
SFITSIOには, 曖昧な文法でFITSの内容を定義できるテンプレートファイルから, データが入っていない新規FITSファイル(fitsccクラスのオブジェクト)を作成する 「テンプレート機能」を持っています. このテンプレートファイルは, FITSヘッダに類似したテキスト形式のファイルで, 普通のテキストエディタで作成します. CFITSIOにもほぼ同じテンプレート機能があり, 様々なFITSフォーマットを管理する等の目的で使われています.
まず,プライマリHDUのみを作成するテンプレートファイルの例を次に示します.
# # Test for Primary only # NAXIS2 = 16 NAXIS1 = 16 BITPIX = 32 FMTTYPE = ASTRO-X xxx image format CHECKSUM = DATASUM = COMMENT ---------------------------------------------------------------- EQUINOX = 2000.0 CTYPE1 = RA---TAN CTYPE2 = DEC--TAN CRPIX1 = 0.0 CRPIX2 = 0.0 CRVAL1 = 0.0 CRVAL2 = 0.0 CDELT1 = 0.1 CDELT2 = 0.1 PC1_1 = 1.0 PC1_2 = 0.0 PC2_1 = 0.0 PC2_2 = 1.0 COMMENT ---------------------------------------------------------------- MESSAGE = 'FITS (Flexible Image Transport System) format is &' / In SFITSIO, CONTINUE 'defined in "Astronomy and Astrophysics", volume 376, &' / this CONTINUE 'page 359; bibcode: 2001A&A...376..359H' / message is not written CONTINUE automatically.
テンプレートでは,
キーワードの位置,=
記号の位置,値の位置,コメントの位置は
順序があっていれば任意で,
横方向の長さ制限はなく,長い文字列値では CONTINUE
は
あってもなくても良いというかなり緩いルールで記述できます.
なお,先頭が「#
」で始まる行はコメント文であり,この部分は無視されます.
では,このテンプレートから作られたFITSファイルのヘッダを見てみましょう.
SIMPLE = T / conformity to FITS standard BITPIX = 32 / number of bits per data pixel NAXIS = 2 / number of data axes NAXIS1 = 16 / length of data axis 1 NAXIS2 = 16 / length of data axis 2 EXTEND = F / possibility of presence of extensions FMTTYPE = 'ASTRO-X xxx image format' / type of format in FITS file FTYPEVER= 0 / version of FMTTYPE definition CHECKSUM= 'ZlBRfj9OZjAOdj9O' / HDU checksum : 2012-01-17T06:07:12 DATASUM = '0 ' / data unit checksum : 2012-01-17T06:07:12 COMMENT ---------------------------------------------------------------- EQUINOX = 2000.0 / equinox of celestial coordinate system CTYPE1 = 'RA---TAN' / type of celestial system and projection system CTYPE2 = 'DEC--TAN' / type of celestial system and projection system CRPIX1 = 0.0 / pixel coordinate at reference point CRPIX2 = 0.0 / pixel coordinate at reference point CRVAL1 = 0.0 / world coordinate at reference point CRVAL2 = 0.0 / world coordinate at reference point CDELT1 = 0.1 / world coordinate increment at reference point CDELT2 = 0.1 / world coordinate increment at reference point PC1_1 = 1.0 / matrix of rotation (1,1) PC1_2 = 0.0 / matrix of rotation (1,2) PC2_1 = 0.0 / matrix of rotation (2,1) PC2_2 = 1.0 / matrix of rotation (2,2) COMMENT ---------------------------------------------------------------- MESSAGE = 'FITS (Flexible Image Transport System) format is defined in &' CONTINUE '"Astronomy and Astrophysics", volume 376, page 359; bibcode: &' CONTINUE '2001A&A...376..359H&' CONTINUE '' / In SFITSIO, this message is not written automatically. END
このように,SFITSIOのテンプレート機能を使うと,
FITSヘッダを定義する時に,ユーザが書かなければならない項目を
最低限で済ませる事ができます.
上記のテンプレートの例では,SIMPLE
,EXTEND
,NAXIS
キーワードおよびFITSの標準的なキーワードに対するコメントを省略していますが,
SFITSIOは自動的に必要なキーワードとコメントとを可能な限り補完し,
キーワードの順序をFITS規約に合うように調整します.
次はバイナリテーブルを作成する場合のテンプレートの例です.
# # Primary # FMTTYPE = 'ASTRO-X XXXX table format' FTYPEVER = 101 EXTNAME = 'Primary' ORIGIN = 'JAXA' # # 2nd HDU : Binary Table # XTENSION = BINTABLE NAXIS2 = 24 PCOUNT = 65536 THEAP = 32768 EXTNAME = XXXX_TEST TXFLDKWD = 'TNOTE,TDESC,TLMIN,TLMAX,TDMIN,TDMAX' TTYPE# = TIME TALAS# = DATE TFORM# = 1D TDESC# = 'This is time' / description of this field TTYPE# = COUNTER TFORM# = 8J TLMIN# = 1 TLMAX# = 16777216 TDMIN# = 0 TDMAX# = 0 TTYPE# = XNAME TFORM# = 16A TTYPE# = VLA TFORM# = 1PJ(0) TNOTE# = 'You can define variable length array in SFITSIO template&' CONTINUE '' / annotation of this field
バイナリテーブルの場合は,プライマリHDUに関する記述を完全に省略する事も できますし,この例のように定義したいキーワードのみ書く事もできます.
2つめのHDUの定義は,必ず「XTENSION
」キーワードから開始し,
BITPIX
,NAXIS
,NAXIS1
,NAXIS2
,
PCOUNT
,GCOUNT
,TFIELDS
を省略可能です.なお,この例で使っている
TXFLDKWD
キーワードは SFITSIO の独自規約で,
FITS規約には存在しないテーブルカラムのキーワード
(例えば,TLMIN
n,TLMAX
n 等)
を宣言するためのものです.
カラム(フィールド)の定義については,
「TTYPE#
」のように,キーワードの数字のかわりにえ
「#
」記号を書くと,自動ナンバリングを行ないます.
ただし,
TTYPE# = TIME TTYPE# = COUNTER TFORM# = 1D TFORM# = 8J
のような並びの場合は,期待通りの動作をしないのでご注意ください.
では,テンプレートから作成したFITSファイルのヘッダを見てみましょう.
SIMPLE = T / conformity to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 0 / number of data axes EXTEND = T / possibility of presence of extensions FMTTYPE = 'ASTRO-X XXXX table format' / type of format in FITS file FTYPEVER= 101 / version of FMTTYPE definition EXTNAME = 'Primary ' / name of this HDU ORIGIN = 'JAXA ' / organization responsible for the data END
XTENSION= 'BINTABLE' / type of extension BITPIX = 8 / number of bits per data element NAXIS = 2 / number of data axes NAXIS1 = 64 / width of table in bytes NAXIS2 = 24 / number of rows in table PCOUNT = 65536 / length of reserved area and heap GCOUNT = 1 / number of groups TFIELDS = 4 / number of fields in each row THEAP = 32768 / byte offset to heap area EXTNAME = 'XXXX_TEST' / name of this HDU TXFLDKWD= 'TALAS,TDESC,TNOTE,TLMIN,TLMAX,TDMIN,TDMAX' / extended field keywords TTYPE1 = 'TIME ' / field name TALAS1 = 'DATE ' / aliases of field name TFORM1 = '1D ' / data format : 8-byte REAL TDESC1 = 'This is time' / description of this field TTYPE2 = 'COUNTER ' / field name TFORM2 = '8J ' / data format : 4-byte INTEGER TLMIN2 = 1 / minimum value legally allowed TLMAX2 = 16777216 / maximum value legally allowed TDMIN2 = 0 / minimum data value TDMAX2 = 0 / maximum data value TTYPE3 = 'XNAME ' / field name TFORM3 = '16A ' / data format : STRING TTYPE4 = 'VLA ' / field name TFORM4 = '1PJ(0) ' / data format : variable length of 4-byte INTEGER TNOTE4 = 'You can define variable length array in SFITSIO template&' CONTINUE '' / annotation of this field END
SFITSIOのテンプレート機能は,次のルールにより動作します.
#
」記号の行は無視されます.
=
」記号の位置,値の位置,「/
」
の位置,コメント文の位置は,
それらの順序がFITSヘッダと同様であれば任意です.
ただし,空白またはタブ文字が行の先頭から8文字続いた場合は,
「空白8文字キーワード」のレコードを作ります.
CONTINUE
を使って複数行に分けて記述してもかまいません.
ただし,CONTINUE
を使った場合は
テンプレート上の接続文字「&
」の位置が
FITSファイルのヘッダに反映されるとは限りません.
T
または F
)と解釈できない場合は
クォーテーションを省略できます.
ただし,CONTINUE
を伴なう場合は,
クォーテーションを省略しない事を推奨します.
COMMENT
レコードが書かれた場合
は,複数の COMMENT
レコードに分けてヘッダに保存されます
(できるだけ空白文字で分けるようにしています).
XTENSION
」で始めなければ
なりません.
XTENSION
」キーワードとテーブルのカラム(フィールド)
に関するキーワードを除き,キーワードの順序は任意です.
SIMPLE
,NAXIS
,EXTEND
,
PCOUNT
,GCOUNT
キーワードを省略できます.
BITPIX
,NAXIS
,NAXIS2
,
PCOUNT
,GCOUNT
,TFIELDS
キーワードを省略できます.
Binary Table HDUでは,NAXIS1
も省略できます.
TTYPE
n 等のテーブルのカラム(フィールド)に関する記述では,
キーワードの数字 n のかわりに「#
」記号を与える事により,
自動的にカラム番号を割り当てます.
この自動ナンバリングは,
最初に現れた「#
」記号付きキーワードをトリガとして
ナンバリングのためのカウンタを増やす事により行われます.
/
」以降のコメントが省略された場合,
FITS標準のキーワードを持つレコードついては確実に
SFITSIO搭載のデフォルトのコメントで自動補完します.
FITS標準以外のキーワードについては,
一般的なものについてのみ自動補完します.
SFITSIO に搭載されているヘッダのコメント辞書については,
fits_header_record.cc
の最初の部分をご覧ください.
=
値 /
コメント」の形式のレコードを作る場合は,
「=
」記号を省略する事はできません.