N次元データセット (astropy.nddata
)¶
序言:序言¶
♪the nddata
Packageは,画像や他のメッシュデータを表すクラス,いくつかの操作画像の基本関数,および画像クラスを支援したいパッケージ開発者を含むためのインフラを提供する.
スタート¶
NDData¶
主な目的は NDData
1つの役を演じることです コンテナ.コンテナ マスクのようなデータ、メタデータ、および他の関連情報のために使用される。
Vbl.一種 NDData
オブジェクトはこれをn次元インスタンス化オブジェクトに渡すことでインスタンス化することができる. numpy
アレイ::
>>> import numpy as np
>>> from astropy.nddata import NDData
>>> array = np.zeros((12, 12, 12)) # a 3-dimensional array with all zeros
>>> ndd1 = NDData(array)
あるいは変換することができます numpy.ndarray
**
>>> ndd2 = NDData([1, 2, 3, 4])
>>> ndd2
NDData([1, 2, 3, 4])
再通過することができます data
属性::
>>> ndd2.data
array([1, 2, 3, 4])
他の属性もサポートしています unit
あるいは…。 mask
データについては wcs
(世界座標系)と uncertainty
データや他の meta
属性:
>>> data = np.array([1,2,3,4])
>>> mask = data > 2
>>> unit = 'erg / s'
>>> from astropy.nddata import StdDevUncertainty
>>> uncertainty = StdDevUncertainty(np.sqrt(data)) # representing standard deviation
>>> meta = {'object': 'fictional data.'}
>>> ndd = NDData(data, mask=mask, unit=unit, uncertainty=uncertainty,
... meta=meta)
>>> ndd
NDData([1, 2, 3, 4])
この表示は表示のみ data
他の属性は直接数をとる必要があり、例えば ndd.mask
マスクに触れることができます
NDDataRef¶
この純粋な容器に基づいて NDDataRef
実施:
A
read
そしてwrite
方法アクセスastropy
統一ファイルI/Oインタフェース。加算、減算、除算、乗算などの簡単な算術。
スライスします。
インスタンスの作成方法は同じ:
>>> from astropy.nddata import NDDataRef
>>> ndd = NDDataRef(ndd)
>>> ndd
NDDataRef([1, 2, 3, 4])
算術演算もサポートしています (NDDataアルゴリズム )加算のように:
>>> import astropy.units as u
>>> ndd2 = ndd.add([4, -3.5, 3, 2.5] * u.erg / u.s)
>>> ndd2
NDDataRef([ 5. , -1.5, 6. , 6.5])
これらの演算には幅広い選択肢があるため,算術演算子(例えば,演算子)を用いる. +
それがそうです。
スライスやインデックス (NDDataに対してスライスとインデックスを行う )は可能である(ある属性がスライスできない場合は警告を発する):
>>> ndd2[2:] # discard the first two elements
NDDataRef([6. , 6.5])
>>> ndd2[1] # get the second element
NDDataRef(-1.5)
2次元データ(画像など)を処理する¶
通過する. nddata
パッケージはどんなタイプのグリッド化データもサポートしていますが、本稿では重点的にご紹介します nddata
二次元画像に使います。まず、いくつかのソース、いくつかのガウス雑音、および“宇宙線”を含む2次元画像を構築し、後でそれを遮蔽します。
実例.¶
まず、いくつかのソース、いくつかのガウスノイズ、および“宇宙線”を含む2次元画像を構築します。
>>> import numpy as np
>>> from astropy.modeling.models import Gaussian2D
>>> y, x = np.mgrid[0:500, 0:600]
>>> data = (Gaussian2D(1, 150, 100, 20, 10, theta=0.5)(x, y) +
... Gaussian2D(0.5, 400, 300, 8, 12, theta=1.2)(x,y) +
... Gaussian2D(0.75, 250, 400, 5, 7, theta=0.23)(x,y) +
... Gaussian2D(0.9, 525, 150, 3, 3)(x,y) +
... Gaussian2D(0.6, 200, 225, 3, 3)(x,y))
>>> data += 0.01 * np.random.randn(500, 600)
>>> cosmic_ray_value = 0.997
>>> data[100, 300:310] = cosmic_ray_value
この写真の左下には大きな“銀河”があります“宇宙線”は画像の下の水平線です
>>> import matplotlib.pyplot as plt
>>> plt.imshow(data, origin='lower')
このテスト画像では“宇宙線”は次のように遮蔽されることができます
>>> mask = (data == cosmic_ray_value)
CCDData
画像類.¶
♪the CCDData
オブジェクトは,このパケット中の他のオブジェクトと同様に,データ,マスク,メタデータを格納することができる.♪the CCDData
オブジェクト要求指定単位::
>>> from astropy.nddata import CCDData
>>> ccd = CCDData(data, mask=mask,
... meta={'object': 'fake galaxy', 'filter': 'R'},
... unit='adu')
スライス.スライス¶
スライスの動作方式は、予想される覆版およびWCS(存在する場合)の動作方式と同じであり、適切なスライスを行う。
>>> ccd2 = ccd[:200, :]
>>> ccd2.data.shape
(200, 600)
>>> ccd2.mask.shape
(200, 600)
>>> # Show the mask in a region around the cosmic ray:
>>> ccd2.mask[99:102, 299:311]
array([[False, False, False, False, False, False, False, False, False,
False, False, False],
[False, True, True, True, True, True, True, True, True,
True, True, False],
[False, False, False, False, False, False, False, False, False,
False, False, False]]...)
多くのアプリケーションにとっては、それを使った方が便利かもしれません Cutout2D
, described in image_utilities それがそうです。
不確実性を含む画像演算¶
不確実性の伝播を含む画像間の基本算術演算のための方法を提供する。3つの不確実性をサポートするタイプ:分散 (VarianceUncertainty
)、標準偏差 (StdDevUncertainty
)と逆分散 (InverseVariance
)。
実例.¶
この例は、分散として格納された不確実性、すなわちPoisson Errorを作成する。
>>> from astropy.nddata import VarianceUncertainty
>>> poisson_noise = np.ma.sqrt(np.ma.abs(ccd.data))
>>> ccd.uncertainty = VarianceUncertainty(poisson_noise ** 2)
便宜上ご利用いただけます numpy
配列していますこの場合、不確定休暇は標準偏差に設定される:
>>> ccd.uncertainty = poisson_noise
INFO: array provided for uncertainty; assuming it is a StdDevUncertainty. [astropy.nddata.ccddata]
画像を複製して元の画像に追加すると、不確実性は予想通りに変化する。
>>> ccd2 = ccd.copy()
>>> added_ccds = ccd.add(ccd2, handle_meta='first_found')
>>> added_ccds.uncertainty.array[0, 0] / ccd.uncertainty.array[0, 0] / np.sqrt(2)
0.99999999999999989
読み書きをする¶
A CCDData
FITSファイルに保存することができます:
>>> ccd.write('test_file.fits')
FITSファイルから読み取ることもできます:
>>> ccd2 = CCDData.read('test_file.fits')
この単位は BUNIT
保存時にタイトル中のキーワードは、タイトル中にそのキーワードが存在すれば、タイトルからそのキーワードを読み取る。
読み出しや書き込みに利用可能なキーワードパラメータの詳細な支援については,通過可能である. help()
方法は以下のとおりである.
>>> CCDData.read.help('fits') # Get help on the CCDData FITS reader
>>> CCDData.writer.help('fits') # Get help on the CCDData FITS writer
画像ユーティリティ¶
裁断する.¶
直接スライスはサブフレームを抽出する方法ですが Cutout2D
データ中の裁断により便利にアクセスする。
実例.¶
この例は画像左下の大きな“銀河”を引き出しています切り紙の中心は position
**
>>> from astropy.nddata import Cutout2D
>>> position = (149.7, 100.1)
>>> size = (81, 101) # pixels
>>> cutout = Cutout2D(ccd, position, size)
>>> plt.imshow(cutout.data, origin='lower')
このクロッピングは、元の画像上で自動的に印刷することもできます:
>>> plt.imshow(ccd, origin='lower')
>>> cutout.plot_on_original(color='white')
クロッピングはまた、オリジナルまたはクロッピングにおいて画素座標を検索する方法を提供する。 position
元の画像の切り出しの中心です
>>> position
(149.7, 100.1)
>>> cutout.to_cutout_position(position)
(49.7, 40.099999999999994)
>>> cutout.to_original_position((49.7, 40.099999999999994))
(149.7, 100.1)
より詳細な情報については、世界座標構造からの裁断および元の画像境界を超えた切り出し処理のオプションが含まれていますので、参照されたい 2 Dクロッピング画像 それがそうです。
画像の大きさを調整する¶
機能 block_reduce
そして block_replicate
画像サイズを調整する。
例を引く¶
この例では、画像サイズを元の4倍に小さくしています。 numpy.ndarray
マスク、メタデータなどを破棄する:
>>> from astropy.nddata import block_reduce, block_replicate
>>> smaller = block_reduce(ccd, 4)
>>> smaller
array(...)
>>> plt.imshow(smaller, origin='lower')
デフォルトの場合、両方とも block_reduce
そして block_replicate
流量を保護する。
他の画像類¶
2つの制限の少ないクラスがあります NDDataArray
そして NDDataRef
画像データを保存するために使用することができる。その中からあるクラスの派生サブクラスから自分の画像クラスを作成したい可能性がある人にとっては,主に興味がある. nddata
小包です。それらの主な違いは
NDDataRef
分割されてもよく、基本算術演算のための方法があるが、ユーザは不確実性クラスのうちの1つを使用して不確実性を定義する必要がある。参照してください NDDataRef もっと細かいことを知っています。そのほとんどの属性は、それらが不変であるため、オブジェクトを作成する際に設定されなければならない。NDDataArray
延展する.NDDataRef
追加することで行動を類似させることができますnumpy
配列を配列し,複数の属性に設定器を付加する.FITSファイルのデータを自動的に認識して読み取ることができず、WCS属性の自動設定を試みることはない。CCDData
延展する.NDDataArray
デフォルトの不確実性クラスの設定、FITSファイルの直接読み出し/書き込みの設定、およびWCS特性の自動設定により。
より汎用的なメッシュデータ類¶
他にも2つのクラスがあります nddata
これらのパケットは、主に、現在議論されているクラスを超えるカスタム画像クラスを必要とするユーザ、または画像ではないメッシュデータを使用しているユーザに向けられている。
NDData
通常のメッシュデータを保存するための容器類である。それはいくつかの基本的な属性を含むが、スライスや算術はない。この授業についての詳細は参照されたい NDData それがそうです。NDDataBase
新しいメッシュデータクラスの開発者は、新しいクラスが従うことを宣言するために、それをサブクラス化することができる抽象ベースクラスです。NDData
インターフェースです。詳細についてはご参照ください 子類化 それがそうです。
その他の例¶
次に使います nddata
フレームワークは,自分の画像クラスを作成するユーザや,その機能を超えた画像クラスを探すユーザを支援することを目的としている. CCDData
その通りです。
♪the SunPy project 用途
NDData
as the foundation for its Map classes それがそうです。クラス
NDDataRef
is used in specutils …の基礎とする Spectrum1D スペクトルに有用な方法をいくつか加えた。包装 ndmapper これにより光学データの復元管の構築が容易になり,使用が容易になる
NDDataArray
その画像対象とする.
Vbl.使用 nddata
¶
性能提示¶
不確実性類を使う
VarianceUncertainty
他の2つの不確定クラスよりも効率的になりますInverseVariance
そしてStdDevUncertainty
それがそうです。誤差伝播の目的で,後両者は分散に変換され,分散から元の不確実性パターンに変換される.性能差は小さいはずです。可能であれば、値を
np.nan
使用していますnumpy
自動排除の関数と方法np.nan
像np.nanmedian
そしてnp.nanstd
それがそうです。これは通常使われているよりもnumpy.ma.MaskedArray
それがそうです。
参照/API¶
Asterpy.nddataパッケージ¶
♪the astropy.nddata
サブパック提供 NDData
クラスおよび関連ツールは、n次元配列に基づくデータ(例えば、CCD画像、IFUデータ、メッシュベースのシミュレーションデータなど)を管理する。これは単に numpy.ndarray
オブジェクトは,単一の配列では容易に提供できないメタデータを提供するためである.
機能¶
|
より大きな配列内の所与の位置に、より小さい配列を追加する。 |
|
ビットフィールド配列は、提供されたビットフラグによって構成されたビットマスクに従ってブール(または整数)マスク配列に変換される(参照)。 |
|
ローカルブロックに関数を適用することによりデータ配列をダウンサンプリングする. |
|
データアレイは、データブロック複製によりアップサンプリングされる。 |
|
既存のマッピングをサブクラス化し、キーワードパラメータとして提供される追加のフラグを追加することによって、ビットフラグマッピングテーブルを作成するための便利な関数。 |
|
大きな配列から与えられた形状と位置の小さい配列を抽出する. |
|
FITSファイルからCCD Dataオブジェクトを生成する. |
|
CCD DataオブジェクトをFITSファイルに書き込む. |
|
入力ビットフラグを単一の整数値(ビットマスク)または |
|
小配列と大配列の重なり部分のスライスを取得する. |
|
データアレイをブロックに再構築する。 |
|
固定子に係数をサンプリングする場合には、小数点をインデックスに変換する。 |
|
トリムパッケージは、NDDataインスタンスを受け取り、その属性を関数パラメータ伝達の関数とすることができる。 |
クラス¶
|
ビットフラグ名マッピングの基本クラスは,画像のデータ品質(DQ)フラグを記述するために用いられ,ニーモニック名をマーク値にマッピングする方法である. |
基本CCDデータのクラスについて説明する。 |
|
|
の構成パラメータ |
|
二次元配列から裁断オブジェクトを作成します。 |
|
このような目的は辞書を提供することです |
この例外は、2つの異なるクラスを有する不確実性を伝播できないことを示す場合に適用される。 |
|
指示値は2のべき乗の整数ではない. |
|
|
一次ガウス誤差伝播の逆分散不確実性を仮定する. |
この例外の適用は、不確実性のインスタンスが親レベルに関連していないことを示す |
|
NDDataオブジェクトに算術を追加するためのMixinクラス. |
|
|
容器であって、 |
|
Vbl.一種 |
|
このプリミティブクラスは,N次元データセットのインタフェースを定義しており,その中には使用される関連メタ情報が含まれている. |
|
器器器 |
|
NDDataをAsterpy入出力レジストリに接続するためのMixinクラス。 |
|
混合して使う |
|
これは一緒に使われている不確実なクラスのメタクラスです |
非オーバラップ配列のオーバラップを決定する際に起こる. |
|
配列が部分的に重なっている場合にのみ発生する. |
|
|
一次ガウス誤差伝播の標準偏差不確実度を仮定する. |
|
このような種類は未知の不確実性タイプを実現する。 |
|
一次ガウス誤差伝播の分散不確実性を仮定する. |
Asterpy.nddata.ビットマスクモジュール¶
ビットマスクおよびデータ品質(DQ)配列の機能を動作させるモジュールを提供する。
機能¶
|
ビットフィールド配列は、提供されたビットフラグによって構成されたビットマスクに従ってブール(または整数)マスク配列に変換される(参照)。 |
|
入力ビットフラグを単一の整数値(ビットマスク)または |
|
既存のマッピングをサブクラス化し、キーワードパラメータとして提供される追加のフラグを追加することによって、ビットフラグマッピングテーブルを作成するための便利な関数。 |
クラス¶
|
ビットフラグ名マッピングの基本クラスは,画像のデータ品質(DQ)フラグを記述するために用いられ,ニーモニック名をマーク値にマッピングする方法である. |
指示値は2のべき乗の整数ではない. |
Asterpy.nddata.utilsモジュール¶
このモジュールは、配列動作のためのブースタ関数を含む。
機能¶
|
大きな配列から与えられた形状と位置の小さい配列を抽出する. |
|
より大きな配列内の所与の位置に、より小さい配列を追加する。 |
|
固定子に係数をサンプリングする場合には、小数点をインデックスに変換する。 |
|
小配列と大配列の重なり部分のスライスを取得する. |
クラス¶
非オーバラップ配列のオーバラップを決定する際に起こる. |
|
配列が部分的に重なっている場合にのみ発生する. |
|
|
二次元配列から裁断オブジェクトを作成します。 |