FITS (.fits,.fit)
予備知識
-
- MIMEタイプ:application/fits,image/fits
- FITS科学画像・データ形式.
- 天体データの交換およびアーカイブ保存のための標準形式.
- NASAおよびInternational Astronomical Unionによって承認された.
- FITSはFlexible Image Transport Systemの頭字語である.
- 複数のHDU(ヘッダデータユニット)を含むことができる.
- 各HDUは画像,ASCII表,バイナリデータのいずれかが可能である.
- 画像HDUは単チャンネルの2D画像の配列が保存できる.
- バイナリとASCIIの表は2Dデータのみ保存できる.
- バイナリ表の要素には多次元配列が使用できる.
- スペクトルデータとラスタ画像を配列として保存する.
- 1979年にDon Wells,Eric Greisen他によって開発された.
ImportとExport
- Import["file.fits"]は単一のHDUのファイルについては,HDUタイプに応じてFITSファイルを画像またはデータ値の配列としてインポートする.
- Import["file.fits"]はファイル内のすべてのHDUに対して<|1->hdu1,…|>という形式の連想を返す.
- Import["file.fits",elem]はFITSファイルから指定された要素をインポートする.
- Import["file.fits",{elem, i}]は i 番目のHDUに保存された elem を返す.
- インポート形式はImport["file","FITS"]またはImport["file",{"FITS",elem,…}]で指定できる.
- Export["file.fits",expr]は画像およびグラフィックスをそのラスタライズで画像としてFITSファイルにエキスポートする.
- Export["file.fits",expr]は文字列と数値配列を表としてFITSファイルにエキスポートする.
- Export["file.fits",1->expr1,…]は expri を i
番目のHDUにエキスポートする. - 一般的な情報は,以下の関数ページを参照のこと.
-
Import, Export ファイルからインポートする,あるいはファイルへエキスポートする CloudImport, CloudExport クラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする ImportString, ExportString 文字列からインポートする,あるいは文字列へエキスポートする ImportByteArray, ExportByteArray バイト配列からインポートする,あるいはバイト配列へエキスポートする
要素
- 一般的なImport要素:
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" 使用可能なすべての要素の規則のリスト - 構成要素:
-
"HDUCount" HDUの数 "Summary" ファイルの概要 "SummarySlideView" すべてのHDUのスライドビューによる概要 - FITSファイルのすべての要素は番号付けされた連想としてインポートされ,1val1,2val2,…という形で返される.
- データ表現要素:
-
"Data" 画素値または表の要素の配列 "Plaintext" 画像と表の拡張の文字列表現 "RawData" ファイルに保存されている生データ - 画像HDUに対して使用できるその他の要素:
-
"Graphics" Graphicsオブジェクトで与えられるラスタ画像 "Image" Imageオブジェクトで与えられるラスタ画像 "IndeterminateMask" 画像中の不定値を表すSparseArray - バイナリおよびASCIIの表のHDUに対して使用できるその他の要素:
-
"TableData" テーブル拡張の表現 "TableHeaders" 表の列のヘッダ "TableUnits" 表の列に対応する計測の単位 - ImportとExportはデフォルトで画像HDUには"Image"要素を,バイナリおよびASCII表HDUには"Data"要素を使用する.
- 以下のいずれかの形式を使って,部分データのインポートのためのサブ要素を与えることができる:
-
{elem,hdu} すべての要素に対して {elem,hdu,rows,cols} 単一画像および表のHDUのデータ要素に対して {elem,hdu,spec1,spec2,…,rows,cols} より高次の画像HDUのデータ要素に対して - hdu,speci,rows,cols の部分指定は以下のいずれかが可能である:
-
All すべてのHDU n n 番目のHDU n;;m n 番目から m 番目までのHDU n;;m;;s n 番目から s 刻みで m 番目まで {n1,n2,…} 特定の HDU ni - 高度な要素:
-
"BitDepth" ファイルのグレーレベルの画素を表すのに使用するビット数 "Channels" ファイルで使用される色チャンネルの数 "ColorSpace" ファイルで使用される色符号化 "DataType" ファイルに画像や表のデータを保存するために使用されるデータ型 "Dimensions" データの次元 "Extension" HDU拡張のタイプ "ImageSize" 一つのフレームのラスタ次元 "Range" 生のデータ値の最小値と最大値 - 一般的なメタデータ要素:
-
"MetaInformation" 処理済みメタデータ "RawMetaInformation" ファイルに保存されているメタデータ - 記録デバイスと環境についての情報:
-
"Airmass" 相対気団 "Declination" 望遠鏡軸の傾斜設定 "Device" 記録手段(例:カメラ) "Equinox" ファイルで使用される天球座標系の昼夜平分時で,一般に年で与えられる "ExposureTime" 写真の露光時間(秒) "HourAngle" 画像が撮られたときの描かれたオブジェクトの時角 "ObservationDate" 観測が行われた日付と時間 "RightAscension" 望遠鏡軸の赤経設定 "SiderealTime" 恒星時(LST) "Telescope" 画像を捉えた望遠鏡 - 書誌情報要素:
-
"Author" 画像情報を編集した人 "Reference" ファイルに関連付けられている書誌参照 - よく使われるその他のメタデータ要素:
-
"Comments" ファイルに保存されている各データまたは画像に対するコメント "History" データまたは画像がどのように処理されてきたかについての記述 "Object" 観測オブジェクトの名前 "Observer" データまたは画像を記録した人 "Organization" ファイルの作成についての責任がある組織・機関 - メタ情報フィールド名はFITS標準に従うように,エキスポートの際にすべて大文字に変換される.
オプション
- ImportとExportのオプション:
-
DataReversed Automatic 行の順番を逆にするかどうか - Importオプション:
-
ColorFunction Automatic 各セルにどのように色を付けるか ImageSize Automatic 画像の全体の大きさ "Gamma" 1.0 描画に使用されるガンマ補正パラメータ "IncludeExtensions" All インポートするHDU拡張 "IncludeHeaders" False 表見出しをインポートするかどうか - Export オプション
-
"Append" False 既存のファイルに追加するかどうか "CompressionMethod" None エキスポート時に使用する圧縮アルゴリズム MetaInformation None エキスポート時に追加するヘッダごとのメタ情報 - "CompressionMethod"の可能な設定には"GZIP","GZIPShuffled","Rice","HCompress","PLIO"がある.
例題
すべて開く すべて閉じる例 (3)
スコープ (7)
Import (2)
Import["ExampleData/sample.fits"]Import["ExampleData/sample.fits", "Image"]Import["ExampleData/sample.fits", "Dimensions"]Import["http://exampledata.wolfram.com/messier61.fits.gz", "Summary"]Import["ExampleData/sample.fits", "Summary"]Export (5)
Export["file.fits", RandomImage[]]Import[%]Export["file.fits", {{"a", 1, .5}, {"d", 2, 1.5}}]Import["file.fits"]Export["file.fits", {[image], {{"A", "B"}, {"C", "D"}}}]Import["file.fits"]data = <|1 -> <|"Extension" -> "Image", "Data" -> [image]|>, 2 -> <|"Extension" -> "ASCIITable", "Data" -> {{"A", "B"}, {"C", "D"}}|>|>;Export["file.fits", data]Import["file.fits"]data = {
{1, {1, 2}, {1, 2, 3}},
{10, {10, 20}, {10, 20, 30}}
};Export["test.fits", data]Import[%]Import要素 (44)
利用できる要素 (2)
データ表現 (17)
"Data" (2)
data = Import["ExampleData/sample.fits", {"Data", 1}]Image[#, "Byte"] & /@ dataImport["ExampleData/sample.fits", {"Extension", 2}]Import["ExampleData/sample.fits", {"Data", 2}]"DataType" (1)
"Graphics" (2)
ファイル内の画像データをGraphicsオブジェクトとしてインポートする:
Import["ExampleData/sample.fits", "Graphics"]Map[Head, First[%]]Import["ExampleData/sample.fits", {"Graphics", 1, 3, 1 ;; 50}]"Image" (2)
ファイルに保存された画像データをImageオブジェクトとしてインポートする:
Import["ExampleData/sample.fits", "Image"]Map[Head, First[%]]Import["ExampleData/sample.fits", {"Image", 1, 3, 1 ;; 50}]"Plaintext" (1)
"Range" (1)
Import["ExampleData/sample.fits", "Range"]"Image"のHDUについては,これは生のデータの最小値と最大値と同じである:
Import["ExampleData/sample.fits", {"Range", 1}]Normal[First[Import["ExampleData/sample.fits", "RawData"]]] // MinMax表のHDUでは,範囲は表の数値的部分についてのみ計算可能である:
TextGrid[Import["ExampleData/sample.fits", {"Data", 2}] , Frame -> All, Background -> {{StandardBlue, None}, None}]"RawData" (2)
Import["ExampleData/sample.fits", {"RawData", 1}]Image[#, "Byte"]& /@ Normal[%]Import["ExampleData/sample.fits", {"RawData", 1, 6, 1 ;; 50}]Image[%, "Byte"]"TableData" (3)
Import["ExampleData/sample.fits", {"TableData", 2}]"TableData"要素は表のHDUだけをインポートする:
Import["ExampleData/sample.fits", "Extension"]Import["ExampleData/sample.fits", "TableData"]//KeysImport["ExampleData/sample.fits", {"TableData", 2, 2, 1 ;; -1 ;; 2}]"TableHeaders" (2)
高度なImport要素 (6)
"BitDepth" (1)
"Dimensions" (1)
"Extension" (1)
"ImageSize" (1)
メタデータ要素 (19)
"Airmass" (1)
"Author" (1)
"Comments" (1)
"Declination" (1)
"Device" (1)
"Equinox" (1)
"ExposureTime" (1)
"History" (1)
"HourAngle" (1)
"MetaInformation" (1)
"Object" (1)
"ObservationDate" (1)
"Observer" (1)
"Organization" (1)
"RawMetaInformation" (1)
"Reference" (1)
"RightAscension" (1)
"SiderealTime" (1)
Export要素 (4)
"Data" (2)
"Rules" (2)
Export["file.fits", {"Data" -> RandomImage[]}, "Rules"];
Import[%]metadata = {
"MetaInfo" -> "MyValue",
"MoreInfo" -> {"2", "Comment on MoreInfo"},
"MyValue1" -> {58.90, "Comment on MyValue1"},
"MyValue2" -> {8, "Comment on MyValue2"},
"MyValue3" -> {True}
};
Export["file.fits", {"Data" -> RandomImage[], "MetaInformation" -> metadata}, "Rules"]Import["file.fits", "MetaInformation"]Importオプション (6)
ColorFunction (1)
デフォルトでは,画像データは色関数が適用されていないImageオブジェクトとしてインポートされる:
ImageAdjust /@ Import["http://exampledata.wolfram.com/messier61.fits.gz", "Image"]ImageAdjust /@ Import["http://exampledata.wolfram.com/messier61.fits.gz", "Image", ColorFunction -> "Rainbow"]DataReversed (1)
ImageSize (1)
Last /@ Import["ExampleData/sample.fits", "Image"]ImageDimensions /@ %Last /@ Import["ExampleData/sample.fits", "Image", ImageSize -> 75]ImageDimensions /@ %"Gamma" (1)
Import["http://exampledata.wolfram.com/messier61.fits.gz"]Import["http://exampledata.wolfram.com/messier61.fits.gz", "Gamma" -> 0.5]Import["http://exampledata.wolfram.com/messier61.fits.gz", "Gamma" -> 0.5, ColorFunction -> "Rainbow"]"IncludeExtensions" (1)
デフォルトでは,FITSファイルに存在する,該当するすべてのタイプのHDUがインポートされる:
Import["ExampleData/sample.fits", "Dimensions"]Import["ExampleData/sample.fits", "ImageSize"]Import["ExampleData/sample.fits", "Extensions"]Import["ExampleData/sample.fits", "ImageSize", "IncludeExtensions" -> All]Import["ExampleData/sample.fits", "Dimensions", "IncludeExtensions" -> "Image"]Import["ExampleData/sample.fits", "Dimensions", "IncludeExtensions" -> {"Image", "BinaryTable"}]"IncludeHeaders" (1)
デフォルトではインポートされた表データには見出しが存在しない:
Import["ExampleData/sample.fits", {"TableData", 2}];
TextGrid[%, Frame -> All]Import["ExampleData/sample.fits", {"TableData", 2}, "IncludeHeaders" -> True]Import["ExampleData/sample.fits", {"TableData", 2}, "IncludeHeaders" -> True];
TextGrid[%, Frame -> All]Exportオプション (3)
Append (1)
DataReversed (1)
image = LinearGradientImage[{Top, Bottom}, 50];
Export["image.fits", image]Import[%, "Image"]Export["image.fits", image, DataReversed -> True]Import[%]"CompressionMethod" (1)
image = RandomImage[];
Export["image.fits", image];
FileSize[%]methods = {None, Automatic, "GZIP", "GZIPShuffled", "Rice", "HCompress"};Table[{m, FileSize[Export["image.fits", image, "CompressionMethod" -> m]]}, {m, methods}]//TextGrid考えられる問題 (2)
「(」と「[」の文字を含むファイル名はサポートされていない:
Export["bad(Name.fits", RandomImage[]]Export["file.fits", RandomImage[]];
CopyFile["file.fits", "bad[Name.fits", OverwriteTarget -> True];これらの特殊文字を含むファイルはインポートすることもできない:
Import["bad[Name.fits"]バイナリ表データは文字列値を含む多次元セルを保存することはできない:
Export["file.fits", {{{"1", "2"}, 1}, {{"2", "3"}, 2}}]関連するガイド
-
▪
- グラフィックスのインポートとエキスポート ▪
- インポートとエキスポート ▪
- 全形式のリスト ▪
- ラスタ画像形式 ▪
- 科学,医学データ形式
履歴
2002 で導入 (4.2) | 2019 で更新 (12.0)