その他:HDF 5、YAML、ASDF、キムチ (astropy.io.misc
)¶
♪the astropy.io.misc
モジュールは、他の場所では適切でない様々な入出力ルーチンを含み、しばしば他に使用される astropy
サブセットです。例えば astropy.io.misc.hdf5
読み書き関数を含む Table
オブジェクトはHDF 5ファイルからHDF 5ファイルへ/HDF 5ファイルからHDF 5ファイルにインポートされますが、これらのオブジェクトはユーザが直接導入すべきではありません。逆にユーザは Table
クラス自体(参照) 統一ファイル読み書きインタフェース )である。ユーザーが直接使用するためのルーチンが表示されています。 astropy.io.misc
一節です。
Asterpy.io.miscバッグ¶
このパッケージは、Asterpyを用いてデータ入出力を行うための様々な実用関数を含む。
機能¶
|
オブジェクトを指定されたファイルにピックアップする. |
|
指定されたファイルから塩漬けされたオブジェクトの選択をキャンセルし、コンテンツを返します。 |
Asterpy.io.misc.hdf 5モジュール¶
このソフトウェアパッケージは、HDF 5テーブルを読み出して書き込むための関数を含み、これらのテーブルは、直接使用すべきではなく、中のリーダ/ライタとして使用することができる。 astropy.table
それがそうです。見 統一ファイル読み書きインタフェース もっと細かいことを知っています。
機能¶
|
HDF 5ファイルから表オブジェクトを読み取る |
|
HDF 5ファイルへの表オブジェクトの書き込み |
Asterpy.io.misc.yamlモジュール¶
このモジュールは,YAMLプロトコルによりカーネルAsterpyオブジェクトを直列化する関数を含む.次のような機能を提供しています dump
, load
, and load_all
which call the corresponding functions in PyYaml でも使うのは AstropyDumper
そして AstropyLoader
クラスは,以下のAsterpyクラスのカスタムYAMLタグを定義する:- astropy.units.Unit
- astropy.units.Quantity
- astropy.time.Time
- astropy.time.TimeDelta
- astropy.coordinates.SkyCoord
- astropy.coordinates.Angle
- astropy.coordinates.Latitude
- astropy.coordinates.Longitude
- astropy.coordinates.EarthLocation
- astropy.table.SerializedColumn
注釈
このモジュールは、PyYamlバージョン3.13以上を必要とする。
例を引く¶
- **
>>> from astropy.io.misc import yaml >>> import astropy.units as u >>> from astropy.time import Time >>> from astropy.coordinates import EarthLocation >>> t = Time(2457389.0, format='mjd', ... location=EarthLocation(1000, 2000, 3000, unit=u.km)) >>> td = yaml.dump(t) >>> print(td) !astropy.time.Time format: mjd in_subfmt: '*' jd1: 4857390.0 jd2: -0.5 location: !astropy.coordinates.earth.EarthLocation ellipsoid: WGS84 x: !astropy.units.Quantity unit: &id001 !astropy.units.Unit {unit: km} value: 1000.0 y: !astropy.units.Quantity unit: *id001 value: 2000.0 z: !astropy.units.Quantity unit: *id001 value: 3000.0 out_subfmt: '*' precision: 3 scale: utc >>> ty = yaml.load(td) >>> ty <Time object: scale='utc' format='mjd' value=2457389.0> >>> ty.location <EarthLocation (1000., 2000., 3000.) km>
機能¶
|
AstropyLoaderを使用して、ストリーム中の最初のYAMLドキュメントを解析し、対応するPythonオブジェクトを生成します。 |
|
AstropyLoaderクラスを用いてストリーム中のすべてのYAML文書を解析し、対応するPythonオブジェクトを生成します。 |
|
AstropyDumperクラスを用いてPythonオブジェクトをYAMLストリームにシーケンス化する. |
クラス¶
|
AsterpyコアオブジェクトおよびPythonタプルおよびUnicodeオブジェクトを構築するためのSafeLoaderをカスタマイズします。 |
|
Safe Dumperをカスタマイズし、AsteryコアオブジェクトおよびPythonタプルおよびUnicodeオブジェクトを表します。 |
クラス継承関係図¶
Asterpy.io.misc.asdfバッグ¶
♪the asdf サブパケットは直列化のためのコードを含む astropy
タイプは、高度な科学データフォーマット(ASDF)を使用してそれらを表現および記憶することができるようにする。
もし両者がそれを兼ねていれば asdf そして 天体.天体 さらに構成することなく、以下を含むASDFファイルを処理することができる 天体.天体 タイプです。♪the asdf パッケージは定義されたラベルの存在を自動的に検出するように設計されている. 天体.天体 それがそうです。
便宜上,ユーザは作成することができる Table
オブジェクトはasdfファイルに変換される. 統一ファイル読み書きインタフェース それがそうです。見 ASDFと表I/Oを組み合わせて使用する 下です。
ASDF標準に関する文書を見つけることができます here それがそうです。ASDF Pythonモジュールに関する文書を見つけることができます here それがそうです。Astropy開発者のその他の詳細については、ご参照ください 細かい点 それがそうです。
ASDFと表I/Oを組み合わせて使用する¶
ASDFは以下の項目にリーダとライタを提供する. Table
使用 統一ファイル読み書きインタフェース それがそうです。これにより、ASDFファイルの読み込みと書き込みが非常に便利になります Table
データです。
基本的用法¶
1つのテーブルが与えられた場合、ASDFファイルに書き込むことができる:
from astropy.table import Table
# Create a simple table
t = Table(dtype=[('a', 'f4'), ('b', 'i4'), ('c', 'S2')])
# Write the table to an ASDF file
t.write('table.asdf')
I/O登録テーブルは、使用する適切なライタ関数を自動的に選択する .asdf
ファイルの拡張子を出力します。
このように生成されたファイルは、以下のコマンドを用いて読み出してもよい read
**
t2 = Table.read('table.asdf')
I/Oレジストリは、入力ファイルの拡張子に応じて適切なリーダ機能を自動的に選択する。
読み出しおよび書き込みの場合、ファイル拡張子がそうでなければ .asdf
使用するリーダ/ライタ関数は、明示的に指定することができる:
t3 = Table.read('table.zxcv', format='asdf')
高度な使用¶
基本ASDFデータ構造は木であり,基本データ構造の入れ子の組合せである(参照 this より詳細な説明を得るために)。最上階では木は dict
それがそうです。
このようにした結果は Table
オブジェクト(または任意のオブジェクト、この場合)は、ASDFツリー内の任意の位置に格納されてもよい。上述した基本ライタ用例は、所与のものを格納する Table
ツリーの上部にデフォルト鍵が使用されます。基本的なカードリーダーの状況は Table
同じ場所に保管されています。
しかしながら、ユーザが記憶や検索のために異なるトップキーを指定する場合がある Table
ASDFファイルからです。したがって,ASDF I/Oインタフェースは data_key
書き込みおよび読み出し時のオプションキーワードとして:
from astropy.table import Table
t = Table(dtype=[('a', 'f4'), ('b', 'i4'), ('c', 'S2')])
# Write the table to an ASDF file using a non-default key
t.write('foo.asdf', data_key='foo')
A Table
カスタムデータキーを用いて格納されたデータは、同じパラメータを渡すことで read
**
foo = Table.read('foo.asdf', data_key='foo')
♪the data_key
オプションは適用されます Table
ASDFツリーの上部に格納されているオブジェクトです。完全な汎用性を実現するために、ユーザは、ASDFファイルを書き込みまたは読み出したときにコールバックを伝達して、正確に定義することができる Table
オブジェクトは木の中に置くべきである.大文字を書き込むオプションは make_tree
それがそうです。関数コールは1つのパラメータのみを受け取るべきである,すなわち Table
オブジェクトは1つに戻るべきです dict
格納する木を表す:
def make_custom_tree(table):
# Return a nested tree where the table is stored at the second level
return dict(foo=dict(bar=table))
t = Table(dtype=[('a', 'f4'), ('b', 'i4'), ('c', 'S2')])
# Write the table to an ASDF file using a non-default key
t.write('foobar.asdf', make_tree=make_custom_tree)
同様に、ASDFファイルを読み込む際に、ユーザは、ASDFツリー内のテーブルの位置を特定するためにカスタムコールを渡すことができる。この場合選択肢は find_table
それがそうです。コールバックは1つのパラメータを受け取るべきです dict
ASDF木を表しています Table
対象::
def find_table(tree):
# This returns the Table that was stored by the example above
return tree['foo']['bar']
foo = Table.read('foobar.asdf', find_table=find_table)
細かい点¶
♪the asdf サブパッケージ定義クラスと呼ばれています tags 直列化と逆直列化の論理です astropy
タイプです。ユーザは直接参照タグ実装を必要としない.ASDFファイルを処理する際には,それらの存在は完全に透明であるはずである.
ASDFは抽象データタイプ定義を用いて パターン それがそうです。ここで提供するタグクラスは,特定のパターンの特定の実現である.いくつかのマークは astropy
(例えば、変換に関連するもの)ASDF規格によって定義されるモードを実装する。他の場合にはマークもパターンも astropy
(例えば、多くの座標フレームに関連するもの)。定義された各アーキテクチャの文書 astropy
下にいることができます パターン 一節です。
全部ではない astropy
タイプは現在ASDFによって直列化されることができる。サポートされていないタイプのASDFファイルへの書き込みを試みると RepresenterError
それがそうです。新しいタイプをサポートするためには、新しいタグとアーキテクチャを作成しなければならない。参照してください Writing ASDF Extensions より詳細な情報、および以下の例を取得する。
例:Astropy ASDF拡張への新しいオブジェクトの追加¶
この例では新しいものを実現する方法をお見せします Model
対象であるが,基本原則は他の対象の直列化に適用される astropy
物体です。先に述べたように,新しいオブジェクトを追加する astropy
ASDF拡張にはタグとアーキテクチャが同時に必要である.
すべての変換パターンは現在ASDF規格で定義されている.任意の新しい直列化可能な変換はここで対応する新しいアーキテクチャを持っていなければならない。1つの名前を考えてみましょう MyModel
これは新しい機種です astropy.modeling.functional_models
2つのパラメータがあります amplitude
そして x_0
それがそうです。私たちはこの二つのパラメータの設定を厳格に要求したい。これらのパラメータは数値タイプであってもよいし,可能であることも指定したい. astropy.units.quantity
キーを入れる。このモデルを記述するアーキテクチャは以下のようになる:
%YAML 1.1
---
$schema: "http://stsci.edu/schemas/yaml-schema/draft-01"
id: "http://stsci.edu/schemas/asdf/transform/mymodel-1.0.0"
tag: "tag:stsci.edu:asdf/transform/mymodel-1.0.0"
title: >
Example new model.
description: >
Example new model, which describes the distribution of ABC.
allOf:
- $ref: "transform-1.2.0"
- type: object
properties:
amplitude:
anyOf:
- $ref: "../unit/quantity-1.1.0"
- type: number
description: Amplitude of distribution.
x_0:
anyOf:
- $ref: "../unit/quantity-1.1.0"
- type: number
description: X center position.
required: ['amplitude', 'x_0]
...
すべての新しい変換アーキテクチャは、最新タイプの基本変換アーキテクチャを参照します。このパターンは,すべてまたは多くのモデルが共有する他のモデル属性を記述するため,各パターンはそのモデルに固有のパラメータのみを扱う.さらにこのアーキテクチャは最新のバージョンを引用しています quantity
モデルは、モデルが単位および数に関する情報を保持することができるようにする。参照は,新たなカスタムタイプ内で以前に定義されたオブジェクトを使用することを許す.
The next component is the tag class. This class must have a to_tree
method
in which the required attributes of the object in question are obtained, and a
from_tree
method which reconstructs the object based on the parameters
written to the ASDF file. astropy
Models inherit from the
TransformType
base class tag, which takes care of attributes (e.g name
,
bounding_box
, n_inputs
) that are common to all or many Model classes to
limit redundancy in individual tags. Each individual model tag then only has
to obtain and set model-specific parameters:
from .basic import TransformType
from . import _parameter_to_value
class MyModelType(TransformType):
name = 'transform/mymodel'
version = '1.0.0'
types = ['astropy.modeling.functional_models.MyModel']
@classmethod
def from_tree_transform(cls, node, ctx):
return functional_models.MyModel(amplitude=node['amplitude'],
x_0=node['x_0'])
@classmethod
def to_tree_transform(cls, model, ctx):
node = {'amplitude': _parameter_to_value(amplitude),
'x_0': _parameter_to_value(x_0)}
return node
このタグクラスは,オブジェクトをASDFファイルに構造化する機構と,ASDFファイルからそれらを再構築するすべての機構を含む.タグクラス(約束どおり‘Type’が追加されたオブジェクト名から命名された)参照アーキテクチャとバージョン,および astropy.modeling.functional_models
それがそうです。基本モデルパラメータは to_tree_transform
そして from_tree_transform
基地の一部です TransformType
クラスはモデルに特定されたパラメータは MyModelType
それがそうです。このモデルは,入力パラメータを持つ単位と数を用いることができるため,導入したΣ‘_PARAMETER_TO_VALUE``は,基本数値と数を活用することができる.
パターン¶
定義された個々のASDFアーキテクチャごとの文書 astropy
下で見つけることができます。