alterlab-astropy について
alterlab-astropy は、Astropy で天文データを解析する研究者向けのスキルです。座標、単位、FITS、宇宙論、時刻、テーブル、画像の WCS 操作を扱います。
主な機能
- 01天球座標系の変換
- 02物理単位の計算と変換
- 03FITS ファイルの読み書き
- 04宇宙論的距離と時刻の計算
- 05精密な時刻系と形式の処理
- 06ピクセル座標と世界座標の変換
活用シーン
- 01カタログ位置の座標系変換
- 02FITS 観測データの確認や編集
- 03指定赤方偏移での距離計算
- 04天文カタログのクロスマッチ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-astropyインストール後、Claude Code で/alterlab-astropyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/coordinates.mdcosmology.mdfits.mdtables.mdtime.mdunits.mdwcs_and_other_modules.md詳細
Astropy
概要
Astropy は、天文学研究やデータ解析に不可欠な機能を提供する、天文学向けの中核的な Python パッケージです。座標変換、単位と物理量の計算、FITS ファイル操作、宇宙論計算、高精度な時刻処理、表形式データの操作、天体画像処理には astropy を使用します。
このスキルを使用する場面
次のようなタスクには astropy を使用します。
- 天球座標系(ICRS、Galactic、FK5、AltAz など)間の変換
- 物理単位と物理量の処理(Jy から mJy、パーセクから km への変換など)
- FITS ファイル(画像またはテーブル)の読み込み、書き込み、操作
- 宇宙論計算(光度距離、ルックバック時間、ハッブルパラメーター)
- 異なる時刻系(UTC、TAI、TT、TDB)と形式(JD、MJD、ISO)による高精度な時刻処理
- テーブル操作(カタログの読み込み、クロスマッチング、フィルタリング、結合)
- ピクセル座標と天球座標間の WCS 変換
- 天文学定数と計算
該当しないケース
| ケース | 代わりに使用 |
|---|---|
| 地上 GIS — シェープファイル、地図投影(EPSG)、バッファー、空間結合 | alterlab-geopandas |
| 衛星/地球観測のラスターデータ、DEM、スペクトル指数 | alterlab-geomaster |
| 物理公式の記号的な導出(データや単位を扱わない場合) | alterlab-sympy |
| 光度曲線を単純な配列として扱う汎用的な時系列 ML(分類、予測) | alterlab-aeon |
クイックスタート
import astropy.units as u
from astropy.coordinates import SkyCoord
from astropy.time import Time
from astropy.io import fits
from astropy.table import Table
from astropy.cosmology import Planck18
# Units and quantities
distance = 100 * u.pc
distance_km = distance.to(u.km)
# Coordinates
coord = SkyCoord(ra=10.5*u.degree, dec=41.2*u.degree, frame='icrs')
coord_galactic = coord.galactic
# Time
t = Time('2023-01-15 12:30:00')
jd = t.jd # Julian Date
# FITS files
data = fits.getdata('image.fits')
header = fits.getheader('image.fits')
# Tables
table = Table.read('catalog.fits')
# Cosmology
d_L = Planck18.luminosity_distance(z=1.0)
主な機能
1. 単位と物理量(astropy.units)
物理量を単位付きで扱い、単位変換を行い、計算で次元の整合性を保ちます。
主な操作:
- 値に単位を乗算して物理量を作成
.to()メソッドを使用して単位を変換- 自動的な単位処理を用いた算術演算
- 分野固有の変換(スペクトル、ドップラー、視差)に等価関係を使用
- 対数単位(等級、デシベル)を処理
参照: 単位系、等価関係、パフォーマンス最適化、単位演算に関する詳しいドキュメントは references/units.md を参照してください。
2. 座標系(astropy.coordinates)
天球上の位置を表現し、異なる座標フレーム間で変換します。
主な操作:
- 任意のフレーム(ICRS、Galactic、FK5、AltAz など)で
SkyCoordを使用して座標を作成 - 座標系間で変換
- 角距離と位置角を計算
- カタログと座標を照合
- 3D 座標操作に距離を含める
- 固有運動と視線速度を処理
- オンラインデータベースから天体名を指定して検索
参照: 座標フレームの詳しい説明、変換、観測者依存フレーム(AltAz)、カタログ照合、パフォーマンスに関するヒントは references/coordinates.md を参照してください。
3. 宇宙論計算(astropy.cosmology)
標準的な宇宙論モデルを使用して宇宙論計算を行います。
主な操作:
- 組み込みの宇宙論モデル(Planck18、WMAP9 など)を使用
- カスタム宇宙論モデルを作成
- 距離(光度距離、共動距離、角径距離)を計算
- 宇宙年齢とルックバック時間を計算
- 任意の赤方偏移におけるハッブルパラメーターを求める
- 密度パラメーターと体積を計算
- 逆計算(指定した距離に対応する z を求める)を実行
参照: 利用可能なモデル、距離計算、時間計算、密度パラメーター、ニュートリノの影響については references/cosmology.md を参照してください。
4. FITS ファイルの処理(astropy.io.fits)
FITS(Flexible Image Transport System)ファイルの読み取り、書き込み、操作を行います。
主な操作:
- コンテキストマネージャーを使用して FITS ファイルを開く
- インデックスまたは名前で HDU(Header Data Unit)にアクセスする
- ヘッダー(キーワード、コメント、履歴)を読み取り、変更する
- 画像データ(NumPy 配列)を扱う
- テーブルデータ(バイナリテーブルおよび ASCII テーブル)を扱う
- 新しい FITS ファイルを作成する(単一または複数の拡張)
- 大きなファイルにメモリマッピングを使用する
- リモート FITS ファイルにアクセスする(S3、HTTP)
参照: ファイル操作、ヘッダー操作、画像とテーブルの処理、複数拡張ファイル、パフォーマンスに関する考慮事項の詳細は、references/fits.md をご覧ください。
5. テーブル操作(astropy.table)
単位、メタデータ、さまざまなファイル形式に対応した表形式データを扱います。
主な操作:
- 配列、リスト、辞書からテーブルを作成する
- 複数の形式(FITS、CSV、HDF5、VOTable)でテーブルを読み書きする
- 列と行にアクセスして変更する
- テーブルを並べ替え、フィルタリングし、インデックスを作成する
- データベース形式の操作(結合、グループ化、集計)を実行する
- テーブルを積み重ねて連結する
- 単位に対応した列(QTable)を扱う
- マスキングを使用して欠損データを処理する
参照: テーブルの作成、I/O 操作、データ操作、並べ替え、フィルタリング、結合、グループ化、パフォーマンスのヒントについては、references/tables.md をご覧ください。
6. 時刻の処理(astropy.time)
時刻を高精度で表現し、時刻系と形式の間で変換します。
主な操作:
- さまざまな形式(ISO、JD、MJD、Unix など)で Time オブジェクトを作成する
- 時刻系(UTC、TAI、TT、TDB など)の間で変換する
- TimeDelta を使用して時刻の算術演算を行う
- 観測者の恒星時を計算する
- 光の伝播時間の補正(太陽系重心、太陽中心)を計算する
- 時刻配列を効率的に扱う
- マスクされた(欠損)時刻を処理する
参照: 時刻形式、時刻系、変換、算術演算、観測機能、精度の処理については、references/time.md をご覧ください。
7. 世界座標系(astropy.wcs)
画像のピクセル座標と世界座標の間で変換します。
主な操作:
- FITS ヘッダーから WCS を読み取る
- ピクセル座標を世界座標に変換する(およびその逆)
- 画像のフットプリントを計算する
- WCS パラメーター(基準ピクセル、投影法、スケール)にアクセスする
- カスタム WCS オブジェクトを作成する
参照: WCS の操作と変換については、references/wcs_and_other_modules.md をご覧ください。
その他の機能
references/wcs_and_other_modules.md ファイルでは、以下についても説明しています。
NDData と CCDData
メタデータ、不確実性、マスキング、WCS 情報を含む、多次元データセット用のコンテナーです。
モデリング
天文学データの数学的モデルを作成し、フィッティングするためのフレームワークです。
可視化
適切なストレッチとスケーリングを用いて天体画像を表示するツールです。
定数
適切な単位を持つ物理定数および天文学定数です(光速、太陽質量、プランク定数など)。
畳み込み
平滑化とフィルタリングに使用する画像処理カーネルです。
統計
シグマクリッピングや外れ値の除外など、ロバストな統計関数です。
インストール
# Install astropy (8.x requires Python >= 3.11 and NumPy >= 2.0; current 8.0.x as of 2026-09)
uv pip install astropy
# Common optional dependencies (scipy, matplotlib, ...) or everything
uv pip install "astropy[recommended]"
uv pip install "astropy[all]"
Astropy 8.0 に関する注意:宇宙論クラスは astropy.cosmology から直接インポートしてください(astropy.cosmology.flrw / .core / .funcs の shim モジュールは削除されました)。astropy.samp は pyvo.samp に移動しました。デフォルトの CODATA 定数は 2022 年版になりました。また、FITS 文字列列では末尾のスペースがデフォルトで削除されます(従来の動作に戻すには strip_spaces=False を指定してください)。NumPy 1.x を使い続ける必要がある場合は、astropy<8(7.2.x 系列)に固定してください。
一般的なワークフロー
座標系間の変換
from astropy.coordinates import SkyCoord
import astropy.units as u
# Create coordinate
c = SkyCoord(ra='05h23m34.5s', dec='-69d45m22s', frame='icrs')
# Transform to galactic
c_gal = c.galactic
print(f"l={c_gal.l.deg}, b={c_gal.b.deg}")
# Transform to alt-az (requires time and location)
from astropy.time import Time
from astropy.coordinates import EarthLocation, AltAz
observing_time = Time('2023-06-15 23:00:00')
observing_location = EarthLocation(lat=40*u.deg, lon=-120*u.deg)
aa_frame = AltAz(obstime=observing_time, location=observing_location)
c_altaz = c.transform_to(aa_frame)
print(f"Alt={c_altaz.alt.deg}, Az={c_altaz.az.deg}")
FITS ファイルの読み取りと解析
from astropy.io import fits
import numpy as np
# Open FITS file
with fits.open('observation.fits') as hdul:
# Display structure
hdul.info()
# Get image data and header
data = hdul[1].data
header = hdul[1].header
# Access header values
exptime = header['EXPTIME']
filter_name = header['FILTER']
# Analyze data
mean = np.mean(data)
median = np.median(data)
print(f"Mean: {mean}, Median: {median}")
宇宙論的距離の計算
from astropy.cosmology import Planck18
import astropy.units as u
import numpy as np
# Calculate distances at z=1.5
z = 1.5
d_L = Planck18.luminosity_distance(z)
d_A = Planck18.angular_diameter_distance(z)
print(f"Luminosity distance: {d_L}")
print(f"Angular diameter distance: {d_A}")
# Age of universe at that redshift
age = Planck18.age(z)
print(f"Age at z={z}: {age.to(u.Gyr)}")
# Lookback time
t_lookback = Planck18.lookback_time(z)
print(f"Lookback time: {t_lookback.to(u.Gyr)}")
カタログのクロスマッチング
from astropy.table import Table
from astropy.coordinates import SkyCoord, match_coordinates_sky
import astropy.units as u
# Read catalogs
cat1 = Table.read('catalog1.fits')
cat2 = Table.read('catalog2.fits')
# Create coordinate objects
coords1 = SkyCoord(ra=cat1['RA']*u.degree, dec=cat1['DEC']*u.degree)
coords2 = SkyCoord(ra=cat2['RA']*u.degree, dec=cat2['DEC']*u.degree)
# Find matches
idx, sep, _ = coords1.match_to_catalog_sky(coords2)
# Filter by separation threshold
max_sep = 1 * u.arcsec
matches = sep < max_sep
# Create matched catalogs
cat1_matched = cat1[matches]
cat2_matched = cat2[idx[matches]]
print(f"Found {len(cat1_matched)} matches")
ベストプラクティス
- 常に単位を使用する:エラーを防ぎ、次元の整合性を確保するため、数量には単位を付けます
- FITS ファイルにはコンテキストマネージャーを使用する:ファイルが適切に閉じられるようにします
- ループより配列を優先する:パフォーマンスを向上させるため、複数の座標や時刻を配列として処理します
- 座標系を確認する:変換の前に座標系を確認します
- 適切な宇宙論を使用する:解析に適した宇宙論モデルを選択します
- 欠損データを処理する:欠損値を含むテーブルにはマスク付き列を使用します
- 時間尺度を指定する:正確な時刻計測のため、時間尺度(UTC、TT、TDB)を明示します
- 単位を扱うテーブルには QTable を使用する:テーブルの列に単位がある場合に使用します
- WCS の有効性を確認する:変換を使用する前に WCS を確認します
- 頻繁に使用する値をキャッシュする:宇宙論的距離などのコストの高い計算はキャッシュできます
ドキュメントとリソース
- Astropy 公式ドキュメント:https://docs.astropy.org/en/stable/
- チュートリアル:https://learn.astropy.org/
- GitHub:https://github.com/astropy/astropy
- 8.0 の新機能:https://docs.astropy.org/en/stable/whatsnew/8.0.html
参照ファイル
各モジュールの詳細については、以下を参照してください。
references/units.md- 単位、数量、換算、等価関係references/coordinates.md- 座標系、変換、カタログの照合references/cosmology.md- 宇宙論モデルと計算references/fits.md- FITS ファイルの操作と加工references/tables.md- テーブルの作成、入出力、操作references/time.md- 時刻形式、時間尺度、計算references/wcs_and_other_modules.md- WCS、NDData、モデリング、可視化、定数、ユーティリティ
AlterLab Academic Skills スイートの一部です。