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')

(png, svg, pdf)

../_images/index-12.png

このテスト画像では“宇宙線”は次のように遮蔽されることができます

>>> 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') 

(png, svg, pdf)

../_images/index-21.png

このクロッピングは、元の画像上で自動的に印刷することもできます:

>>> plt.imshow(ccd, origin='lower')  
>>> cutout.plot_on_original(color='white') 

(png, svg, pdf)

../_images/index-31.png

クロッピングはまた、オリジナルまたはクロッピングにおいて画素座標を検索する方法を提供する。 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')  

(png, svg, pdf)

../_images/index-41.png

デフォルトの場合、両方とも 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 その画像対象とする.

  • 包装 ccdproc 使用 CCDData 光学/赤外線画像の全レベル削減を実現する。

Vbl.使用 nddata

性能提示

  • 不確実性類を使う VarianceUncertainty 他の2つの不確定クラスよりも効率的になります InverseVariance そして StdDevUncertainty それがそうです。誤差伝播の目的で,後両者は分散に変換され,分散から元の不確実性パターンに変換される.性能差は小さいはずです。

  • 可能であれば、値を np.nan 使用しています numpy 自動排除の関数と方法 np.nannp.nanmedian そして np.nanstd それがそうです。これは通常使われているよりも numpy.ma.MaskedArray それがそうです。

参照/API

Asterpy.nddataパッケージ

♪the astropy.nddata サブパック提供 NDData クラスおよび関連ツールは、n次元配列に基づくデータ(例えば、CCD画像、IFUデータ、メッシュベースのシミュレーションデータなど)を管理する。これは単に numpy.ndarray オブジェクトは,単一の配列では容易に提供できないメタデータを提供するためである.

機能

add_array (配列_大,配列_小,位置)

より大きな配列内の所与の位置に、より小さい配列を追加する。

bitfield_to_boolean_mask \(ビットフィールド[, ...] )

ビットフィールド配列は、提供されたビットフラグによって構成されたビットマスクに従ってブール(または整数)マスク配列に変換される(参照)。 ignore_flags パラメータ).

block_reduce \(データ,データブロック_サイズ[, func] )

ローカルブロックに関数を適用することによりデータ配列をダウンサンプリングする.

block_replicate \(データ,データブロック_サイズ[, conserve_sum] )

データアレイは、データブロック複製によりアップサンプリングされる。

extend_bit_flag_map \(CLS_名前[, base_cls] )

既存のマッピングをサブクラス化し、キーワードパラメータとして提供される追加のフラグを追加することによって、ビットフラグマッピングテーブルを作成するための便利な関数。

extract_array \(配列_大,形状,位置)

大きな配列から与えられた形状と位置の小さい配列を抽出する.

fits_ccddata_reader \(ファイル名[, hdu, unit, ...] )

FITSファイルからCCD Dataオブジェクトを生成する.

fits_ccddata_writer (CCD_DATA,ファイル名[, ...] )

CCD DataオブジェクトをFITSファイルに書き込む.

interpret_bit_flags \(ビット_フラグ[, flip_bits, ...] )

入力ビットフラグを単一の整数値(ビットマスク)または None それがそうです。

overlap_slices \(大_配列_形状,...[, mode] )

小配列と大配列の重なり部分のスライスを取得する.

reshape_as_blocks \(データ,データブロック_サイズ)

データアレイをブロックに再構築する。

subpixel_indices \(位置,サブサンプリング)

固定子に係数をサンプリングする場合には、小数点をインデックスに変換する。

support_nddata \([_func, accepts, repack, ...] )

トリムパッケージは、NDDataインスタンスを受け取り、その属性を関数パラメータ伝達の関数とすることができる。

クラス

BitFlagNameMap \()

ビットフラグ名マッピングの基本クラスは,画像のデータ品質(DQ)フラグを記述するために用いられ,ニーモニック名をマーク値にマッピングする方法である.

CCDData \(*args, * *kwd)

基本CCDデータのクラスについて説明する。

Conf \()

の構成パラメータ astropy.nddata それがそうです。

Cutout2D \(データ、位置、サイズ[, wcs, mode, ...] )

二次元配列から裁断オブジェクトを作成します。

FlagCollection \(*args, * *kwargs)

このような目的は辞書を提供することです NDData 級友たち。

IncompatibleUncertaintiesException \

この例外は、2つの異なるクラスを有する不確実性を伝播できないことを示す場合に適用される。

InvalidBitFlag \

指示値は2のべき乗の整数ではない.

InverseVariance \([array, copy, unit] )

一次ガウス誤差伝播の逆分散不確実性を仮定する.

MissingDataAssociationException \

この例外の適用は、不確実性のインスタンスが親レベルに関連していないことを示す NDData 物体です。

NDArithmeticMixin \()

NDDataオブジェクトに算術を追加するためのMixinクラス.

NDData \(データ[, uncertainty, mask, wcs, meta, ...] )

容器であって、 numpy.ndarray データセットに基づいて NDDataBase インターフェースです。

NDDataArray \(データ,*パラメータ[, flags] )

Vbl.一種 NDData オブジェクトは算術演算を行う.

NDDataBase \()

このプリミティブクラスは,N次元データセットのインタフェースを定義しており,その中には使用される関連メタ情報が含まれている. astropy それがそうです。

NDDataRef \(データ[, uncertainty, mask, wcs, ...] )

器器器 NDData すべてのハーフと一緒に。

NDIOMixin \()

NDDataをAsterpy入出力レジストリに接続するためのMixinクラス。

NDSlicingMixin \()

混合して使う NDData インターフェースです。

NDUncertainty \([array, copy, unit] )

これは一緒に使われている不確実なクラスのメタクラスです NDData それがそうです。

NoOverlapError \

非オーバラップ配列のオーバラップを決定する際に起こる.

PartialOverlapError \

配列が部分的に重なっている場合にのみ発生する.

StdDevUncertainty \([array, copy, unit] )

一次ガウス誤差伝播の標準偏差不確実度を仮定する.

UnknownUncertainty \([array, copy, unit] )

このような種類は未知の不確実性タイプを実現する。

VarianceUncertainty \([array, copy, unit] )

一次ガウス誤差伝播の分散不確実性を仮定する.

Asterpy.nddata.ビットマスクモジュール

ビットマスクおよびデータ品質(DQ)配列の機能を動作させるモジュールを提供する。

機能

bitfield_to_boolean_mask \(ビットフィールド[, ...] )

ビットフィールド配列は、提供されたビットフラグによって構成されたビットマスクに従ってブール(または整数)マスク配列に変換される(参照)。 ignore_flags パラメータ).

interpret_bit_flags \(ビット_フラグ[, flip_bits, ...] )

入力ビットフラグを単一の整数値(ビットマスク)または None それがそうです。

extend_bit_flag_map \(CLS_名前[, base_cls] )

既存のマッピングをサブクラス化し、キーワードパラメータとして提供される追加のフラグを追加することによって、ビットフラグマッピングテーブルを作成するための便利な関数。

クラス

BitFlagNameMap \()

ビットフラグ名マッピングの基本クラスは,画像のデータ品質(DQ)フラグを記述するために用いられ,ニーモニック名をマーク値にマッピングする方法である.

InvalidBitFlag \

指示値は2のべき乗の整数ではない.

Asterpy.nddata.utilsモジュール

このモジュールは、配列動作のためのブースタ関数を含む。

機能

extract_array \(配列_大,形状,位置)

大きな配列から与えられた形状と位置の小さい配列を抽出する.

add_array (配列_大,配列_小,位置)

より大きな配列内の所与の位置に、より小さい配列を追加する。

subpixel_indices \(位置,サブサンプリング)

固定子に係数をサンプリングする場合には、小数点をインデックスに変換する。

overlap_slices \(大_配列_形状,...[, mode] )

小配列と大配列の重なり部分のスライスを取得する.

クラス

NoOverlapError \

非オーバラップ配列のオーバラップを決定する際に起こる.

PartialOverlapError \

配列が部分的に重なっている場合にのみ発生する.

Cutout2D \(データ、位置、サイズ[, wcs, mode, ...] )

二次元配列から裁断オブジェクトを作成します。